現象
超久々にRubyを触っているんだが、
配備する環境に合わせて、Rubyの2.0.0-p648を利用しようとしたが、
$ brew install rbenv
$ rbenv install -L | grep p648
2.0.0-p648
ビルドでエラーになる。
$ rbenv install 2.0.0-p648
Downloading openssl-1.0.2u.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16
Installing openssl-1.0.2u...
Installed openssl-1.0.2u to /Users/mitsuaki1229/.rbenv/versions/2.0.0-p648
Downloading ruby-2.0.0-p648.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.bz2
Installing ruby-2.0.0-p648...
WARNING: ruby-2.0.0-p648 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.
ruby-build: using readline from homebrew
BUILD FAILED (macOS 11.6 using ruby-build 20211203)
Inspect or clean up the working tree at /var/folders/s3/r4ql7qd12b38x0jbvlnh92n40000gn/T/ruby-build.20211221103119.10821.PPrkEu
Results logged to /var/folders/s3/r4ql7qd12b38x0jbvlnh92n40000gn/T/ruby-build.20211221103119.10821.log
Last 10 log lines:
thread.c:4835:20: note: did you mean 'rb_frame_this_func'?
./include/ruby/intern.h:369:4: note: 'rb_frame_this_func' declared here
ID rb_frame_this_func(void);
^
1 warning and 1 error generated.
make: *** [thread.o] Error 1
make: *** Waiting for unfinished jobs....
12 warnings generated.
6 warnings generated.
12 warnings generated.
原因
Xcode12から、Cのビルド時に宣言無しで関数を利用すると、エラーを吐くようになったらしい。
Clang now reports an error when you use a function without an explicit declaration when building C or Objective-C code for macOS (-Werror=implicit-function-declaration flag is on). This additional error detection unifies Clang’s behavior for iOS/tvOS and macOS 64-bit targets for this diagnostic. (49917738)
解決
エラーを無視するようにフラグを設定する。
$ export optflags="-Wno-error=implicit-function-declaration"
再ビルド。
$ rbenv install 2.0.0-p648
Downloading openssl-1.0.2u.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16
Installing openssl-1.0.2u...
Installed openssl-1.0.2u to /Users/mitsuaki1229/.rbenv/versions/2.0.0-p648
Downloading ruby-2.0.0-p648.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.bz2
Installing ruby-2.0.0-p648...
WARNING: ruby-2.0.0-p648 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.
ruby-build: using readline from homebrew
Installed ruby-2.0.0-p648 to /Users/mitsuaki1229/.rbenv/versions/2.0.0-p648