From: "kou (Kouhei Sutou)" Date: 2022-03-18T21:14:27+00:00 Subject: [ruby-core:107987] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha Issue #18645 has been updated by kou (Kouhei Sutou). Assignee set to kou (Kouhei Sutou) Status changed from Open to Third Party's Issue Could you report this to https://github.com/ruby/fiddle/ because ruby/fiddle is the upstream? ---------------------------------------- Bug #18645: fiddle.rb assumes wrong file name for glibc shared object on Alpha https://bugs.ruby-lang.org/issues/18645#change-96939 * Author: glaubitz (John Paul Adrian Glaubitz) * Status: Third Party's Issue * Priority: Normal * Assignee: kou (Kouhei Sutou) * ruby -v: 3.0.3 * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- On Alpha, the fiddle.rb test fails because the code in helper.rb assumes that the name for the libc shared object file is "libc.so.6" which is not correct for all architectures: ``` ruby -v: ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [alpha-linux-gnu] exec ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=./test/excludes --name=!/memory_leak/ -v --excludes-dir=debian/tests/excludes/any/ --excludes-dir=debian/tests/excludes/alpha/ /<>/.ext/common/fiddle.rb:61:in `initialize': libc.so.6: cannot open shared object file: No such file or directory (Fiddle::DLError) from /<>/.ext/common/fiddle.rb:61:in `new' from /<>/.ext/common/fiddle.rb:61:in `dlopen' from /<>/.ext/common/fiddle/import.rb:86:in `block in dlload' from /<>/.ext/common/fiddle/import.rb:77:in `collect' from /<>/.ext/common/fiddle/import.rb:77:in `dlload' from /<>/test/fiddle/test_import.rb:12:in `' from /<>/test/fiddle/test_import.rb:10:in `' from /<>/test/fiddle/test_import.rb:9:in `' from /<>/tool/lib/test/unit.rb:1049:in `require' from /<>/tool/lib/test/unit.rb:1049:in `block in non_options' from /<>/tool/lib/test/unit.rb:1043:in `each' from /<>/tool/lib/test/unit.rb:1043:in `non_options' from /<>/tool/lib/test/unit.rb:65:in `process_args' from /<>/tool/lib/test/unit.rb:143:in `process_args' from /<>/tool/lib/test/unit.rb:1237:in `process_args' from /<>/tool/lib/test/unit.rb:1242:in `run' from /<>/tool/lib/test/unit.rb:1249:in `run' from /<>/tool/test/runner.rb:23:in `' from ./test/runner.rb:11:in `require_relative' from ./test/runner.rb:11:in `
' ``` Full log: https://buildd.debian.org/status/fetch.php?pkg=ruby3.0&arch=alpha&ver=3.0.3-1&stamp=1647549307&raw=0 The code in question is located in test/fiddle/helper.rb: ``` # Handle musl libc libc_so, = Dir.glob(File.join(libdir, "libc.musl*.so*")) if libc_so libm_so = libc_so else # glibc libc_so = "libc.so.6" libm_so = "libm.so.6" end ``` On a machine running Linux on Alpha, the filename for the shared library is libc.so.6.1, the same applies for Itanium: ``` root@alpha-test-01:~# uname -a Linux alpha-test-01 5.14.0-3-alpha-generic #1 Debian 5.14.12-1 (2021-10-14) alpha GNU/Linux root@alpha-test-01:~# ls -l /lib/alpha-linux-gnu/libc.so* -rw-r--r-- 1 root root 273 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so lrwxrwxrwx 1 root root 12 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so.6.1 -> libc-2.33.so root@alpha-test-01:~# ``` ``` root@yttrium:~# uname -a Linux yttrium 5.15.0-2-mckinley #1 SMP Debian 5.15.5-1 (2021-11-26) ia64 GNU/Linux root@yttrium:~# ls -l /lib/ia64-linux-gnu/libc.so* lrwxrwxrwx 1 root root 12 Jan 26 22:01 /lib/ia64-linux-gnu/libc.so.6.1 -> libc-2.33.so root@yttrium:~# ``` The code in helper.rb should be modified to set the name for libc_so on Alpha and IA64 to "libc.so.6.1". -- https://bugs.ruby-lang.org/ Unsubscribe: