Bug #18592
closedRPATH of bundled native extensions is incorrect
Description
Hi, when building Ruby 3.1.0 on Solaris, one of our lint checks found out that RPATH/RUNPATH of bundled native extensions (debug and rbs) incorrectly includes DESTDIR.
This can be easily reproduced with the following:
git clone https://github.com/ruby/ruby.git
cd ruby
./autogen.sh
./configure --enable-rpath
PKG_CONFIG_PATH="/usr/lib/amd64/pkgconfig" /usr/gnu/bin/make
/usr/gnu/bin/make install DESTDIR=/builds/rubytest/
elfdump /builds/rubytest/usr/local/lib/ruby/gems/3.2.0/gems/debug-1.4.0/lib/debug/debug.so | grep RPATH
while the expected RPATH should be /usr/local/lib
as that is the path where ruby will ultimately live (and DESTDIR
should be ignored), the output from the elfdump above is:
[6] RPATH 0x44e /builds/rubytest/usr/local/lib
We deliver ruby to a non-default location, but the issue is still there.
I did a little digging and found out that prefix
variable in the extensions Makefile is incorrect, but so far I wasn't able to determine where is it being set as such.
Expected: prefix = $(DESTDIR)/usr/local
Actual: prefix = $(DESTDIR)/builds/rubytest/usr/local
When I change it to the expected one, the issue is gone.