diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-07 17:21:40 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-07 17:21:40 +0000 |
commit | 88f7877ebd49561e0d6ffd232ba68f7651cac254 (patch) | |
tree | 009f0708d1cd2f610bc1d6489b81d0d2ab7cf46b | |
parent | e58b9002042a982b8a115cd21bd24fb0879069df (diff) | |
download | ruby-88f7877ebd49561e0d6ffd232ba68f7651cac254.tar.gz ruby-88f7877ebd49561e0d6ffd232ba68f7651cac254.tar.xz ruby-88f7877ebd49561e0d6ffd232ba68f7651cac254.zip |
use ldd to find libc and libm if no information.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | test/dl/test_base.rb | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/test/dl/test_base.rb b/test/dl/test_base.rb index be23ffa35..48b32cdde 100644 --- a/test/dl/test_base.rb +++ b/test/dl/test_base.rb @@ -1,13 +1,16 @@ require 'test/unit' require 'dl' +require_relative '../ruby/envutil' + +libc_so = libm_so = nil case RUBY_PLATFORM when /cygwin/ - LIBC_SO = "cygwin1.dll" - LIBM_SO = "cygwin1.dll" + libc_so = "cygwin1.dll" + libm_so = "cygwin1.dll" when /x86_64-linux/ - LIBC_SO = "/lib64/libc.so.6" - LIBM_SO = "/lib64/libm.so.6" + libc_so = "/lib64/libc.so.6" + libm_so = "/lib64/libm.so.6" when /linux/ libdir = '/lib' case [0].pack('L!').size @@ -18,40 +21,40 @@ when /linux/ # 64-bit ruby libdir = '/lib64' if File.directory? '/lib64' end - LIBC_SO = [ - File.join(libdir, "libc.so.6"), - File.join(libdir, "libc.so.6.1") - ].find {|f| File.file? f } - LIBM_SO = [ - File.join(libdir, "libm.so.6"), - File.join(libdir, "libm.so.6.1") - ].find {|f| File.file? f } + libc_so = File.join(libdir, "libc.so.6") + libm_so = File.join(libdir, "libm.so.6") when /mingw/, /mswin32/ - LIBC_SO = "msvcrt.dll" - LIBM_SO = "msvcrt.dll" + libc_so = "msvcrt.dll" + libm_so = "msvcrt.dll" when /darwin/ - LIBC_SO = "/usr/lib/libc.dylib" - LIBM_SO = "/usr/lib/libm.dylib" + libc_so = "/usr/lib/libc.dylib" + libm_so = "/usr/lib/libm.dylib" when /bsd|dragonfly/ - LIBC_SO = "/usr/lib/libc.so" - LIBM_SO = "/usr/lib/libm.so" -when /solaris2/ - case [0].pack('L!').size - when 4 - libdir = '/usr/lib' - when 8 - libdir = '/usr/lib/64' - end - LIBC_SO = "#{libdir}/libc.so" - LIBM_SO = "#{libdir}/libm.so" + libc_so = "/usr/lib/libc.so" + libm_so = "/usr/lib/libm.so" else - LIBC_SO = ARGV[0] - LIBM_SO = ARGV[1] - if( !(LIBC_SO && LIBM_SO) ) + libc_so = ARGV[0] + libm_so = ARGV[1] + if( !(libc_so && libm_so) ) $stderr.puts("libc and libm not found: #{$0} <libc> <libm>") end end +libc_so = nil if !libc_so || !File.file?(libc_so) +libm_so = nil if !libm_so || !File.file?(libm_so) + +if !libc_so || !libm_so + ruby = EnvUtil.rubybin + ldd = `ldd #{ruby}` + #puts ldd + libc_so = $1 if !libc_so && %r{libc\.so.*=>\s+(/\S*)} =~ ldd + libm_so = $1 if !libm_so && %r{libm\.so.*=>\s+(/\S*)} =~ ldd + #p [libc_so, libm_so] +end + +DL::LIBC_SO = libc_so +DL::LIBM_SO = libm_so + module DL class TestBase < Test::Unit::TestCase include Math |