ruby-changes:18047
From: nobu <ko1@a...>
Date: Fri, 3 Dec 2010 19:55:32 +0900 (JST)
Subject: [ruby-changes:18047] Ruby:r30068 (ruby_1_8, trunk): * lib/mkmf.rb (check_sizeof): should return integer always.
nobu 2010-12-03 19:48:12 +0900 (Fri, 03 Dec 2010) New Revision: 30068 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30068 Log: * lib/mkmf.rb (check_sizeof): should return integer always. Added directories: branches/ruby_1_8/test/mkmf/ Added files: branches/ruby_1_8/test/mkmf/base.rb branches/ruby_1_8/test/mkmf/test_find_executable.rb branches/ruby_1_8/test/mkmf/test_sizeof.rb Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/lib/mkmf.rb branches/ruby_1_8/version.h trunk/ChangeLog trunk/lib/mkmf.rb trunk/test/mkmf/test_sizeof.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 30067) +++ ChangeLog (revision 30068) @@ -1,3 +1,7 @@ +Fri Dec 3 19:48:11 2010 Nobuyoshi Nakada <nobu@r...> + + * lib/mkmf.rb (check_sizeof): should return integer always. + Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@r...> * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem Index: lib/mkmf.rb =================================================================== --- lib/mkmf.rb (revision 30067) +++ lib/mkmf.rb (revision 30068) @@ -1105,14 +1105,7 @@ expr = "sizeof((*rbcv_ptr_)#{"." << member if member})" fmt = STRING_OR_FAILED_FORMAT checking_for checking_message("size of #{type}", headers), fmt do - if UNIVERSAL_INTS.include?(type) - type - elsif size = UNIVERSAL_INTS.find {|t| - try_static_assert("#{expr} == sizeof(#{t})", prelude, opts, &b) - } - $defs.push(format("-DSIZEOF_%s=SIZEOF_%s", type.tr_cpp, size.tr_cpp)) - size - elsif size = try_constant(expr, prelude, opts, &b) + if size = try_constant(expr, prelude, opts, &b) $defs.push(format("-DSIZEOF_%s=%s", type.tr_cpp, size)) size end Index: test/mkmf/test_sizeof.rb =================================================================== --- test/mkmf/test_sizeof.rb (revision 30067) +++ test/mkmf/test_sizeof.rb (revision 30068) @@ -2,7 +2,13 @@ class TestMkmf class TestSizeof < TestMkmf - def test_sizeof + def test_sizeof_builtin + %w[char short int long float double void*].each do |type| + assert_kind_of(Integer, mkmf {check_sizeof(type)}) + end + end + + def test_sizeof_struct open("confdefs.h", "w") {|f| f.puts "typedef struct {char x;} test1_t;" } Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 30067) +++ ruby_1_8/ChangeLog (revision 30068) @@ -1,3 +1,7 @@ +Fri Dec 3 19:48:11 2010 Nobuyoshi Nakada <nobu@r...> + + * lib/mkmf.rb (check_sizeof): should return integer always. + Wed Dec 1 22:05:32 2010 NAKAMURA Usaku <usa@r...> * numeric.c (Init_Numeric): fixed a potential bug when using bccwin32 Index: ruby_1_8/version.h =================================================================== --- ruby_1_8/version.h (revision 30067) +++ ruby_1_8/version.h (revision 30068) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.8.8" -#define RUBY_RELEASE_DATE "2010-12-01" +#define RUBY_RELEASE_DATE "2010-12-03" #define RUBY_VERSION_CODE 188 -#define RUBY_RELEASE_CODE 20101201 +#define RUBY_RELEASE_CODE 20101203 #define RUBY_PATCHLEVEL -1 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 8 #define RUBY_RELEASE_YEAR 2010 #define RUBY_RELEASE_MONTH 12 -#define RUBY_RELEASE_DAY 1 +#define RUBY_RELEASE_DAY 3 #define NO_STRING_LITERAL_CONCATENATION 1 #ifdef RUBY_EXTERN Index: ruby_1_8/lib/mkmf.rb =================================================================== --- ruby_1_8/lib/mkmf.rb (revision 30067) +++ ruby_1_8/lib/mkmf.rb (revision 30068) @@ -1006,14 +1006,7 @@ x ? super : "failed" end checking_for checking_message("size of #{type}", headers), fmt do - if UNIVERSAL_INTS.include?(type) - type - elsif size = UNIVERSAL_INTS.find {|t| - try_static_assert("#{expr} == sizeof(#{t})", prelude, opts, &b) - } - $defs.push(format("-DSIZEOF_%s=SIZEOF_%s", type.tr_cpp, size.tr_cpp)) - size - elsif size = try_constant(expr, prelude, opts, &b) + if size = try_constant(expr, prelude, opts, &b) $defs.push(format("-DSIZEOF_%s=%s", type.tr_cpp, size)) size end Index: ruby_1_8/test/mkmf/test_sizeof.rb =================================================================== --- ruby_1_8/test/mkmf/test_sizeof.rb (revision 0) +++ ruby_1_8/test/mkmf/test_sizeof.rb (revision 30068) @@ -0,0 +1,18 @@ +require File.join(File.dirname(__FILE__), 'base') + +class TestMkmf + class TestSizeof < TestMkmf + def test_sizeof_builtin + %w[char short int long float double void*].each do |type| + assert_kind_of(Integer, mkmf {check_sizeof(type)}) + end + end + + def test_sizeof_struct + open("confdefs.h", "w") {|f| + f.puts "typedef struct {char x;} test1_t;" + } + assert_equal(1, mkmf {check_sizeof("test1_t", "confdefs.h")}) + end + end +end Property changes on: ruby_1_8/test/mkmf/test_sizeof.rb ___________________________________________________________________ Added: svn:eol-style + LF Index: ruby_1_8/test/mkmf/test_find_executable.rb =================================================================== --- ruby_1_8/test/mkmf/test_find_executable.rb (revision 0) +++ ruby_1_8/test/mkmf/test_find_executable.rb (revision 30068) @@ -0,0 +1,36 @@ +require File.join(File.dirname(__FILE__), 'base') + +class TestMkmf + class TestFindExecutable < TestMkmf + class F + def do_find_executable(name) + find_executable(name) + end + end + + def test_find_executable + bug2669 = '[ruby-core:27912]' + path, ENV["PATH"] = ENV["PATH"], path + ENV["PATH"] = @tmpdir + f = F.new + name = "foobar#{$$}#{rand(1000)}" + if /mswin\d|mingw|cygwin/ =~ RUBY_PLATFORM + exts = %w[.exe .com .cmd .bat] + else + exts = [""] + end + exts.each do |ext| + full = name+ext + begin + open(full, "w") {|ff| ff.chmod(0755)} + result = f.do_find_executable(name) + ensure + File.unlink(full) + end + assert_equal("#{@tmpdir}/#{name}#{ext}", result, bug2669) + end + ensure + ENV["PATH"] = path + end + end +end Property changes on: ruby_1_8/test/mkmf/test_find_executable.rb ___________________________________________________________________ Added: svn:eol-style + LF Index: ruby_1_8/test/mkmf/base.rb =================================================================== --- ruby_1_8/test/mkmf/base.rb (revision 0) +++ ruby_1_8/test/mkmf/base.rb (revision 30068) @@ -0,0 +1,37 @@ +require 'test/unit' +require 'mkmf' +require 'tmpdir' + +$extout = '$(topdir)/'+RbConfig::CONFIG["EXTOUT"] +RbConfig::CONFIG['topdir'] = CONFIG['topdir'] = File.expand_path(CONFIG['topdir']) +RbConfig::CONFIG["extout"] = CONFIG["extout"] = $extout +$INCFLAGS << " -I." +$extout_prefix = "$(extout)$(target_prefix)/" + +class TestMkmf < Test::Unit::TestCase + def setup + @tmpdir = Dir.mktmpdir + @curdir = Dir.pwd + @mkmfobj = Object.new + Dir.chdir(@tmpdir) + class << (@output = "") + def flush; end + def reopen(*) end + alias write << + end + $stdout = @output + end + + def teardown + $stdout = STDOUT + Dir.chdir(@curdir) + FileUtils.rm_rf(@tmpdir) + end + + def mkmf(*args, &block) + @mkmfobj.instance_eval(*args, &block) + end + + def default_test + end +end Property changes on: ruby_1_8/test/mkmf/base.rb ___________________________________________________________________ Added: svn:eol-style + LF -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/