summaryrefslogtreecommitdiff
path: root/tool/rbinstall.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-01 06:42:00 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-01 06:42:00 +0900
commit9c9531950c007872d7726f050a1dc0cb6f8f0490 (patch)
tree0d778afedc4ce53e5a66c2daebb8c9d3e25bb2e5 /tool/rbinstall.rb
parent8ee24840c844a25c749e7e69017e5a2331c49c1c (diff)
rbinstall.rb: get rid of making directories when dryrun
Diffstat (limited to 'tool/rbinstall.rb')
-rwxr-xr-xtool/rbinstall.rb51
1 files changed, 30 insertions, 21 deletions
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index b7370a8577..7f522e54d1 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -682,6 +682,28 @@ install?(:dbg, :nodefault) do
end
module RbInstall
+ def self.no_write(options = nil)
+ u = File.umask(0022)
+ if $dryrun
+ fu = ::Object.class_eval do
+ fu = remove_const(:FileUtils)
+ const_set(:FileUtils, fu::NoWrite)
+ fu
+ end
+ dir_mode = options.delete(:dir_mode) if options
+ end
+ yield
+ ensure
+ options[:dir_mode] = dir_mode if dir_mode
+ if fu
+ ::Object.class_eval do
+ remove_const(:FileUtils)
+ const_set(:FileUtils, fu)
+ end
+ end
+ File.umask(u)
+ end
+
module Specs
class FileCollector
def initialize(gemspec)
@@ -849,25 +871,7 @@ module RbInstall
class GemInstaller
def install
spec.post_install_message = nil
- u = File.umask(0022)
- if $dryrun
- fu = ::Object.class_eval do
- fu = remove_const(:FileUtils)
- const_set(:FileUtils, fu::NoWrite)
- fu
- end
- dir_mode = options.delete(:dir_mode)
- end
- super
- ensure
- options[:dir_mode] = dir_mode if dir_mode
- if fu
- ::Object.class_eval do
- remove_const(:FileUtils)
- const_set(:FileUtils, fu)
- end
- end
- File.umask(u)
+ RbInstall.no_write(options) {super}
end
def generate_bin_script(filename, bindir)
@@ -930,7 +934,9 @@ def install_default_gem(dir, srcdir, bindir)
gem_dir = Gem.default_dir
install_dir = with_destdir(gem_dir)
prepare "default gems from #{dir}", gem_dir
- makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
+ RbInstall.no_write do
+ makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
+ end
options = {
:install_dir => with_destdir(gem_dir),
@@ -974,7 +980,10 @@ install?(:ext, :comm, :gem, :'bundled-gems') do
gem_dir = Gem.default_dir
install_dir = with_destdir(gem_dir)
prepare "bundled gems", gem_dir
- makedirs(Gem.ensure_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
+ RbInstall.no_write do
+ makedirs(Gem.ensure_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)})
+ end
+
installed_gems = {}
options = {
:install_dir => install_dir,