/Library/Frameworks -> /opt/local/Library/Frameworks

python24 のライブラリの場所が /Library/Frameworks から /opt/local/Library/Frameworks (${prefix}/Library/Frameworks) に変更された。で、とりあえず自分がメンテナになっているものでこの流れを受けそうなのが rubycocoa (ruby/rb-cocoa) だ。これも RubyCocoa.framework の場所が /Library/Frameworks になっている。

とりあえず ${prefix}/Library/Frameworks にライブラリをインストールするようにしてみたが、どうもエラーが出る。

irb(main):001:0> require 'osx/cocoa'
dyld: NSLinkModule() error
dyld: Library not loaded: @executable_path/../Frameworks/RubyCocoa.framework/Versions/A/RubyCocoa
  Referenced from: /opt/local/lib/ruby/vendor_ruby/1.8/powerpc-darwin8.2.0/rubycocoa.bundle
  Reason: image not found
Trace/BPT trap

rubycocoa.bundle が新しい場所の RubyCocoa.framework にリンクできないようだ。ちょっと調べてみたところ、install_name_tool を使えば修正できるようなので、

$ cd /opt/local/lib/ruby/vendor_ruby/1.8/powerpc-darwin8.2.0/
$ sudo install_name_tool -change @exerameworks/RubyCocoa.framework/Versions/A/RubyCocoa 
           /opt/local/Library/Frameworks/RubyCocoa.framework/Versions/A/RubyCocoa 
           rubycocoa.bundle

としてみたら直ったようだ。しかし、すでにコンパイルされたサンプルなどを実行しようとするとやはり同様のエラーが発生する。サンプル内のバイナリに対して同様の修正を行えばよいのだが、毎回毎回そんなことしていられないだろう。別の解として、素直に

$ sudo ln -s /opt/local/Library/Frameworks/RubyCocoa.framework /Library/Frameworks

という手もあるが、それならわざわざ /opt/local に入れる必要もない気がするし。どうしたものか。もしくは環境変数

DYLD_LIBRARY_PATH="/opt/local/Library/Frameworks/RubyCocoa.framework"

とか。あり得ない。

DarwinPorts としての整合性と Mac OS X 本来の仕様とのギャップが悩ましい。

今日は LLDN だったんだよね。どうだったんだろう。参加者の事後報告を読みのが楽しみだ。