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-ab,v 1.13 2011/08/12 15:50:44 taca Exp $
Add install_root option for pkgsrc's rubygems support.
--- lib/rubygems/dependency_installer.rb.orig 2011-05-18 23:36:37.000000000 +0000
+++ lib/rubygems/dependency_installer.rb
@@ -38,6 +38,7 @@ class Gem::DependencyInstaller
# :format_executable:: See Gem::Installer#initialize.
# :ignore_dependencies:: Don't install any dependencies.
# :install_dir:: See Gem::Installer#install.
+ # :install_root: See Gem::Installer#install.
# :prerelease:: Allow prerelease versions. See #install.
# :security_policy:: See Gem::Installer::new and Gem::Security.
# :user_install:: See Gem::Installer.new
@@ -45,11 +46,15 @@ class Gem::DependencyInstaller
def initialize(options = {})
if options[:install_dir] then
- @gem_home = options[:install_dir]
+ if options[:install_root].nil? or options[:install_root] == "" then
+ @gem_home = options[:install_root].dup
+ else
+ @gem_home = options[:install_dir].dup
+ end
Gem::Specification.dirs = @gem_home
Gem.ensure_gem_subdirectories @gem_home
- options[:install_dir] = @gem_home # FIX: because we suck and reuse below
+# options[:install_dir] = @gem_home # FIX: because we suck and reuse below
end
options = DEFAULT_OPTIONS.merge options
@@ -69,7 +74,12 @@ class Gem::DependencyInstaller
@installed_gems = []
@install_dir = options[:install_dir] || Gem.dir
- @cache_dir = options[:cache_dir] || @install_dir
+ @install_root = options[:install_root]
+ install_dir = @install_dir
+ unless @install_root.nil? or @install_root == ""
+ install_dir = File.join(@install_root, @install_dir)
+ end
+ @cache_dir = options[:cache_dir] || install_dir
# Set with any errors that SpecFetcher finds while search through
# gemspecs for a dep
@@ -290,6 +300,7 @@ class Gem::DependencyInstaller
:format_executable => @format_executable,
:ignore_dependencies => @ignore_dependencies,
:install_dir => @install_dir,
+ :install_root => @install_root,
:security_policy => @security_policy,
:user_install => @user_install,
:wrappers => @wrappers
|