はじめに
cc-rs
はrust
のパッケージにおいて、依存するC/C++
を間接的にビルドしてくれるパッケージである。
cc-rs
のバージョン1.0.90
1 が適用される場合に、以下のメッセージが表示されMacOS
下でのパッケージビルドが失敗するようになった。
warning: profiler_builtins@0.0.0: xcrun: error: unable to lookup item 'PlatformVersion' from command line tools installation
warning: profiler_builtins@0.0.0: xcrun: error: unable to lookup item 'PlatformVersion' in SDK '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'
具体的には、duckdb-rs
を組み込んだ際に遭遇した。
この事象は、cc-rs
のissue
でも報告されている。
原因
デプロイバージョンを取得するためにcc-rs
で内部的に以下のコマンドが実行されている。
xcrun --show-sdk-platform-version
上記のコマンドは、XCode
がインストールされている環境であれば問題なく取得できる(らしい)のだが、コマンドラインツールしかインストールしていない環境ではエラーとなってしまう。
このエラーに引きずられて、間接的にcc-rs
に依存するパッケージのビルドが失敗していた。
回避策
cc-rs
のコードを追いかけていたところ、MACOSX_DEPLOYMENT_TARGET
環境変数の取得を試み、取得できなければ、xcrun
を走らせるようになっていた。
そこで、MACOSX_DEPLOYMENT_TARGET
にとりま10.11
をセットした上で、ビルドを走らせたところ、ビルドが成功するところまでは確認できた。
$ export MACOSX_DEPLOYMENT_TARGET=10.11
$ cargo build
まとめ
cc-rs
のissue
にも上がっているため、そのうち解決するとは思うが、これを書いている時点ではまだ解決していない。
この投稿が助けになれば幸いである。
2024-04-14 追記
以下のプルリクにて、show-sdk-platform-version
ではなく、show-sdk-version
使用するよう変更された。
show-sdk-version
の使用ではエラーにならないため、この回避策は不要になったと思われる。
-
issueによると1.0.83では、エラーにならないらしい ↩