概要
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が増えています。バイナリがない際は、今回のように各自でビルドする必要があります。