summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--lib/rubygems/ext/cmake_builder.rb2
-rw-r--r--lib/rubygems/ext/configure_builder.rb2
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb2
-rw-r--r--lib/rubygems/ext/rake_builder.rb3
-rw-r--r--lib/rubygems/installer.rb1
-rw-r--r--lib/rubygems/request_set.rb22
-rw-r--r--lib/rubygems/specification.rb23
-rw-r--r--test/rubygems/test_gem.rb1
-rw-r--r--test/rubygems/test_gem_specification.rb9
10 files changed, 61 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index aa1584a458..d860483270 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Thu Oct 17 07:36:53 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 2abce58. Changes:
+
+ Fixed documentation generation when sdoc and json are installed as
+ gems.
+
+ Added some missing documentation.
+
Thu Oct 17 07:10:26 2013 Zachary Scott <e@zzak.io>
* ext/curses/curses.c: [DOC] Cleaned up formatting consistency of rdoc
diff --git a/lib/rubygems/ext/cmake_builder.rb b/lib/rubygems/ext/cmake_builder.rb
index d6d106f4ae..17bd6c296e 100644
--- a/lib/rubygems/ext/cmake_builder.rb
+++ b/lib/rubygems/ext/cmake_builder.rb
@@ -1,3 +1,5 @@
+require 'rubygems/command'
+
class Gem::Ext::CmakeBuilder < Gem::Ext::Builder
def self.build(extension, directory, dest_path, results)
unless File.exist?('Makefile') then
diff --git a/lib/rubygems/ext/configure_builder.rb b/lib/rubygems/ext/configure_builder.rb
index ef8b29e427..2a542e6bd0 100644
--- a/lib/rubygems/ext/configure_builder.rb
+++ b/lib/rubygems/ext/configure_builder.rb
@@ -4,8 +4,6 @@
# See LICENSE.txt for permissions.
#++
-require 'rubygems/ext/builder'
-
class Gem::Ext::ConfigureBuilder < Gem::Ext::Builder
def self.build(extension, directory, dest_path, results, args=[])
diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb
index 5112eb8e2f..9a656a30a3 100644
--- a/lib/rubygems/ext/ext_conf_builder.rb
+++ b/lib/rubygems/ext/ext_conf_builder.rb
@@ -4,8 +4,6 @@
# See LICENSE.txt for permissions.
#++
-require 'rubygems/ext/builder'
-require 'rubygems/command'
require 'fileutils'
require 'tempfile'
diff --git a/lib/rubygems/ext/rake_builder.rb b/lib/rubygems/ext/rake_builder.rb
index 2ac6edd5c8..984c54bc1b 100644
--- a/lib/rubygems/ext/rake_builder.rb
+++ b/lib/rubygems/ext/rake_builder.rb
@@ -4,9 +4,6 @@
# See LICENSE.txt for permissions.
#++
-require 'rubygems/ext/builder'
-require 'rubygems/command'
-
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
def self.build(extension, directory, dest_path, results, args=[])
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 5b12f418f0..2e7ccc731e 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -4,6 +4,7 @@
# See LICENSE.txt for permissions.
#++
+require 'rubygems/command'
require 'rubygems/exceptions'
require 'rubygems/package'
require 'rubygems/ext'
diff --git a/lib/rubygems/request_set.rb b/lib/rubygems/request_set.rb
index bce6308d6d..3ff3e83ca6 100644
--- a/lib/rubygems/request_set.rb
+++ b/lib/rubygems/request_set.rb
@@ -5,6 +5,19 @@ require 'rubygems/dependency_list'
require 'rubygems/installer'
require 'tsort'
+##
+# A RequestSet groups a request to activate a set of dependencies.
+#
+# nokogiri = Gem::Dependency.new 'nokogiri', '~> 1.6'
+# pg = Gem::Dependency.new 'pg', '~> 0.14'
+#
+# set = Gem::RequestSet.new nokogiri, pg
+#
+# requests = set.resolve
+#
+# p requests.map { |r| r.full_name }
+# #=> ["nokogiri-1.6.0", "mini_portile-0.5.1", "pg-0.17.0"]
+
class Gem::RequestSet
include TSort
@@ -23,6 +36,15 @@ class Gem::RequestSet
attr_accessor :soft_missing
+ ##
+ # Creates a RequestSet for a list of Gem::Dependency objects, +deps+. You
+ # can then #resolve and #install the resolved list of dependencies.
+ #
+ # nokogiri = Gem::Dependency.new 'nokogiri', '~> 1.6'
+ # pg = Gem::Dependency.new 'pg', '~> 0.14'
+ #
+ # set = Gem::RequestSet.new nokogiri, pg
+
def initialize *deps
@dependencies = deps
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 0bbef639ec..f63f6282d3 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1390,16 +1390,27 @@ class Gem::Specification < Gem::BasicSpecification
def build_extensions # :nodoc:
return if default_gem?
+ return if extensions.empty?
return if File.exist? gem_build_complete_path
return if !File.writable?(base_dir) &&
!File.exist?(File.join(base_dir, 'extensions'))
- gem_original_require 'rubygems/ext'
- gem_original_require 'rubygems/user_interaction'
-
- Gem::DefaultUserInteraction.use_ui Gem::SilentUI.new do
- builder = Gem::Ext::Builder.new self
- builder.build_extensions
+ begin
+ # We need to require things in $LOAD_PATH without looking for the
+ # extension we are about to build.
+ unresolved_deps = Gem::Specification.unresolved_deps.dup
+ Gem::Specification.unresolved_deps.clear
+
+ require 'rubygems/config_file'
+ require 'rubygems/ext'
+ require 'rubygems/user_interaction'
+
+ Gem::DefaultUserInteraction.use_ui Gem::SilentUI.new do
+ builder = Gem::Ext::Builder.new self
+ builder.build_extensions
+ end
+ ensure
+ Gem::Specification.unresolved_deps.replace unresolved_deps
end
end
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index ac40d97c15..a320d54884 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1,6 +1,7 @@
# coding: US-ASCII
require 'rubygems/test_case'
require 'rubygems'
+require 'rubygems/command'
require 'rubygems/installer'
require 'pathname'
require 'tmpdir'
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index 9f7c354334..8efae025e7 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -1210,6 +1210,15 @@ dependencies: []
FileUtils.chmod 0755, @gemhome
end
+ def test_build_extensions_none
+ refute_path_exists @a1.extension_install_dir, 'sanity check'
+ assert_empty @a1.extensions, 'sanity check'
+
+ @a1.build_extensions
+
+ refute_path_exists @a1.extension_install_dir
+ end
+
def test_contains_requirable_file_eh
code_rb = File.join @a1.gem_dir, 'lib', 'code.rb'
FileUtils.mkdir_p File.dirname code_rb