オープンソース

Building Blender-2.34.

3DCG 向けの統合環境 Blender v2.34 のビルド・システムが、また変更されているな。それも退化している。v2.32 の頃は ./configure && make && make install 一発でインストールできたのに、オープンソース化される前の使えないビルド・システムに。ふm、全く素直にビルドできない。こういう複雑怪奇なビルド環境を平気でユーザに提供するとは…恐ろしい。というか、普通のユーザ、3D クリエイタとかは executable を素直にインストールするか。
まぁ、v2.33 の SCON だか、なんだかのビルド・システムよりは、ましなので、いろいろパッチしながら、ビルド・インストールしてみる:
Blender のソースを展開する
FTGL とか ODE とかのライブラリと一緒にビルドするので、先に展開しておく:

% tar xvfa blender-2.34.tar.bz2 -C /opt

FTGL (OpenGL アプリで任意のフォントを利用するためのライブラリ):
ftgl からソースをダウンロードして blender ソースの topdir に展開しておく。そして、いくつかパッチも:

% tar xvfz ftgl-2.0.9.tar.gz -C /opt/blender-2.34/
% cp FTGL-2.0.9-GetFloatv.patch /opt/blender-2.34/FTGL/
% cp FTGL-2.0.9-fixed_Makefile.patch /opt/blender-2.34/FTGL/
% cd /opt/blender-2.34/FTGL/
% patch -p1 < ./FTGL-2.0.9-GetFloatv.patch
% patch -p1 < ./FTGL-2.0.9-demo_font.patch
% patch -p1 < ./FTGL-2.0.9-fixed_Makefile.patch
% cd unix/
% ./configure --with-ft-prefix=/usr/local \
--with-gl-lib=/usr/X11R6/lib \
--with-glut-lib=/usr/X11R6/lib
% make
% mkdir ../lib && install -c -m644 ./src/.libs/libftgl.* ../lib/

ビルドした libfgl.a を blender にリンクするために、所定の場所に置いておく。./demo/FTGLDemo は結構、面白いデモ・プログラムなので、好みのフォントを FONT_FILE に指定してやる。
ODE (3D オブジェクトに硬質感を出してレンダリングするライブラリ)
ode からソースをダウンロードし、libode.a を同様にビルドする:

% tar xvfz ftgl-2.0.9.tar.gz -C /opt/blender-2.34/
% cd /opt/blender-2.34/ode-0.5/
% make
%  (cd ./drawstuff/dstest ; ./dstest.exe)

このデモは、良くある 3D オブジェクトを表示する簡単なプログラム。
Blender-2.34 本体のビルド・インストール
最後に、blender 本体にいくつかパッチを当てて、ビルドする:

make にたどり着くまで、いろいろ参照先をリンクしたり、プラグインの Makefile とか変更してやったりと、面倒くさい:

% cd /opt/blender-2.34/
% setenv PYTHON /usr/bin/python2.3
% mkdir -p obj/linux-glibc2.3.2-i386/extern/qhull/
% mkdir -p lib/linux-glibc2.3.2-i386/
% ln -sf /opt/blender-2.34/FTGL ./lib/linux-glibc2.3.2-i386/ftgl
% ln -sf /opt/blender-2.34/ode-0.5 ./lib/linux-glibc2.3.2-i386/ode
% patch -p1 < ./blender-2.34-without_OPENAL.patch
% patch -p1 < ./blender-2.34-definitions.patch
% patch -p1 < ./blender-2.34-ode_fixed.patch
% make -j4
% cd /opt/blender-2.34/release/plugins/
% chmod 755 ./bmake
% rm -rf ./include && ln -sf ../../source/blender/blenpluginapi include
% make CFLAGS+="-I/opt/blender-2.34/source/blender/blenpluginapi/"

インストールも手動で行う。インストールするものは ./obj/linux-glibc2.3.2-i386/bin 以下と ./release/plugins 以下、そして ./release/scripts の三つ。
使えないビルド・システムのおかげで、ホント、時間がもったいないし、面倒な作業が多すぎる face-undecided.png
せっかく日本語メッセージカタログも同梱されているので、メニューとかボタンとかを日本語にしてみる。先ほどインストールした先に、隠しディレクトリ .blender があるので、それ以下を一式 $HOME 配下にコピーし、ソースから国際化に必要なファイルを同様にコピーする:

% cd $HOME
% cp -a /opt/blender-2.34/obj/linux-glibc2.3.2-i386/bin/.blender .
% cp /opt/blender-2.34/bin/.blender/.Blanguages $HOME/.blender/
% cp /opt/blender-2.34/bin/.blender/.bfont.ttf $HOME/.blender/

そして blender を起動して、下部のウィンドウのメニューの左端にあるウィンドウ・セレクタから User Preferences を選択して、設定画面に変更する:
blender-20041030-01.png
設定画面の下に並んでいるボタン Language & Font を選択して表示される、ボタン International Fonts を選択する。使用する言語とフォントを設定する。フォントは日本語を含む TrueType フォントを選択する。
ついでに、Jimmac のブログにある Blender Theme も適用してみる:
blender-20041030-02.png
それほど日本語メッセージが翻訳されていないので、なんだけど、なかなか良い感じ。

Rebuild kernel with inotify.

RML が ubuntu 向けの inotify パッチをリリースしたということで、バージョンが同じだから試してみた。問題なく適用できたので、再構築して使ってみる:

