[ruby-core:109943] [Ruby master Bug#18912] Build failure with Xcode 14 and macOS 13 (Ventura) Beta
From:
"nobu (Nobuyoshi Nakada)" <noreply@...>
Date:
2022-09-18 02:47:28 UTC
List:
ruby-core #109943
Issue #18912 has been updated by nobu (Nobuyoshi Nakada).
Backport changed from 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN to 2.7: REQUIRED, 3.0: REQUIRED, 3.1: REQUIRED
Thank you, then is it ok if `CFString` has been initialized first?
```diff
diff --git a/file.c b/file.c
index de7ed5e33ba..b91b8c346cd 100644
--- a/file.c
+++ b/file.c
@@ -268,6 +268,20 @@ rb_str_encode_ospath(VALUE path)
#ifdef __APPLE__
# define NORMALIZE_UTF8PATH 1
+__attribute__((constructor))
+static void
+finish_async_unsafe_CFString_class_initialization(void)
+{
+ const UInt8 empty[1] = {0};
+ CFStringRef s = CFStringCreateWithBytesNoCopy(kCFAllocatorDefault,
+ empty, 0,
+ kCFStringEncodingUTF8, FALSE,
+ kCFAllocatorNull);
+ CFMutableStringRef m = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, s);
+ CFRelease(m);
+ CFRelease(s);
+}
+
static VALUE
rb_str_append_normalized_ospath(VALUE str, const char *ptr, long len)
{
```
----------------------------------------
Bug #18912: Build failure with Xcode 14 and macOS 13 (Ventura) Beta
https://bugs.ruby-lang.org/issues/18912#change-99191
* Author: hsbt (Hiroshi SHIBATA)
* Status: Assigned
* Priority: Normal
* Assignee: hsbt (Hiroshi SHIBATA)
* Backport: 2.7: REQUIRED, 3.0: REQUIRED, 3.1: REQUIRED
----------------------------------------
Today, I tried to build ruby master with macOS 13 (Ventura) Beta. It breaks the build status caused by Xcode 14 beta changes.
TL;DR: We should add `--without=+,bigdecimal --enable-shared` to the `configure` option.
1. 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 says this error affects with `-undefined dynamic_lookup` flags.
2. 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.
3. 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 .
macOS 13 beta is still development status. I will track this until the official release date.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>