今日のビルド
b90c48b1e20b955da99dfa954a33bb504a5f90f8 までを pull ってきてビルド。yjit でエラーが出た。
compiling ../ruby/yjit.c partial linking yjit/target/release/libyjit.a into yjit/target/release/libyjit.o ld: cannot open output file yjit/target/release/libyjit.o: そのようなファイルやディレクトリはありません make: *** [../ruby/yjit/yjit.mk:49: yjit/target/release/libyjit.o] エラー 1
調べてみる
ローカルでのビルド環境
ディレクトリ構成は以下の通り。
jinroq@:workdir $ tree -L 2 . ├── build # => ビルドを実際に行うディレクトリ ├── install # => ruby のインストール先に指定するディレクトリ └── ruby # => `git clone` したリポジトリ
今日やったこと
jinroq@:build $ ../ruby/configure --prefix=$PWD/../install $ make clean $ make install
この make install
を実行すると yjit でエラーが出る。
yjit/target/release/libyjit.o が見つからないらしいので、本当にないのかと思ったら
存在するようなので「???」となった。
存在しないものが存在しているので軽い気持ちで yjit/target/release/libyjit.o と、あと一緒に存在している yjit/target/release/libyjit.a を手動で消して再度ビルドをしてみた。
building Rust YJIT (release mode) touch yjit/target/release/libyjit.a partial linking yjit/target/release/libyjit.a into yjit/target/release/libyjit.o assembling ../ruby/coroutine/amd64/Context.S Assembler messages: Fatal error: can't create coroutine/amd64/Context.o: そのようなファイルやディレクトリはありません make: *** [Makefile:454: coroutine/amd64/Context.o] エラー 1
エラーメッセージが変わったけど、さっぱり分からんちんで「ぐぬぬっ…」となった。
実は昨日やったこと
昨日のブログ を投稿した後に、e770006486a84008e68d8ab0c01c4625f028a0de が master ブランチに取り込まれていることに気付いたので手元に pull ってきたうえで、yjit を有効にしてビルドした。
ドキュメント通り に実行したつもり…、だったのだが…。
コンソールのログを確認すると
jinroq@:ruby (master) $ ../ruby/configure --enable-yjit --prefix=$PWD/../ruby-yjit --disable-install-doc $ make
build ディレクトリでビルドせず、ruby ディレクトリでビルドしたっぽい。そして ruby-yjit ディレクトリではなく install ディレクトリに実行ファイルがインストールされたっぽい。
./configure
の実行箇所を変更したらできそうな気がしたけど、今日はここまで。