概要
Homebrewを使用してSubversionをソースからビルドする際、SConstructのバグと思われる原因で失敗しました。今回は、SConstructのソースコードを一部変更することで解決しました。
環境
macOS 10.14.6 Mojave
現象
HomebrewでSubversionをビルドしてインストールしようとしたところ、「Sconstruct: -rpathの指定方法が違います」といった内容のエラーが出て、ビルドに失敗しました。
原因
エラーメッセージを調べたところ、GCCにランタイムライブラリのパス(rpath)を渡す際、GNU GCCでは-L-rpath=とするのに対し、mac版のGCCは-L-rpath,とする必要があることが分かりました。
Subversionのビルドに使用されているビルドシステム(SConstruct)のソースディレクトリ内で-L-rpath=をgrepしたところ、-L-rpath=という文字列が見つかりました。その行付近でプラットフォームによる条件分岐がされていなかったことから、SConstructがGCCに渡すパラメータの条件分岐漏れが原因でないかと考えられます。
解決方法
SConstructの実行環境がmac(platformがdarwin)であれば、-L-rpath,という形式でrpathを渡すようにすればよいです。
SConstructはHomebrewでインストールされていましたので、今回の場合は、
/usr/local/Cellar/scons/4.3.0/libexec/lib/python3.10/site-packages/SCons/Tool/gdc.pyの
env['RPATHPREFIX'] = '-L-rpath=' を
env['RPATHPREFIX'] = '-L-rpath,' if env['PLATFORM'] == 'darwin' else '-L-rpath='
とすることで、無事にビルドができました。
補足
macOS Mojaveはすでに古いバージョンのため、Homebrewでビルド済みのバイナリが用意されなくなったFormulaeが増えています。バイナリがない際は、今回のように各自でビルドする必要があります。