Actions
Bug #20783
closed--enable-shared and the rpath/runpath are broken on Linux on CRuby master
Description
https://github.com/ruby/ruby-dev-builder/actions/runs/11095200420
$ ruby test_files/cli_test.rb
ruby: error while loading shared libraries: libruby.so.3.4: cannot open shared object file: No such file or directory
And indeed locally I can confirm it's broken (I use ruby-build for convenience, as you can see it just does a bunch of regular build commands):
$ RUBY_CONFIGURE_OPTS=--enable-shared ruby-build ruby-dev -d ~/.rubies
==> Cloning https://github.com/ruby/ruby.git...
-> git clone --depth 1 --branch master https://github.com/ruby/ruby.git ruby-master
...
==> Installing ruby-master...
-> autoreconf -i
-> ./configure "--prefix=$HOME/.rubies/ruby-dev" --enable-shared
-> make -j 16
-> make update-gems extract-gems install
==> Installed ruby-master to /home/eregon/.rubies/ruby-dev
And that build with --enable-shared
is not working, same as on GitHub Actions:
$ /home/eregon/.rubies/ruby-dev/bin/ruby -v
/home/eregon/.rubies/ruby-dev/bin/ruby: error while loading shared libraries: libruby.so.3.4: cannot open shared object file: No such file or directory
$ ldd /home/eregon/.rubies/ruby-dev/bin/ruby
linux-vdso.so.1 (0x00007fff9018c000)
libruby.so.3.4 => not found
libz.so.1 => /lib64/libz.so.1 (0x00007f4c8d928000)
libcrypt.so.2 => /lib64/libcrypt.so.2 (0x00007f4c8d8ef000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4c8d80e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4c8d62c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4c8d95e000)
$ readelf -d /home/eregon/.rubies/ruby-dev/bin/ruby
Dynamic section at offset 0x2db8 contains 29 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libruby.so.3.4]
0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
0x0000000000000001 (NEEDED) Shared library: [libcrypt.so.2]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000001d (RUNPATH) Library runpath: [/home/eregon/.rubies/ruby-dev/lib-L/home/eregon/.rubies/ruby-dev/lib]
...
@hsbt (Hiroshi SHIBATA) said he remembers https://github.com/ruby/ruby/commit/1f6d2e77d9be9a5a829e60908d21d621f4e1ceb0 changed something in this area which might be the cause.
Once this is fixed we should also revert https://github.com/ruby/docker-images/pull/107.
Updated by Eregon (Benoit Daloze) about 2 months ago
BTW this also shows the ruby/ruby CI does not currently test an installed ruby with --enable-shared
.
It seems important to add a test to avoid such regressions.
Updated by nobu (Nobuyoshi Nakada) about 2 months ago
Updated by hsbt (Hiroshi SHIBATA) about 2 months ago
- Status changed from Open to Assigned
- Assignee set to nobu (Nobuyoshi Nakada)
Updated by nobu (Nobuyoshi Nakada) about 2 months ago
- Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED
Updated by hsbt (Hiroshi SHIBATA) about 1 month ago
- Status changed from Assigned to Closed
Actions
Like0
Like0Like0Like0Like0Like0Like0