ArchLinuxでBlender 2.45をビルド

私が愛用しているArchLinux、まだBlender 2.45はリポジトリに登録されていません。
2.45は新機能の追加はないものの、2.44でのバグが結構修正されているようなので、ArchLinuxに登録される前に自分でビルドすることにしました。

以前にもBlenderをビルドする方法を書いたことがあるんですが

・ソースファイルのtarballを持ってきてビルド。
・ArchLinuxではなくZenwalk Linuxの環境だった。

ということで、今回はsubversionから取得したソースを使ったArchLinux環境でのビルドということで書こうと思います。

さて、それでは早速。


●ソースを取得
参考:http://www.blender.org/development/coding-guides/svn-checkout-and-usage/

上記のblender.orgに書かれている内容を参考にして、SVNからソースを取得します。

まずは、ソースの置き場所を作ります。ソースの置き場はどこでもかまわないので、自分のホームディレクトリに作ればよいと思います。ディレクトリの作成が終わったら、そのディレクトリに移動しておきます。

$ mkdir ~/dev/blender_svn
$ cd ~/dev/blender_svn

次にソースをダウンロードします。
ソースに修正を加えてコミットするわけではないので、annonimousユーザでいいと思います。

$ svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/blender

ターミナルにダウンロード状況が表示されるので、しばらく待ちます。
しばらくすると

$ A    blender/po/fi.po
$ A    blender/po/Makefile
$ A    blender/po/zh_CN.po
$ リビジョン 12103 をチェックアウトしました。
$

といった感じでダウンロードが完了します。


●ビルドに必要なライブラリを準備
参考:
http://www.blender.org/development/building-blender/getting-dependencies/
http://wiki.blender.org/index.php/Manual/PartI/Compiling_the_sources

Blenderをビルドするには、いろいろなライブラリが必要です。
それらのライブラリのうち、ほとんどは既になんらかのタイミングでインストールされていると思いますので、基本的には以下がインストールされているかをチェックするとよいと思います。

・libjpg
・libpng
OpenAL
・ALUT(OpenAL ユーティリティ)
・OpenEXR

チェックする方法としては、

$ sudo pacman -S libjpeg
$ sudo pacman -S libpng
$ sudo pacman -S openal
$ sudo pacman -S freealut
$ sudo pacman -S openexr

と入力し、"インストールされてるけど、アップデートする?"といったメッセージが表示されれば、既にインストールされています。
インストールされていない場合には"インストールする?"と聞いてくるので、そのままインストールしてください。


●Sconsでビルドする。
参考:http://wiki.blender.org/index.php/Manual/PartI/Compiling_the_sources
    ↑Wikiの最後の部分にビルドの説明があります。

いよいよビルドを行います。これまでの手順で必要なライブラリは準備できていると思いますので、次の手順でビルドします。


(1) ダウンロードしたソースディレクトリへ移動します。
ここではsvnから取得したソースが~/dev/blender_svnにあるとして書きます。

$ cd ~/dev/blender_svn/blender


(2) ビルドを実行
Sconsでのビルドは簡単です。
一般的には、次のような形式です。

$ sudo scons BF_INSTALLDIR=[出力ディレクトリパス]

今回、私がビルドした際には、次のようにしまいした。

$ sudo scons -j 3 BF_INSTALLDIR=/usr/local/bin/blender-2.45-py25 BF_OPENAL_LIB='openal alut'

追記
上記のコマンドで指定してあるオプションだけでは、GameEngineがビルドされません。
GameEngineもビルドするためには以下のオプションを追加する必要がありました。

(追加すべきオプション) WITH_BF_GAMEENGINE='yes' WITH_BF_ODE='yes'

BF_OPENAL_LIB=の部分は使用するOpenALのライブラリを指定します。私がビルドした時、このオプションがないとリンクエラーが発生していたので追加しました。

'-j 3' はコンパイル時のプロセッサ数を指定しています。私のマシンはCoreDuoなのでプロセッサ数は2です。-jオプションは「プロセッサ数+1」を指定します。-jと3の間にはスペースが必要です。

これでビルドが完了します。。(するはずです。)
もし、途中でビルドが失敗するようであれば、なんらかのライブラリが不足していると思いますので、エラーメッセージを見てライブラリをインストールした後で、上記のビルドをやりなおしてください。

ちなみに、いったん前回のビルドをクリアしたい場合には

$ scons clean

でOKです。


●最後のひと手間
さて、インストールが完了し、BF_INSTALLDIRで指定した場所にBlenderができあがりました。
ここ以降に書く内容は、不要であれば行う必要はないと思います。


(1)シンボリックリンク
私は、自分でビルドしたものは /usr/local/bin/ 以下に置くようにしています。
今回のインストールでもblenderの本体は

/usr/local/bin/blender-2.45-py25/blender

にあります。このままでもいいのですが、以下のようにしてシンボリックリンクを張っておきます。

$ cd /usr/local/bin
$ sudo ln -s /usr/local/bin/blender-2.45-py25/blender blender


(2)環境変数PATHの実行順序を調整。
ArchLinuxも含め、パッケージリポジトリからパッケージをインストールするようなディストリビューションの場合、

ゆくゆくは、パッケージに追加されると思うんだけど、とりあえず、自分でコンパイルして使ってみたいな。。。

ということがよくあります。

そこで、

自分がビルドした実行ファイルは/usr/local/binに置く。

というルールを決めておきます。
そして、環境変数PATHの/usr/local/binを/binや/usr/binなどよりも先に記述するようにします。
そうすれば、将来的にディストリビューションリポジトリにパッケージが追加された時に/usr/local/bin/以下実行ファイルを削除またはリネームするだけですむのでお手軽です。

blenderシンボリックリンクを張ったのも、将来的にBlenderがArchLinuxのパッケージに追加されたらシンボリックリンクを削除するだけで済むからです。

と、かなり長くなってしまいました。。。が以上です。