summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtool/rbinstall.rb16
1 files changed, 11 insertions, 5 deletions
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index e94146e11a..c72a93f948 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -220,15 +220,20 @@ def ln_sf(src, dest)
end
$made_dirs = {}
+
+def dir_creating(dir)
+ $made_dirs.fetch(dir) do
+ $made_dirs[dir] = true
+ $installed_list.puts(File.join(dir, "")) if $installed_list
+ yield if defined?(yield)
+ end
+end
+
def makedirs(dirs)
dirs = fu_list(dirs)
dirs.collect! do |dir|
realdir = with_destdir(dir)
- realdir unless $made_dirs.fetch(dir) do
- $made_dirs[dir] = true
- $installed_list.puts(File.join(dir, "")) if $installed_list
- File.directory?(realdir)
- end
+ realdir unless dir_creating(dir) {File.directory?(realdir)}
end.compact!
super(dirs, :mode => $dir_mode) unless dirs.empty?
end
@@ -667,6 +672,7 @@ module RbInstall
def install
spec.post_install_message = nil
+ dir_creating(without_destdir(gem_dir))
RbInstall.no_write(options) {super}
end