Closed13

Wandbox の ldc-head を修正する

srz_zumixsrz_zumix

最初の PR でしたのは llvm-6 に更新した(ldc が required だったので)
コンパイルに使用する d compiler を ldc から dmd に変更した。

llvm-6 参照するようになったので libLLVM-6.0.so.1 が見つからず失敗
https://wandbox.org/permlink/ubTwX6ESEY86LQno

srz_zumixsrz_zumix
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 以上になったのでこの回避コードは消えた。

srz_zumixsrz_zumix

llvm-3.8 で無理くりビルドするのはつらそうなので、llvm-6 を使うとして・・
so 見ないようにすれば良さげ

ということでテキトーに ldc repo ないを static で検索
https://github.com/ldc-developers/ldc/search?q=static&type=commits

https://github.com/ldc-developers/ldc/commit/01555c47d5eca2c2f97e67bc08b160a5e900c823
関係ありそうな commit が初っ端にでる。ラッキー

LDC_INSTALL_LLVM_RUNTIME_LIBS で検索
https://github.com/ldc-developers/ldc/blob/c46ad39a368915cc5cdfefad6df55c9313b9f0fa/CMakeLists.txt#L755
LLVM_IS_SHARED でスイッチできそうなことがわかる

srz_zumixsrz_zumix

さっそく -DLLVM_IS_SHARED=OFF を追加して install.sh

srz_zumixsrz_zumix

待ってる間に前の 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

srz_zumixsrz_zumix
root@docker-desktop:/var/work/ldc-head# llvm-config-6.0 --shared-mode
shared
srz_zumixsrz_zumix

llvm-config --link-static --libs で static link することができるが、それを ldc ではサポートしてなさそう。
llvm-config --shared-mode が static になるようにするにはどうすればいいか調べる

srz_zumixsrz_zumix

PR 見ていただければわかると思いますが、本番環境に依存パッケージをインストールしていただいて完了。

このスクラップは2021/05/10にクローズされました