| From 346e147ba6480839b87046e9a9efab0bf6ed3660 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com> |
| Date: Wed, 10 Aug 2016 17:35:48 +0200 |
| Subject: [PATCH] Rely on ldd to detect glibc. |
| |
| This is just workaround, since we know we are quite sure this will be successful |
| on Red Hat platforms. |
| |
| This workaround rhbz#1361037 |
| |
| test/fiddle/helper.rb | 111 ------------------------------------------ |
| 1 file changed, 111 deletions(-) |
| |
| diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb |
| index 1da3d93..65148a1 100644 |
| |
| |
| @@ -6,115 +6,6 @@ |
| |
| libc_so = libm_so = nil |
| |
| -case RUBY_PLATFORM |
| -when /cygwin/ |
| - libc_so = "cygwin1.dll" |
| - libm_so = "cygwin1.dll" |
| -when /android/ |
| - libdir = '/system/lib' |
| - if [0].pack('L!').size == 8 |
| - libdir = '/system/lib64' |
| - end |
| - libc_so = File.join(libdir, "libc.so") |
| - libm_so = File.join(libdir, "libm.so") |
| -when /linux/ |
| - libdir = '/lib' |
| - case RbConfig::SIZEOF['void*'] |
| - when 4 |
| - # 32-bit ruby |
| - case RUBY_PLATFORM |
| - when /armv\w+-linux/ |
| - # In the ARM 32-bit libc package such as libc6:armhf libc6:armel, |
| - # libc.so and libm.so are installed to /lib/arm-linux-gnu*. |
| - # It's not installed to /lib32. |
| - dirs = Dir.glob('/lib/arm-linux-gnu*') |
| - libdir = dirs[0] if dirs && File.directory?(dirs[0]) |
| - else |
| - libdir = '/lib32' if File.directory? '/lib32' |
| - end |
| - when 8 |
| - # 64-bit ruby |
| - libdir = '/lib64' if File.directory? '/lib64' |
| - end |
| - libc_so = File.join(libdir, "libc.so.6") |
| - libm_so = File.join(libdir, "libm.so.6") |
| -when /mingw/, /mswin/ |
| - require "rbconfig" |
| - crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase' |
| - libc_so = libm_so = "#{crtname}.dll" |
| -when /darwin/ |
| - libc_so = libm_so = "/usr/lib/libSystem.B.dylib" |
| -when /kfreebsd/ |
| - libc_so = "/lib/libc.so.0.1" |
| - libm_so = "/lib/libm.so.1" |
| -when /gnu/ #GNU/Hurd |
| - libc_so = "/lib/libc.so.0.3" |
| - libm_so = "/lib/libm.so.6" |
| -when /mirbsd/ |
| - libc_so = "/usr/lib/libc.so.41.10" |
| - libm_so = "/usr/lib/libm.so.7.0" |
| -when /freebsd/ |
| - libc_so = "/lib/libc.so.7" |
| - libm_so = "/lib/libm.so.5" |
| -when /bsd|dragonfly/ |
| - libc_so = "/usr/lib/libc.so" |
| - libm_so = "/usr/lib/libm.so" |
| -when /solaris/ |
| - libdir = '/lib' |
| - case RbConfig::SIZEOF['void*'] |
| - when 4 |
| - # 32-bit ruby |
| - libdir = '/lib' if File.directory? '/lib' |
| - when 8 |
| - # 64-bit ruby |
| - libdir = '/lib/64' if File.directory? '/lib/64' |
| - end |
| - libc_so = File.join(libdir, "libc.so") |
| - libm_so = File.join(libdir, "libm.so") |
| -when /aix/ |
| - pwd=Dir.pwd |
| - libc_so = libm_so = "#{pwd}/libaixdltest.so" |
| - unless File.exist? libc_so |
| - cobjs=%w!strcpy.o! |
| - mobjs=%w!floats.o sin.o! |
| - funcs=%w!sin sinf strcpy strncpy! |
| - expfile='dltest.exp' |
| - require 'tmpdir' |
| - Dir.mktmpdir do |dir| |
| - begin |
| - Dir.chdir dir |
| - %x!/usr/bin/ar x /usr/lib/libc.a #{cobjs.join(' ')}! |
| - %x!/usr/bin/ar x /usr/lib/libm.a #{mobjs.join(' ')}! |
| - %x!echo "#{funcs.join("\n")}\n" > #{expfile}! |
| - require 'rbconfig' |
| - if RbConfig::CONFIG["GCC"] = 'yes' |
| - lflag='-Wl,' |
| - else |
| - lflag='' |
| - end |
| - flags="#{lflag}-bE:#{expfile} #{lflag}-bnoentry -lm" |
| - %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{libc_so} #{(cobjs+mobjs).join(' ')} #{flags}! |
| - ensure |
| - Dir.chdir pwd |
| - end |
| - end |
| - end |
| -else |
| - libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/ |
| - libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/ |
| - if( !(libc_so && libm_so) ) |
| - $stderr.puts("libc and libm not found: #{$0} <libc> <libm>") |
| - end |
| -end |
| - |
| -libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so)) |
| -libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so)) |
| - |
| -# macOS 11.0+ removed libSystem.B.dylib from /usr/lib. But It works with dlopen. |
| -if RUBY_PLATFORM =~ /darwin/ |
| - libc_so = libm_so = "/usr/lib/libSystem.B.dylib" |
| -end |
| - |
| if !libc_so || !libm_so |
| ruby = EnvUtil.rubybin |
| # When the ruby binary is 32-bit and the host is 64-bit, |
| -- |
| 2.9.2 |
| |