[rubygems/rubygems] Fix ruby setup.rb --destdir /foo modifying global specs

Running a command like that is actually removing any previous default
bundler specs in the default RubyGems installation (outside of destdir).
It should instead only modify destdir.

5ed275383c
This commit is contained in:
David Rodríguez 2022-07-16 13:17:58 +02:00 committed by git
parent fae0d60120
commit fa5724cca9
2 changed files with 12 additions and 4 deletions

View file

@ -361,17 +361,17 @@ By default, this RubyGems will install gem as:
def install_default_bundler_gem(bin_dir)
current_default_spec = Gem::Specification.default_stubs.find {|s| s.name == "bundler" }
specs_dir = if current_default_spec
specs_dir = if current_default_spec && default_dir == Gem.default_dir
Gem::Specification.remove_spec current_default_spec
loaded_from = current_default_spec.loaded_from
File.delete(loaded_from)
File.dirname(loaded_from)
else
File.join(default_dir, "specifications", "default")
target_specs_dir = File.join(default_dir, "specifications", "default")
mkdir_p target_specs_dir, :mode => 0755
target_specs_dir
end
mkdir_p specs_dir, :mode => 0755
bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
default_spec_path = File.join(specs_dir, "#{bundler_spec.full_name}.gemspec")
Gem.write_binary(default_spec_path, bundler_spec.to_ruby)