From 7112c6a1c15b26eebf0c020dfee7abd30eebde2d Mon Sep 17 00:00:00 2001 From: hsbt Date: Tue, 6 Feb 2018 02:58:35 +0000 Subject: Merge RubyGems-2.7.5 from upstream. Please see its details: http://blog.rubygems.org/2018/02/06/2.7.5-released.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/commands/generate_index_command.rb | 2 +- lib/rubygems/commands/setup_command.rb | 29 +++++++++++++++++++------ lib/rubygems/commands/unpack_command.rb | 4 ++-- 3 files changed, 25 insertions(+), 10 deletions(-) (limited to 'lib/rubygems/commands') diff --git a/lib/rubygems/commands/generate_index_command.rb b/lib/rubygems/commands/generate_index_command.rb index 01f1f88405..0b677b73a9 100644 --- a/lib/rubygems/commands/generate_index_command.rb +++ b/lib/rubygems/commands/generate_index_command.rb @@ -68,7 +68,7 @@ Marshal::MINOR_VERSION constants. It is used to ensure compatibility. if not File.exist?(options[:directory]) or not File.directory?(options[:directory]) then - alert_error "unknown directory name #{directory}." + alert_error "unknown directory name #{options[:directory]}." terminate_interaction 1 else indexer = Gem::Indexer.new options.delete(:directory), options diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 5d1414d102..6966cde01a 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -350,7 +350,9 @@ By default, this RubyGems will install gem as: def install_default_bundler_gem return unless Gem::USE_BUNDLER_FOR_GEMDEPS - mkdir_p Gem::Specification.default_specifications_dir + specs_dir = Gem::Specification.default_specifications_dir + File.join(options[:destdir], specs_dir) unless Gem.win_platform? + mkdir_p specs_dir # Workaround for non-git environment. gemspec = File.open('bundler/bundler.gemspec', 'rb'){|f| f.read.gsub(/`git ls-files -z`/, "''") } @@ -359,23 +361,36 @@ By default, this RubyGems will install gem as: bundler_spec = Gem::Specification.load("bundler/bundler.gemspec") bundler_spec.files = Dir.chdir("bundler") { Dir["{*.md,{lib,exe,man}/**/*}"] } bundler_spec.executables -= %w[bundler bundle_ruby] - Dir.entries(Gem::Specification.default_specifications_dir). + + # Remove bundler-*.gemspec in default specification directory. + Dir.entries(specs_dir). select {|gs| gs.start_with?("bundler-") }. - each {|gs| File.delete(File.join(Gem::Specification.default_specifications_dir, gs)) } + each {|gs| File.delete(File.join(specs_dir, gs)) } - default_spec_path = File.join(Gem::Specification.default_specifications_dir, "#{bundler_spec.full_name}.gemspec") + default_spec_path = File.join(specs_dir, "#{bundler_spec.full_name}.gemspec") Gem.write_binary(default_spec_path, bundler_spec.to_ruby) bundler_spec = Gem::Specification.load(default_spec_path) + # Remove gemspec that was same version of vendored bundler. + normal_gemspec = File.join(Gem.default_dir, "specifications", "bundler-#{bundler_spec.version}.gemspec") + if File.file? normal_gemspec + File.delete normal_gemspec + end + + # Remove gem files that were same version of vendored bundler. if File.directory? bundler_spec.gems_dir Dir.entries(bundler_spec.gems_dir). - select {|default_gem| File.basename(default_gem).match(/^bundler-#{Gem::Version::VERSION_PATTERN}$/) }. + select {|default_gem| File.basename(default_gem) == "bundler-#{bundler_spec.version}" }. each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) } end - mkdir_p bundler_spec.bin_dir - bundler_spec.executables.each {|e| cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_spec.bin_dir, e) } + bundler_bin_dir = File.join(Gem.default_dir, 'gems', bundler_spec.full_name, bundler_spec.bindir) + File.join(options[:destdir], bundler_bin_dir) unless Gem.win_platform? + mkdir_p bundler_bin_dir + bundler_spec.executables.each do |e| + cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e) + end if Gem.win_platform? require 'rubygems/installer' diff --git a/lib/rubygems/commands/unpack_command.rb b/lib/rubygems/commands/unpack_command.rb index eb7f550673..b873f20d28 100644 --- a/lib/rubygems/commands/unpack_command.rb +++ b/lib/rubygems/commands/unpack_command.rb @@ -94,7 +94,7 @@ command help for an example. spec_file = File.basename spec.spec_file - open spec_file, 'w' do |io| + File.open spec_file, 'w' do |io| io.write metadata end else @@ -176,7 +176,7 @@ command help for an example. metadata = nil - open path, Gem.binary_mode do |io| + File.open path, Gem.binary_mode do |io| tar = Gem::Package::TarReader.new io tar.each_entry do |entry| case entry.full_name -- cgit v1.2.3