最近ちっともDMDのビルドがうまくいかない。
ホストのコンパイラとしてDMD 2.087.1にパスを通した状態で、全部(dmd,druntime,phobos)のレポジトリに make -f posix.mak clean
をかけた状態でmasterを更新してdmdで make -f posix.mak -j4
、 phobosでも make -f posix.mak -j4
する。
その状態でdruntime直下に移動して make -f posix.mak benchmark-compile-only
をかけると以下のようなリンクエラーに遭遇する。
(dmd-2.087.1)$ LANG=C make -f posix.mak benchmark-compile-only ../dmd/generated/linux/release/64/dmd -conf= -m64 -I/home/kubo39/dev/dlang/druntime/import -I../phobos -L-L../phobos/generated/linux/release/64 -fPIC -defaultlib=libphobos2.so -L-rpath=../phobos/generated/linux/release/64 -de benchmark/runbench.d -ofgenerated/linux/release/64/benchmark DMD=../dmd/generated/linux/release/64/dmd generated/linux/release/64/benchmark --repeat=0 --dflags="-conf= -m64 -I/home/kubo39/dev/dlang/druntime/import -I../phobos -L-L../phobos/generated/linux/release/64 -fPIC -defaultlib=libphobos2.so -L-rpath=../phobos/generated/linux/release/64 -de" generated/linux/release/64/benchmark: symbol lookup error: generated/linux/release/64/benchmark: undefined symbol: _D4core8internal5array5utils12__ModuleInfoZ posix.mak:346: recipe for target 'benchmark-compile-only' failed make: *** [benchmark-compile-only] Error 127
この現象がいつまでたってもなおらない。おかげでrunbench.dでなんでパッチが落ちるのかの原因調査ができない。 もうずっとこんな調子で嫌気がさしてきた。CIは動いているので、なんか自分のところの環境が変なんだろうけどまるっきり見当がつかない。
とにかくこんな調子じゃ開発なんてできやしない。
追記
cloneしなおしてきてもできなかったが、dmd 2.086.1をホストにしたら make -f posix.mak benchmark-compile-only
が成功した。dmd 2.087.0以降のregression?