mfiler3(0.2.1)のビルドメモとebuild
www.geocities.jp/daisuke530221jp/index3.html
で新しいmfiler3の開発版が配布されている。完成度はまだ低いようだが、ebuildの作成のためにビルド・実行のテストを行った。
ビルドメモとはいっても、ebuildの作成に関する内容が主になる。
依存パッケージ
に加え、今回も鬼車ライブラリを内蔵している。ただし、システムにインストールされている鬼車があると、そちらを使用するようだ。バージョン3では今のところRubyのライブラリ*1にはリンクしていないため、外部の鬼車(dev-libs/oniguruma)を必須として要求するようにebuildを書くことにする。
コンパイラの最適化オプション
このアプリケーションのビルドシステムでは、バージョン2と同様、コンパイラの最適化オプションを指定する環境変数CFLAGS/CXXFLAGSは無視されてしまう。しかし、コンパイラ名の環境変数CC/CXXにCFLAGS/CXXFLAGSを含める形での指定はできるため、ebuildではこのようにしている(toolchain-funcsのtc-getCC()とtc-getCXX())。export CC="$(tc-getCC) ${CFLAGS}" CXX="$(tc-getCXX) ${CXXFLAGS}"
ところが、ビルドしたものを実行すると、いきなり落ちてしまった。試しに/usr/local/以下に普通にインストールしたものを実行したところ、落ちることはなかったので、色々試したところ、GCCの最適化オプション-O[数字]を付けたときに限り落ちることが分かった。
Gentoo LinuxのPortageには、先述のCFLAGS/CXXFLAGSの値によってパッケージの動作がおかしくなる場合のために、自動でフィルタ(消す・もしくは置き換える)する機能がある。flag-o-maticのfilter-flags()やreplace-flags()といった関数を使用する。
今回は、-Oのレベルでもダメだったため
filter-flags -O?
とした。-march指定では大丈夫だったため、フィルタはしていない。
(2008/6/22)上記不具合はバージョン1.0.1で修正された(-O3でも落ちないことを確認)。バージョン1.0.1のebuildをアップロードしたが、最適化オプションのフィルタに関する処理は取り除いた。
バージョン2との共存について
共存できなくはないような気もしたのだが、mattrだけは実行ファイル名がかぶってしまうので、バージョン2がある場合はインストールできないようにした。作成したebuildファイル
cid-3f9be5b1cd4a806c.skydrive.live.com/browse.aspx/%E5%85%AC%E9%96%8B/Gentoo%20Linux%20ebuild/app-misc/mfiler3にアップロードした。
(2008/6/20)完成版のバージョン1.0.0(関連記事)が出たため、0.2.1は削除した。
なお、バージョン2の最新(4.0.9b)も
cid-3f9be5b1cd4a806c.skydrive.live.com/browse.aspx/%E5%85%AC%E9%96%8B/Gentoo%20Linux%20ebuild/app-misc/mfiler2
にアップロードした。
起動時に落ちる別の原因について
(2008/6/18)バージョン0.2.1での仕様なのか、起動したときの作業ディレクトリにexe.logというファイルを書き出すため、書き込み権限がない場合、そのまま落ちてしまうようだ。(2008/6/22)この現象はその後のバージョンではなくなっている。
使用したバージョン: