2011-03-18

murmurをMac OS X 10.4 PowerPCでコンパイルする

Mumbleというオープンソースのボイスチャットのソフトを見つけた。サーバの実装はMurmurというらしい。自宅で動かしているサーバはPowerPCのOS X Tigerという古いもので、murmurの最新版ではサポートされていない。でもいじりまわした結果なんとか動いたのでメモする。

うまくいくまでの経緯

まず、DarwinPortsにmurmurがあったのでそれを単純に入れてみようとした(sudo port install murmur)。依存関係のビルドは、qt4-macというportの作業領域に6GBほどHDDを食われたものの、特に問題なくすんだ。しかし、murmur自体のビルドでエラーになった。ログを見るとコンパイラの引数に-arch i386という文字があったので最新版はとりあえず諦めた。

DarwinPortsを諦めてtarballを野良ビルドすることも考えたが、サーバとして動かすなら、ビルドするだけではすまない。LaunchDaemonsなどに登録する必要がある。plistなどを用意する作業と天秤にかけて、Portfile(DarwinPortsのビルド手順を記述したスクリプト)をいじってみることにした。

検索してみると、昔のバージョンではppcでも動いていたような報告がある。Portfile歴史をさかのぼってみると、1.2.2(この記事時点での最新 r75458)になる前のバージョンは1.1.8だった。とりあえずr69125のPortfileを落として野良ビルドしたところ、qmakeが見つからないというエラーが出た。

最新版のPortfileではqt関係の記述が変わっていたので、それを見ながら適当にPortfileをいじった。ビルドしなおすとエラーが変化して、リンク時にエラーが出た。/usr/bin/ld: Undefined symbols: _Gestaltという見覚えのあるエラーが出ていたので、リンカのオプションに-framework CoreServicesをつけるようなMakefileを生成するようにqmakeに引数を与えるようPortfileを修正した(こういうとき自動化は怖い)。

いじったPortfile

できあがったPortfileは以下。そのうちフィードバックしたい。

使い方としては、このPortfileを空のフォルダに置き、そこにcdしてsudo port installとすればよい。

追記

umurmurというQtに依存しないクローンがあった。ビルドがmake一発と簡単な上1.2のプロトコルにも対応しているので、こっちを入れるほうがよさそう。

野良ビルドのメモ:

  • libconfigというライブラリはDarwinPortsにあるものとは別物らしい
  • 定数_POSIX_PRIORITY_SCHEDULINGを#undefする必要がある

0 件のコメント:

コメントを投稿