Actions
Bug #18645
closedfiddle.rb assumes wrong file name for glibc shared object on Alpha
Description
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/
/<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `initialize': libc.so.6: cannot open shared object file: No such file or directory (Fiddle::DLError)
from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `new'
from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `dlopen'
from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:86:in `block in dlload'
from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `collect'
from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `dlload'
from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:12:in `<module:LIBC>'
from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:10:in `<module:Fiddle>'
from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:9:in `<top (required)>'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `require'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `block in non_options'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `each'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `non_options'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:65:in `process_args'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:143:in `process_args'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1237:in `process_args'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1242:in `run'
from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1249:in `run'
from /<<PKGBUILDDIR>>/tool/test/runner.rb:23:in `<top (required)>'
from ./test/runner.rb:11:in `require_relative'
from ./test/runner.rb:11:in `<main>'
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".
Actions
Like0
Like0Like0