[ruby-core:108425] [Ruby master Bug#18758] Ruby fails to build on M1 Mac when x86 Homebrew is installed
From:
"tenderlovemaking (Aaron Patterson)" <noreply@...>
Date:
2022-04-27 22:53:43 UTC
List:
ruby-core #108425
Issue #18758 has been updated by tenderlovemaking (Aaron Patterson). I tried to attach the patch but it just says "internal server error"  ---------------------------------------- Bug #18758: Ruby fails to build on M1 Mac when x86 Homebrew is installed https://bugs.ruby-lang.org/issues/18758#change-97460 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Priority: Normal * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- If you install x86 homebrew on an M1 mac, then install libyaml in the x86 version of homebrew, Ruby will fail to build on ARM. Steps to reproduce: 1. Install x86 homebrew: `$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"` 2. Install x86 libyaml: `$ arch -x86_64 /usr/local/bin/brew install libyaml` 3. Configure and compile Ruby with ARM architecture I expected Ruby to compile, but Psych fails with the following output: ``` /Users/aaron/git/ruby/tool/extlibs.rb:6:in `require': cannot load such file -- digest (LoadError) from /Users/aaron/git/ruby/tool/extlibs.rb:6:in `<top (required)>' from /Users/aaron/git/ruby/ext/psych/extconf.rb:24:in `require_relative' from /Users/aaron/git/ruby/ext/psych/extconf.rb:24:in `<top (required)>' from ./ext/extmk.rb:217:in `load' from ./ext/extmk.rb:217:in `block in extmake' from /Users/aaron/git/ruby/lib/mkmf.rb:324:in `open' from ./ext/extmk.rb:213:in `extmake' from ./ext/extmk.rb:577:in `block in <main>' from ./ext/extmk.rb:573:in `each' from ./ext/extmk.rb:573:in `<main>' ``` `mkmf.log` from Psych says: ``` ld: warning: ignoring file /usr/local/lib/libyaml.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64 ``` I believe the problem is the default LDFLAGS set by configure. The output of configure is: ``` * LDFLAGS: -L. -fstack-protector-strong -L/usr/local/lib ``` I don't think `/usr/local/lib` should be in `LDFLAGS` by default. I've attached a patch that fixes the problem for me, and I sent the same patch as a PR on GitHub: https://github.com/ruby/ruby/pull/5855 Thanks! -- 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>