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でも適用しないと意味ないんじゃ…?というか、特定のバージョンじゃなくて無条件にパッチ当てたらいいじゃん。