Skip to content

Commit f5872d0

Browse files
author
Thibault Jouan
committed
Check gems dir existence before removing bundler
In `Gem::Commands::SetupCommand#install_default_bundler_gem', check if gems directory exists before attempting to uninstall potential bundler gems, else `Dir.entries' might fail: env \ GEM_HOME=/wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby/gems/2.4 \ /usr/local/bin/ruby24 setup.rb \ --destdir=/wrkdirs/usr/ports/devel/ruby-gems/work/stage \ --backtrace ERROR: While executing gem ... (Errno::ENOENT) No such file or directory @ dir_initialize - /usr/local/lib/ruby/gems/2.4/gems /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/commands/setup_command.rb:371:in `open' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/commands/setup_command.rb:371:in `entries' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/commands/setup_command.rb:371:in `install_default_bundler_gem' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/commands/setup_command.rb:151:in `execute' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/command.rb:310:in `invoke_with_build_args' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/command_manager.rb:171:in `process_args' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/command_manager.rb:141:in `run' /wrkdirs/usr/ports/devel/ruby-gems/work/rubygems-2.7.2/lib/rubygems/gem_runner.rb:59:in `run' setup.rb:46:in `<main>'
1 parent 4a04596 commit f5872d0

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

lib/rubygems/commands/setup_command.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,9 +372,11 @@ def install_default_bundler_gem
372372

373373
bundler_spec = Gem::Specification.load(default_spec_path)
374374

375-
Dir.entries(bundler_spec.gems_dir).
376-
select {|default_gem| File.basename(default_gem).match(/^bundler-#{Gem::Version::VERSION_PATTERN}$/) }.
377-
each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) }
375+
if File.directory? bundler_spec.gems_dir
376+
Dir.entries(bundler_spec.gems_dir).
377+
select {|default_gem| File.basename(default_gem).match(/^bundler-#{Gem::Version::VERSION_PATTERN}$/) }.
378+
each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) }
379+
end
378380

379381
mkdir_p bundler_spec.bin_dir
380382
bundler_spec.executables.each {|e| cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_spec.bin_dir, e) }

0 commit comments

Comments
 (0)