きりかノート 3冊め

おあそびプログラミング

MacPorts公式のport:ruby186がLeopardでビルド失敗する問題を修正

openssl対応のついでにp399にあげた(http://d.hatena.ne.jp/kimuraw/20100714/p2)のだけど、痛恨のミス。Leopardだとビルドエラーになる、という報告がきてた。

 platform darwin 9 {
    patchfiles-append  dot-darwin.diff \
                       etc-irbrc.diff \
                       ignore-gsetcontext.diff \
                       md5_sha1_commoncrypto.diff \
                       use-dyld.diff \
                       use-setreugid.diff \
                       words-bigendian-from-arch.diff
 }

port:ruby186ではLeopardのときだけ当てている謎のパッチ群がある。このうちのひとつ、use-dyld.diffのパッチ適用が失敗するようになったのが、今回の問題。

このパッチは、動的ロードにdlopen()ではなくNSLinkModule()などのdyld系の関数を10.3以前で利用するようにするというもの。同様の変更がp399では入っているので、パッチがコンフリクトしてしまった。

10.5でのインストール確認を忘れたのが問題点。次回から気をつけます。

それとは別にさ、このパッチではAvailabilityMacros.h使ってて、10.5のときはこのパッチを当てて、10.4以降ではdlopen()を使うにしているわけだ。それって10.4でも適用しないと意味ないんじゃ…?というか、特定のバージョンじゃなくて無条件にパッチ当てたらいいじゃん。