diff --git a/ChangeLog b/ChangeLog index 4de9538603..5900512d6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Fri Oct 18 06:02:49 2013 Eric Hodel + + * lib/rubygems: Update to RubyGems master f738c67. Changes: + + Fixed test bug for ruby with ENABLE_SHARED = no + + * test/rubygems: ditto. + Fri Oct 18 00:57:07 2013 Tanaka Akira * lib/tsort.rb (TSort.tsort): Extracted from TSort#tsort. diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 7ad35c0c4c..1c84356bd7 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -438,6 +438,18 @@ module Gem File.umask old_umask end + ## + # The extension API version of ruby. This includes the static vs non-static + # distinction as extensions cannot be shared between the two. + + def self.extension_api_version # :nodoc: + if 'no' == RbConfig::CONFIG['ENABLE_SHARED'] then + "#{ruby_api_version}-static" + else + ruby_api_version + end + end + ## # Returns a list of paths matching +glob+ that can be used by a gem to pick # up features from other gems. For example: diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb index 5afa7ee14c..7f738155c9 100644 --- a/lib/rubygems/basic_specification.rb +++ b/lib/rubygems/basic_specification.rb @@ -63,15 +63,8 @@ class Gem::BasicSpecification # end def extension_install_dir - ruby_api_version = - if 'no' == RbConfig::CONFIG['ENABLE_SHARED'] then - "#{Gem.ruby_api_version}-static" - else - Gem.ruby_api_version - end - File.join base_dir, 'extensions', Gem::Platform.local.to_s, - ruby_api_version, full_name + Gem.extension_api_version, full_name end def find_full_gem_path # :nodoc: @@ -184,7 +177,7 @@ class Gem::BasicSpecification relative_extension_install_dir = File.join '..', '..', '..', 'extensions', Gem::Platform.local.to_s, - Gem.ruby_api_version, full_name + Gem.extension_api_version, full_name @require_paths + [relative_extension_install_dir] end diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index a320d54884..88d0b1c432 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -338,6 +338,24 @@ class TestGem < Gem::TestCase end end + def test_self_extension_install_dir_shared + enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] = + RbConfig::CONFIG['ENABLE_SHARED'], 'yes' + + assert_equal Gem.ruby_api_version, Gem.extension_api_version + ensure + RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared + end + + def test_self_extension_install_dir_static + enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] = + RbConfig::CONFIG['ENABLE_SHARED'], 'no' + + assert_equal "#{Gem.ruby_api_version}-static", Gem.extension_api_version + ensure + RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared + end + def test_self_find_files cwd = File.expand_path("test/rubygems", @@project_dir) $LOAD_PATH.unshift cwd diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 8efae025e7..5f7c64dd9d 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -1366,24 +1366,7 @@ dependencies: [] assert_equal ['ext/extconf.rb'], ext_spec.extensions end - def test_extension_install_dir_shared - enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] = - RbConfig::CONFIG['ENABLE_SHARED'], 'yes' - - ext_spec - - refute_empty @ext.extensions - - expected = - File.join(@ext.base_dir, 'extensions', Gem::Platform.local.to_s, - Gem.ruby_api_version,@ext.full_name) - - assert_equal expected, @ext.extension_install_dir - ensure - RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared - end - - def test_extension_install_dir_static + def test_extension_install_dir enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] = RbConfig::CONFIG['ENABLE_SHARED'], 'no' @@ -1667,6 +1650,9 @@ dependencies: [] end def test_require_paths + enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] = + RbConfig::CONFIG['ENABLE_SHARED'], 'no' + ext_spec @ext.require_path = 'lib' @@ -1677,6 +1663,8 @@ dependencies: [] Pathname(@ext.extension_install_dir).relative_path_from lib assert_equal ['lib', ext_install_dir.to_s], @ext.require_paths + ensure + RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared end def test_full_require_paths