ruby-changes:11210
From: akr <ko1@a...>
Date: Sun, 8 Mar 2009 02:21:45 +0900 (JST)
Subject: [ruby-changes:11210] Ruby:r22819 (trunk): use ldd to find libc and libm if no information.
akr 2009-03-08 02:21:40 +0900 (Sun, 08 Mar 2009) New Revision: 22819 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22819 Log: use ldd to find libc and libm if no information. Modified files: trunk/test/dl/test_base.rb Index: test/dl/test_base.rb =================================================================== --- test/dl/test_base.rb (revision 22818) +++ test/dl/test_base.rb (revision 22819) @@ -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 @@ # 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/