Project

General

Profile

Actions

Bug #20706

closed

Can't build Ruby on macOS Sonoma and Sequoia due to: ignoring duplicate libraries, archive member '/' not a mach-o file in libruby.3.3-static.a

Added by wkoszek (Adam Koszek) 5 months ago. Updated 5 months ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
[ruby-core:118983]

Description

Hi,

I had the same problems with macOS Sonoma and (after an upgrade) Sequoia -- something about my macOS makes it impossible to build Ruby.
Upon an upgrade to Sequoia, I did Xcode upgrade, and then CommandLine tools download.
Then I did "sudo xcode-select --reset"
I'm trying ruby-3.3.4 and ruby-3.2.5 -- both have the same result from below.

Steps:

wget https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.4.tar.gz
tar xzf ruby-3.3.4.tar.gz
cd ruby-3.3.4
script
./configure
make -j

Last lines:

linking shared-object -test-/scan_args.bundle
linking shared-object -test-/string.bundle
linking shared-object objspace.bundle
linking shared-object digest/bubblebabble.bundle
linking shared-object stringio.bundle
linking transcoder big5.bundle
linking shared-object json/ext/generator.bundle
making ends
make[1]: Nothing to be done for `encs'.
linking shared-object nkf.bundle
linking shared-object ripper.bundle
file2lastrev.rb: does not seem to be under a vcs: .
revision.h unchanged
config.status: creating ruby-runner.h
ln -sf ../../rbconfig.rb .ext/arm64-darwin24/rbconfig.rb
linking ruby
ld: warning: ignoring duplicate libraries: '-ldl', '-lobjc', '-lpthread'
ld: archive member '/' not a mach-o file in '/Users/wk/tmp/rubyc/ruby-3.3.4/libruby.3.3-static.a'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [ruby] Error 1
make[1]: *** [ruby] Error 2
make: *** [build-ext] Error 2
[07:35:03][wk@wkoszek_mba:~/tmp/rubyc/ruby-3.3.4]$ exit
exit

Script done, output file is typescript

file /Users/wk/tmp/rubyc/ruby-3.3.4/libruby.3.3-static.a
/Users/wk/tmp/rubyc/ruby-3.3.4/libruby.3.3-static.a: current ar archive

I'm attaching the transcript.

This ticket has this warning too:
https://bugs.ruby-lang.org/issues/20283

But looks like it's a warning. For me it's somehow an error.


Files

typescript (54.7 KB) typescript Result of running "script" before ./configure wkoszek (Adam Koszek), 08/29/2024 02:40 PM
typescript_after_alan_ask_ditched_rvm.txt (54.4 KB) typescript_after_alan_ask_ditched_rvm.txt wkoszek (Adam Koszek), 08/29/2024 10:28 PM

Updated by alanwu (Alan Wu) 5 months ago

checking for ruby... [33;1m/Users/wk/.rvm/rubies/ruby-3.3.0/bin/ruby[m
/Users/wk/.rvm/rubies/ruby-3.3.0/lib/ruby/3.3.0/time.rb:4:in `require': [1mcannot load such file -- date ([1;4mLoadError[m[1m)[m
	from /Users/wk/.rvm/rubies/ruby-3.3.0/lib/ruby/3.3.0/time.rb:4:in `<top (required)>'
	from /Users/wk/.rvm/rubies/ruby-3.3.0/lib/ruby/3.3.0/open-uri.rb:4:in `require'
	from /Users/wk/.rvm/rubies/ruby-3.3.0/lib/ruby/3.3.0/open-uri.rb:4:in `<top (required)>'
	from tool/downloader.rb:5:in `require'
	from tool/downloader.rb:5:in `<main>'

Looks like the ruby you're using to build ruby is broken and require 'date' is failing. Try fixing that?

Updated by wkoszek (Adam Koszek) 5 months ago

Ok. I removed the rvm, and started with a Ruby that doesn't throw this warning.

The problem remains the same -- attached log

Updated by nobu (Nobuyoshi Nakada) 5 months ago

warning: this method call resolves to <&Box<[T]> as IntoIterator>::into_iter (due to backwards compatibility), but will resolve to <Box<[T]> as IntoIterator>::into_iter in Rust 2024

Maybe rustc is old?

Updated by wkoszek (Adam Koszek) 5 months ago

It looks pretty recent to me:

$ rustc --version
rustc 1.80.1 (3f5fd8dd4 2024-08-06) (Homebrew)

I think there are some warnings that I get even on a PC with Ubuntu 24.04. So I don't worry about those. But the linker error is basically preventing me from using Ruby / RVM.

Trying to ditch Xcode.app now -- will reinstall to see if it helps.

Updated by wkoszek (Adam Koszek) 5 months ago

Ok, so I did:

sudo rm -rf /Applications/Xcode.app # this was Xcode.app 15.4
brew update
brew upgrade

On Sequoia I had to get Xcode_16_beta_6.xip b/c Xcode from App Store doesn't work.
Unpacked, and renamed from Xcode-beta.app to /Applications/Xcode.app
Downloaded all SDKS:

$ xcode-select --install
xcode-select: note: Command line tools are already installed. Use "Software Update" in System Settings or the softwareupdate command line interface to install updates
[22:34:05][wk@wkoszek_mba:~/tmp/rubyc/ruby-3.3.4]$

Result:

$ cc --version
Apple clang version 16.0.0 (clang-1600.0.26.3)
Target: arm64-apple-darwin24.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

I added -v to the LDFLAGS in Makefile. Looks like the offending command is:

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 15.0.0 15.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -O3 -mllvm -enable-linkonceodr-outlining -o ruby -L. -L/usr/local/lib -pie -framework CoreFoundation main.o dmyext.o dmyenc.o -lruby.3.3-static -framework CoreFoundation -ldl -lobjc -lpthread -ldl -lobjc -lpthread -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/16/lib/darwin/libclang_rt.osx.a
ld: warning: ignoring duplicate libraries: '-ldl', '-lobjc', '-lpthread'
ld: archive member '/' not a mach-o file in '/Users/wk/tmp/rubyc/ruby-3.3.4/libruby.3.3-static.a'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [ruby] Error 1
make[1]: *** [ruby] Error 2

Did some reading. Homebrew's "ar" is picked instead of the Xcode's one:

$ which ar
/opt/homebrew/bin/ar

Looks like ... the workaround for me is to:

brew uninstall binutils

Is this normal? [I can build Ruby now]

Updated by hsbt (Hiroshi SHIBATA) 5 months ago

  • Status changed from Open to Closed

Is this normal? [I can build Ruby now]

Yes, don't use build toolchain provided by homebrew.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0