From a1d96c9f47653d191e3bd1172598087e722b1560 Mon Sep 17 00:00:00 2001 From: drbrain Date: Wed, 16 Oct 2013 22:37:39 +0000 Subject: * lib/rubygems: Update to RubyGems master 2abce58. Changes: Fixed documentation generation when sdoc and json are installed as gems. Added some missing documentation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/ext/cmake_builder.rb | 2 ++ lib/rubygems/ext/configure_builder.rb | 2 -- lib/rubygems/ext/ext_conf_builder.rb | 2 -- lib/rubygems/ext/rake_builder.rb | 3 --- lib/rubygems/installer.rb | 1 + lib/rubygems/request_set.rb | 22 ++++++++++++++++++++++ lib/rubygems/specification.rb | 23 +++++++++++++++++------ 7 files changed, 42 insertions(+), 13 deletions(-) (limited to 'lib/rubygems') 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 -- cgit v1.2.3