summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2022-02-09 17:11:52 +0100
committergit <svn-admin@ruby-lang.org>2022-02-11 18:20:20 +0900
commit7b676b3ce383c0b43a81694f80fbb424ee753213 (patch)
tree290fdcce68bee611b5d102ca7da3e5dd6e94ec2e /lib
parent22bf6e43937a198b94230b7a496983bf816551c6 (diff)
[rubygems/rubygems] Fix corrupted lockfile when using `gemspec` and multiple sources
https://github.com/rubygems/rubygems/commit/9712262d90
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/definition.rb3
-rw-r--r--lib/bundler/source_map.rb17
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index 77f065c5c7..20b5340203 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -786,6 +786,7 @@ module Bundler
else
{ :default => Source::RubygemsAggregate.new(sources, source_map) }.merge(source_map.direct_requirements)
end
+ source_requirements.merge!(source_map.locked_requirements) unless @remote
metadata_dependencies.each do |dep|
source_requirements[dep.name] = sources.metadata_source
end
@@ -832,7 +833,7 @@ module Bundler
end
def source_map
- @source_map ||= SourceMap.new(sources, dependencies)
+ @source_map ||= SourceMap.new(sources, dependencies, @locked_specs)
end
end
end
diff --git a/lib/bundler/source_map.rb b/lib/bundler/source_map.rb
index a554f26f76..ca73e01f9d 100644
--- a/lib/bundler/source_map.rb
+++ b/lib/bundler/source_map.rb
@@ -2,11 +2,12 @@
module Bundler
class SourceMap
- attr_reader :sources, :dependencies
+ attr_reader :sources, :dependencies, :locked_specs
- def initialize(sources, dependencies)
+ def initialize(sources, dependencies, locked_specs)
@sources = sources
@dependencies = dependencies
+ @locked_specs = locked_specs
end
def pinned_spec_names(skip = nil)
@@ -54,5 +55,17 @@ module Bundler
requirements
end
end
+
+ def locked_requirements
+ @locked_requirements ||= begin
+ requirements = {}
+ locked_specs.each do |locked_spec|
+ source = locked_spec.source
+ source.add_dependency_names(locked_spec.name)
+ requirements[locked_spec.name] = source
+ end
+ requirements
+ end
+ end
end
end