-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
shims/super/cc: unset LD_LIBRARY_PATH
#18162
Conversation
A local `ruby` build failed while building extensions, with: *** Following extensions are not compiled: -test-/file: Could not be configured. It will not be installed. /tmp/ruby-20240824-893184-ehcnsa/ruby-3.3.4/lib/mkmf.rb:480: The compiler failed to generate an executable file. You have to install development tools first. Check ext/-test-/file/mkmf.log for more details. -test-/symbol: Could not be configured. It will not be installed. /tmp/ruby-20240824-893184-ehcnsa/ruby-3.3.4/lib/mkmf.rb:480: The compiler failed to generate an executable file. You have to install development tools first. Check ext/-test-/symbol/mkmf.log for more details. [...] `mkmf.log` indicated that the compiler shim failed to load `pathname`: LD_LIBRARY_PATH=.:../../.. "gcc-13 -o conftest -I../../../.ext/include/aarch64-linux -I../../.././include -I../../.././ext/-test-/file -I/home/linuxbrew/.linuxbrew/opt/libyaml/include -I/home/linuxbrew/.linuxbrew/opt/openssl@3/include -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdiv-by-zero -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wold-style-definition -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wmisleading-indentation -Wundef -fPIC conftest.c -L. -L../../.. -L/home/linuxbrew/.linuxbrew/opt/libyaml/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/libyaml/lib -L/home/linuxbrew/.linuxbrew/opt/openssl@3/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/openssl@3/lib -L. -fstack-protector-strong -L/home/linuxbrew/.linuxbrew/opt/libyaml/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/libyaml/lib -L/home/linuxbrew/.linuxbrew/opt/openssl@3/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/opt/openssl@3/lib -rdynamic -Wl,-export-dynamic -Wl,--no-as-needed -Wl,-rpath,/home/linuxbrew/.linuxbrew/Cellar/ruby/3.3.4/lib -L/home/linuxbrew/.linuxbrew/Cellar/ruby/3.3.4/lib -lruby-static -lz -lrt -lrt -ldl -lcrypt -lm -lpthread -lm -lpthread -lc" /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/shims/linux/super/gcc-13:12:in `require': cannot load such file -- pathname (LoadError) from /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/shims/linux/super/gcc-13:12:in `<main>' I believe this was due to `../../..` in `LD_LIBRARY_PATH` containing `libruby.so`, causing the Ruby script to load the being-built Ruby library instead of the system/portable one.
Where does the |
Oh right I think I understand now - misread the part that it's how our compiler shim executing Ruby that fails. |
It comes from the Ruby build itself, somehow. The |
Does GNU ld use |
This could be used by the linker [^1] so let's preserve it before invoking the compiler/linker. [^1]: https://sourceware.org/binutils/docs/ld/Options.html
Ah it does seem so: https://sourceware.org/binutils/docs/ld/Options.html
So preserving the variable makes sense. I've pushed an update. |
Co-authored-by: Bo Anderson <[email protected]>
Thanks @ZhongRuoyu, good catch! |
brew style
with your changes locally?brew typecheck
with your changes locally?brew tests
with your changes locally?A local
ruby
build failed while building extensions, with:mkmf.log
indicated that the compiler shim failed to loadpathname
:I believe this was due to
../../..
inLD_LIBRARY_PATH
containinglibruby.so
, causing the Ruby script to load the being-built Ruby library instead of the system/portable one.