虚無庵

徒然なるままに

今日の ruby build 2023-07-12

今日のビルド

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 が見つからないらしいので、本当にないのかと思ったら

workdir/ruby/yjit/target/releaseディレクトリ配下

存在するようなので「???」となった。

存在しないものが存在しているので軽い気持ちで 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 の実行箇所を変更したらできそうな気がしたけど、今日はここまで。