Bug #18912
closedBuild failure with Xcode 14 and macOS 13 (Ventura) Beta
Description
TL;DR: We fixed this issue at Ruby 2.7-3.1 and master branch. But the stable versions are not released yet.
- Option 1: We strongly recommend to not upgrade Xcode 14 and its toolchains for macOS 12(Monterey) users. If you already update Xcode 14, you remove them with
sudo rm -rf /Library/Developer/CommandLineTools
and install Xcode 13.x or toolchains from https://developer.apple.com/download/all - Option 2: macOS 13 (Ventura) couldn't install Xcode13. We should add
--without=+,bigdecimal --enable-shared
to theconfigure
option.
Today, I tried to build ruby master with macOS 13 (Ventura) Beta. It breaks the build status caused by Xcode 14 beta changes.
- Build failed without
--enable-shared
.
I build ruby master without --enable-shared
option. I got the following error.
(snip)
linking shared-object -test-/arith_seq/extract.bundle
Undefined symbols for architecture arm64:
"_rb_arithmetic_sequence_extract", referenced from:
_arith_seq_s_extract in extract.o
"_rb_ary_new_capa", referenced from:
_arith_seq_s_extract in extract.o
"_rb_ary_store", referenced from:
_arith_seq_s_extract in extract.o
"_rb_define_singleton_method", referenced from:
_Init_extract in extract.o
"_rb_path2class", referenced from:
_Init_extract in extract.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
@katei (Yuta Saito) says this error affects with -undefined dynamic_lookup
flags.
- Build error with bigdecimal
With --enabled-shared
resolved the first error. But I got the another build failure.
compiling bigdecimal.c
In file included from bigdecimal.c:13:
In file included from ./bigdecimal.h:14:
./missing.h:127:1: error: static declaration of 'rb_rational_num' follows non-static declaration
rb_rational_num(VALUE rat)
^
../.././include/ruby/internal/intern/rational.h:128:7: note: previous declaration is here
VALUE rb_rational_num(VALUE rat);
^
In file included from bigdecimal.c:13:
In file included from ./bigdecimal.h:14:
(snip)
It's affected with static inline
declaration in missing.h of bigdecimal.
- test failure with mjit
I could build with --with-out-ext=+,bigdecimal --enable-share
option. But I also got the test failure with mjit.
[215/402] TestMJIT#test_lambda_longjmp = 0.19 s
192) Failure:
TestMJIT#test_lambda_longjmp [/Users/hsbt/Documents/github.com/ruby/ruby/test/ruby/test_mjit.rb:1045]:
Expected 1 times of JIT success, but succeeded 0 times.
script:
"""
fib = lambda do |x|
return x if x == 0 || x == 1
fib.call(x-1) + fib.call(x-2)
end
print fib.call(5)
"""
stderr:
"""
Undefined symbols for architecture arm64:
"_mjit_call_p", referenced from:
__mjit0 in _ruby_mjit_p39885u0-643ab5.o
_vm_sendish in _ruby_mjit_p39885u0-643ab5.o
I already shared this to @k0kubun (Takashi Kokubun) .
macOS 13 beta is still development status. I will track this until the official release date.