macOS で https://github.com/ko1/ruby/tree/ractor のソースコードをビルドする方法を改善しました。
インストール先
コンパイルしたRubyをmake installしたら「PCの環境が壊れるかも」とビビっていたところ、
id:hanachin さんに ./configure --prefix="$HOME/.rbenv/versions/ractor"
するとrbenvの1実行環境として扱えると教えてもらいました。
OpenSSL
makeのログを見てたら、次のようなエラーも出ていました。
*** Following extensions are not compiled: openssl: Could not be configured. It will not be installed. /Users/shigerunakajima/ractor/ext/openssl/extconf.rb:99: OpenSSL library could not be found. You might want to use --with-openssl-dir=<dir> option to specify the prefix where OpenSSL is installed. Check ext/openssl/mkmf.log for more details. *** Fix the problems, then remove these directories and try again if you want.
--with-openssl-dir=/usr/local/opt/openssl@1.1/
オプションをつけて、HomebrewでインストールしたOpenSSLのディレクトリを指定します。
完成形
CFLAGS=-Wno-error=shorten-64-to-32 ./configure --prefix="$HOME/.rbenv/versions/ractor" --with-openssl-dir=/usr/local/opt/openssl@1.1/ make make install
まだ、次のようなエラーが表示されます。
installing bundled gems: /Users/shigerunakajima/.rbenv/versions/ractor/lib/ruby/gems/2.8.0 Traceback (most recent call last): 6: from ./tool/rbinstall.rb:957:in `<main>' 5: from ./tool/rbinstall.rb:957:in `each' 4: from ./tool/rbinstall.rb:960:in `block in <main>' 3: from ./tool/rbinstall.rb:889:in `block in <main>' 2: from ./tool/rbinstall.rb:889:in `foreach' 1: from ./tool/rbinstall.rb:894:in `block (2 levels) in <main>' ./tool/rbinstall.rb:818:in `load_gemspec': [/Users/shigerunakajima/ractor/.bundle/gems/minitest-5.14.0/minitest.gemspec] isn't a Gem::Specification (NilClass instead). (TypeError) make: *** [do-install-all] Error 1
Rubyコマンドのインストールはできているみたいです。
~ ls ~/.rbenv/versions/ractor/bin/ruby /Users/shigerunakajima/.rbenv/versions/ractor/bin/ruby*
プログラムの実行だけなら、minitestはなくてもよさそうなので、先に進みます。
動作確認
システムのRubyではRactorを使ったRubyスクリプトの実行に失敗します。
~ ruby --version ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18] ~ ruby sum_1_to_10.rb Traceback (most recent call last): sum_1_to_10.rb:2:in `<main>': uninitialized constant Ractor (NameError)
ractor版を使うと実行できました。
~ rbenv shell ractor ~ ruby --version ruby 2.8.0dev (2020-04-08T16:31:17Z ractor 2658fc668d) [x86_64-darwin18] ~ ruby sum_1_to_10.rb 55