diff options
author | David RodrÃguez <[email protected]> | 2022-02-09 17:11:52 +0100 |
---|---|---|
committer | git <[email protected]> | 2022-02-11 18:20:20 +0900 |
commit | 7b676b3ce383c0b43a81694f80fbb424ee753213 (patch) | |
tree | 290fdcce68bee611b5d102ca7da3e5dd6e94ec2e /lib | |
parent | 22bf6e43937a198b94230b7a496983bf816551c6 (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.rb | 3 | ||||
-rw-r--r-- | lib/bundler/source_map.rb | 17 |
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 |