summaryrefslogtreecommitdiff
path: root/lib/rubygems/request_set.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/request_set.rb')
-rw-r--r--lib/rubygems/request_set.rb23
1 files changed, 14 insertions, 9 deletions
diff --git a/lib/rubygems/request_set.rb b/lib/rubygems/request_set.rb
index b760a05d9b..5541e64b88 100644
--- a/lib/rubygems/request_set.rb
+++ b/lib/rubygems/request_set.rb
@@ -1,4 +1,4 @@
-# frozen_string_literal: false
+# frozen_string_literal: true
require 'tsort'
##
@@ -78,6 +78,11 @@ class Gem::RequestSet
attr_reader :vendor_set # :nodoc:
##
+ # The set of source gems imported via load_gemdeps.
+
+ attr_reader :source_set
+
+ ##
# Creates a RequestSet for a list of Gem::Dependency objects, +deps+. You
# can then #resolve and #install the resolved list of dependencies.
#
@@ -106,6 +111,7 @@ class Gem::RequestSet
@sorted = nil
@specs = nil
@vendor_set = nil
+ @source_set = nil
yield self if block_given?
end
@@ -143,7 +149,6 @@ class Gem::RequestSet
return requests
end
- cache_dir = options[:cache_dir] || Gem.dir
@prerelease = options[:prerelease]
requests = []
@@ -158,13 +163,11 @@ class Gem::RequestSet
end
end
- path = req.download cache_dir
-
- inst = Gem::Installer.at path, options
-
- yield req, inst if block_given?
+ spec = req.spec.install options do |installer|
+ yield req, installer if block_given?
+ end
- requests << inst.install
+ requests << spec
end
return requests if options[:gemdeps]
@@ -272,10 +275,11 @@ class Gem::RequestSet
def load_gemdeps path, without_groups = [], installing = false
@git_set = Gem::Resolver::GitSet.new
@vendor_set = Gem::Resolver::VendorSet.new
+ @source_set = Gem::Resolver::SourceSet.new
@git_set.root_dir = @install_dir
- lock_file = "#{File.expand_path(path)}.lock".untaint
+ lock_file = "#{File.expand_path(path)}.lock".dup.untaint
begin
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file lock_file
parser = tokenizer.make_parser self, []
@@ -339,6 +343,7 @@ class Gem::RequestSet
@sets << set
@sets << @git_set
@sets << @vendor_set
+ @sets << @source_set
set = Gem::Resolver.compose_sets(*@sets)
set.remote = @remote