summaryrefslogtreecommitdiff
path: root/misc/rubygems/patches/patch-ad
blob: bd0595fbb24fd0ff353d89c065937e5a4b8f3c57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
$NetBSD: patch-ad,v 1.2 2008/03/31 15:40:43 jlam Exp $

--- lib/rubygems/installer.rb.orig	2008-03-28 21:10:33.000000000 -0400
+++ lib/rubygems/installer.rb
@@ -51,6 +51,9 @@ class Gem::Installer
   #          for a signed-gems-only policy.
   # :ignore_dependencies:: Don't raise if a dependency is missing.
   # :install_dir:: The directory to install the gem into.
+  # :install_root:: The directory to use as a buildroot for "destdir"-style
+  #		  installation.  All paths during installation are relative
+  #               to the buildroot.
   # :format_executable:: Format the executable the same as the ruby executable.
   #                      If your ruby is ruby18, foo_exec will be installed as
   #                      foo_exec18.
@@ -62,6 +65,7 @@ class Gem::Installer
     options = {
       :force => false,
       :install_dir => Gem.dir,
+      :install_root => nil,
       :exec_format => false,
       :env_shebang => false,
       :bin_dir => nil
@@ -70,12 +74,17 @@ class Gem::Installer
     @env_shebang = options[:env_shebang]
     @force = options[:force]
     gem_home = options[:install_dir]
-    @gem_home = Pathname.new(gem_home).expand_path
+    @gem_home = File.expand_path gem_home
     @ignore_dependencies = options[:ignore_dependencies]
     @format_executable = options[:format_executable]
     @security_policy = options[:security_policy]
     @wrappers = options[:wrappers]
     @bin_dir = options[:bin_dir]
+    install_root = options[:install_root]
+    unless install_root.nil? or install_root == ""
+      @install_root = File.expand_path install_root
+      @gem_home = File.join(@install_root, @gem_home)
+    end
 
     begin
       @format = Gem::Format.from_file_by_path @gem, @security_policy
@@ -227,7 +236,11 @@ class Gem::Installer
     # If the user has asked for the gem to be installed in a directory that is
     # the system gem directory, then use the system bin directory, else create
     # (or use) a new bin dir under the gem_home.
-    bindir = @bin_dir ? @bin_dir : (Gem.bindir @gem_home)
+    bindir = @bin_dir ? @bin_dir : (Gem.bindir @gem_home, @install_root)
+
+    unless @install_root.nil? or @install_root == ""
+      bindir = File.join(@install_root, bindir)
+    end
 
     Dir.mkdir bindir unless File.exist? bindir
     raise Gem::FilePermissionError.new(bindir) unless File.writable? bindir