Wandbox の ldc-head を修正する
直したつもりが直ってなかった。
疑似環境でのテストをサボったからか?
最初の PR でしたのは llvm-6 に更新した(ldc が required だったので)
コンパイルに使用する d compiler を ldc から dmd に変更した。
llvm-6 参照するようになったので libLLVM-6.0.so.1 が見つからず失敗
llvm-config: unknown component name: debuginfomsf
CMake Error at cmake/Modules/FindLLVM.cmake:65 (message):
Failed to execute llvm-config ('/usr/bin/llvm-config', result code: '1)'
Call Stack (most recent call first):
cmake/Modules/FindLLVM.cmake:112 (_LLVM_FAIL)
cmake/Modules/FindLLVM.cmake:143 (llvm_set_libs)
CMakeLists.txt:31 (find_package)
ちなみに Wandbox のビルド環境だと llvm-3.8 で debuginfomsf がないので cmake でエラー。
昔は https://github.com/ldc-developers/ldc/pull/1772 の PR を見ればわかるように llvm のバージョンによって対応されていたが、llvm-6 以上になったのでこの回避コードは消えた。
llvm-3.8 で無理くりビルドするのはつらそうなので、llvm-6 を使うとして・・
so 見ないようにすれば良さげ
ということでテキトーに ldc repo ないを static
で検索
関係ありそうな commit が初っ端にでる。ラッキー
LDC_INSTALL_LLVM_RUNTIME_LIBS で検索
LLVM_IS_SHARED でスイッチできそうなことがわかるさっそく -DLLVM_IS_SHARED=OFF
を追加して install.sh
待ってる間に前の PR のときに作った環境を疑似環境でテスト。
./run-test.sh ldc-head
3572a1111ded34d88f3071ebe51abfcaa9f450fcea97666ffe2f3f373c9f8f41
wait: kennel port...
opened
ldc-head: {u'status': u'127', u'compiler_error': u'/opt/wandbox/ldc-head/bin/ldc2: error while loading shared libraries: libLLVM-6.0.so.1: cannot open shared object file: No such file or directory\n', u'compiler_message': u'/opt/wandbox/ldc-head/bin/ldc2: error while loading shared libraries: libLLVM-6.0.so.1: cannot open shared object file: No such file or directory\n'}
ldc-head: failed ()
test-server
cdbbd51066ac
3572a1111ded
はい。再現しましたね。サボった私のせいですなmm
だめだった。
ここに入ってる?root@docker-desktop:/var/work/ldc-head# llvm-config-6.0 --shared-mode
shared
llvm-config --link-static --libs で static link することができるが、それを ldc ではサポートしてなさそう。
llvm-config --shared-mode が static
になるようにするにはどうすればいいか調べる
コード読む感じ引数で static にはできそうだけど、引数は変えられないから、そうなるとやっぱり .so 消すしかないか・・
というわけで、 so 消してチャレンジ
できたので PR 出します。
PR 見ていただければわかると思いますが、本番環境に依存パッケージをインストールしていただいて完了。