From c2f376bcc006c3602ffd005fa1cb3cdf5c9d97fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Sun, 25 Jul 2021 16:23:15 +0200 Subject: [rubygems/rubygems] Fix standalone install of default gems Rubygems source replacement was broken. https://github.com/rubygems/rubygems/commit/3549c122f6 --- lib/bundler/lockfile_parser.rb | 1 + lib/bundler/source_list.rb | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/bundler/lockfile_parser.rb b/lib/bundler/lockfile_parser.rb index afc21fd006..8d0e44d0ae 100644 --- a/lib/bundler/lockfile_parser.rb +++ b/lib/bundler/lockfile_parser.rb @@ -195,6 +195,7 @@ module Bundler platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY @current_spec = LazySpecification.new(name, version, platform) @current_spec.source = @current_source + @current_source.add_dependency_names(name) @specs[@current_spec.identifier] = @current_spec elsif spaces.size == 6 diff --git a/lib/bundler/source_list.rb b/lib/bundler/source_list.rb index c7dfa3d797..1c0105bf7e 100644 --- a/lib/bundler/source_list.rb +++ b/lib/bundler/source_list.rb @@ -121,7 +121,8 @@ module Bundler def replace_sources!(replacement_sources) return false if replacement_sources.empty? - @path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources) + @rubygems_sources, @path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources) + @global_rubygems_source = global_replacement_source(replacement_sources) different_sources?(lock_sources, replacement_sources) end @@ -156,13 +157,21 @@ module Bundler end def map_sources(replacement_sources) - [path_sources, git_sources, plugin_sources].map do |sources| + [@rubygems_sources, @path_sources, @git_sources, @plugin_sources].map do |sources| sources.map do |source| replacement_sources.find {|s| s == source } || source end end end + def global_replacement_source(replacement_sources) + replacement_source = replacement_sources.find {|s| s == global_rubygems_source } + return global_rubygems_source unless replacement_source + + replacement_source.local! + replacement_source + end + def different_sources?(lock_sources, replacement_sources) !equal_sources?(lock_sources, replacement_sources) && !equivalent_sources?(lock_sources, replacement_sources) end -- cgit v1.2.3