% cd /usr/src/linux-2.6.8.1-ck#8/
% patch -p1 < ./inotify-0.13-rml-2.6.8.1-ubuntu-2.patch
% make V=1 clean bzImage

dmesg で有効になっているか確認して、デバイスファイルを作成する:

% dmesg | \grep inotify
inotify init: minor=63
% mknod /dev/inotify c 10 63

既にデーモン化の実装がすんだ beagled も起動できる;

% beagled
INFO: Beagle daemon started

linux-2.6.8.1 にする.

akpm パッチは沢山ありすぎてよく分からないので、めぼしいものを。ck パッチ#8 は全て当てておく。rml が作業している Linux ディレクトリ通知機能 (dnotify) に代わる新しい通知機能 inotify は見送る。2.6.9 がリリースしてからにしよう。
以前のバージョン同様、FD から起動しようと make V=1 clean bzdisk で作成した Kernel、いろいろ make xconfig で設定してみたが、納得できる設定で 1.4Mバイト以下にできない。あきらめて直接インストールする。

% ll arch/i386/boot/bzImage
Directory: /usr/src/linux-2.6.8.1/arch/i386/boot
-rw-r--r--  root     2004-09-30 15:21     1,510,643  bzImage

既製品の Kernel には無い、キビキビした応答性のおかげで、デスクトップ作業もはかどるな。

An Userspace Implementation of ‘devfs’.

GNOME-2.8 に入ると思い ja.po を更新しておいた GnomeMeeting の HEAD (当時はバージョン 1.1.1) だけども、今回のリリースは見送りになった。
このバージョン、k26 と iptables-1.2.5 の組み合わせで、NAT 経由のパケット送受信には問題ない。というか、単に FAQ の iptables のルールに従っただけだけども。ちゃんと Seconix ILS サーバに接続できる。
すばらしい。しかし、待機ステータスを多忙にしているにも関わらず、寝ている間に着信履歴がたくさん残っているのは、どうも…
で、ここで使っているウェブ・カメラ QCam Pro 4000 (QV-4000) を接続したまま Kernel 起動すると、紫 – Murasaki – がカメラ内蔵のマイクも認識して、ALSA のドライバが自動的にロードされてしまい、MB 内蔵の 82801EB AC’97 Audio Controller が利用できない上に、Esound 経由で音が鳴らない。だから、いつも起動時に USB プラグを外していた。
これを忘れると、再々起動になる。悲しい。
そこで Murasaki を捨てて、udev にしてみた。というか、単にビルド・インストールして:

% echo "/sbin/udev" > /proc/sys/kernel/hotplug

で切り替えているだけなので、駄目なら同様に:

% echo "/sbin/hotplug.murasaki" > /proc/sys/kernel/hotplug

で戻せばいい。
今、現在もサービス murasaki は OFF、udev を ON にして起動しているが、ちゃんとウェブ・カメラ (のマイク) を区別するので、カメラのマイクは使えるし、Esound 経由で音も鳴る。
もちろん、/udev に Hotplug 経由のデバイスファイルが作成されている。
同様に、バイオノートSR にもインストールしてみたが、udev は FireWire 1394 をサポートしていないのに気づく。CD-ROM/DVD をマウントできん…
バイオノートでは murasaki と udev とを併用することで回避できた。

こんなんで分かるのか.

GNOME デスクトップを彩るアイコンの作者で有名な Ximain チームの TigerT こと Tuomas Kuosmanen 氏が、最近ブログを再開したようだ。
最近は、Zenity の開発者の Glynn Foster 氏とのやりとりにある、開発版 2.9.x 系で取り込まれた新しいオプション –notification を使った話題で盛り上がっている:

% cat love.sh
#!/bin/sh
zenity --notification \
--window-icon=/home/aihana/love.png \
--text="Zenity を使ってパネル通知エリアに情報を表示する"

は、こんな感じ:
zenity_notify.png
で、
彼が作成した昔のアートなんかも残っているようで、いろいろ物色していると、見るからに面白いものがでてきた。その名も vpenis.c。とても日本語に翻訳できないが、仮想的な長さを計測?してご丁寧にも関数 gtk_message_dialog_new() で表示する小さなプログラムだ。ご自慢の長さを、UNIX の Legacy Commandline を組み合わせた PENIS_COMMAND を使ってはじき出すところが、とても面白い:

#define PENIS_COMMAND \
"echo `uptime | \
grep days | sed 's/.*up \\([0-9]*\\) day.*/\\1\\/10+/'; \
cat /proc/cpuinfo | grep '^cpu MHz' | awk '{print $4\"/30 +\";}'; \
free | grep '^Mem' | \
awk '{print $3\"/1024/3+\"}'; \
df -P -k -x nfs | grep -v 1k | \
awk '{if ($1 ~ \"/dev/(scsi|sd)\"){ s+= $2} s+= $2;} END {print s/1024/50\"/15+70\";}'` | \
bc|sed 's/\\(.$\\)/.\\1/'"

この内容を作業ファイルに書き込んで、関数 g_spawn_command_line_sync() で実行した結果をダイアログに表示する仕組み。
さて今日の俺の仮想的な長さは:
vpenis.png
ちゃんと単位はセンチメートルだな。
とりあえずソースコードをここにおいておく。
くれぐれも取り扱い注意のこと。