aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-16 20:18:29 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-16 20:18:29 +0000
commite80f2c118a557f8e387b8b7ab0a1de7a5b3dc1e2 (patch)
tree96545f820c4322a223548f03951c34ed638ca9c6
parent45c858d918e56015dd08512982752e85f6f4006d (diff)
downloadruby-e80f2c118a557f8e387b8b7ab0a1de7a5b3dc1e2.tar.gz
* lib/rubygems: Update to RubyGems master 1c5f4b3. Allows rubygems
repackagers to disable backward-compatible shared gem directory behavior. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--lib/rubygems/defaults.rb8
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb2
-rw-r--r--test/rubygems/test_gem_ext_builder.rb49
4 files changed, 65 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 3bfc61a268..bc5658652d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Tue Dec 17 05:18:17 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 1c5f4b3. Allows rubygems
+ repackagers to disable backward-compatible shared gem directory
+ behavior.
+ * test/rubygems: ditto.
+
Tue Dec 17 05:14:35 2013 Eric Hodel <drbrain@segment7.net>
* NEWS (RDoc): Update version number so I don't have to change it
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index e4bf4e5a7f..715c0b71b3 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -152,4 +152,12 @@ module Gem
def self.default_gems_use_full_paths?
ruby_engine != 'ruby'
end
+
+ ##
+ # Install extensions into lib as well as into the extension directory.
+
+ def self.install_extension_in_lib # :nodoc:
+ true
+ end
+
end
diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb
index 84d4609017..402aa966c0 100644
--- a/lib/rubygems/ext/ext_conf_builder.rb
+++ b/lib/rubygems/ext/ext_conf_builder.rb
@@ -44,7 +44,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
if tmp_dest
# TODO remove in RubyGems 3
- if lib_dir then
+ if Gem.install_extension_in_lib and lib_dir then
FileUtils.mkdir_p lib_dir
entries = Dir.entries(tmp_dest) - %w[. ..]
entries = entries.map { |entry| File.join tmp_dest, entry }
diff --git a/test/rubygems/test_gem_ext_builder.rb b/test/rubygems/test_gem_ext_builder.rb
index eea8488b63..3b9cb0ac4e 100644
--- a/test/rubygems/test_gem_ext_builder.rb
+++ b/test/rubygems/test_gem_ext_builder.rb
@@ -132,6 +132,55 @@ install:
assert_path_exists File.join @spec.gem_dir, 'lib', 'a', 'b.rb'
end
+ def test_build_extensions_install_ext_only
+ class << Gem
+ alias orig_install_extension_in_lib install_extension_in_lib
+
+ def Gem.install_extension_in_lib
+ false
+ end
+ end
+
+ @spec.extensions << 'ext/extconf.rb'
+
+ ext_dir = File.join @spec.gem_dir, 'ext'
+
+ FileUtils.mkdir_p ext_dir
+
+ extconf_rb = File.join ext_dir, 'extconf.rb'
+
+ open extconf_rb, 'w' do |f|
+ f.write <<-'RUBY'
+ require 'mkmf'
+
+ create_makefile 'a'
+ RUBY
+ end
+
+ ext_lib_dir = File.join ext_dir, 'lib'
+ FileUtils.mkdir ext_lib_dir
+ FileUtils.touch File.join ext_lib_dir, 'a.rb'
+ FileUtils.mkdir File.join ext_lib_dir, 'a'
+ FileUtils.touch File.join ext_lib_dir, 'a', 'b.rb'
+
+ use_ui @ui do
+ @builder.build_extensions
+ end
+
+ assert_path_exists @spec.extension_dir
+ assert_path_exists @spec.gem_build_complete_path
+ assert_path_exists File.join @spec.extension_dir, 'gem_make.out'
+ assert_path_exists File.join @spec.extension_dir, 'a.rb'
+ refute_path_exists File.join @spec.gem_dir, 'lib', 'a.rb'
+ refute_path_exists File.join @spec.gem_dir, 'lib', 'a', 'b.rb'
+ ensure
+ class << Gem
+ remove_method :install_extension_in_lib
+
+ alias install_extension_in_lib orig_install_extension_in_lib
+ end
+ end
+
def test_build_extensions_none
use_ui @ui do
@builder.build_extensions