components/ruby/ruby-19/patches/07-rubygems_vendor_dir.patch
author April Chin <april.chin@oracle.com>
Fri, 03 Oct 2014 08:23:05 -0700
branchs11u2-sru
changeset 3362 6660993f1e66
permissions -rw-r--r--
19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3362
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     1
# Add a vendor_dir for gems at vendor_ruby/gems/<ruby lib version>, to the end 
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     2
# of GEM PATHS, so gem will search the vendor directory for gems.
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     3
# We can use this directory to install Solaris Ruby modules
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     4
# that we want to package as gems.
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     5
#
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     6
# This is a subset of changes made to Rubygems 2.4.0
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     7
# to fix rubygems issue #943 site_ruby/vendor_ruby equivalent for rubygems
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     8
# https://github.com/rubygems/rubygems/issues/943
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
     9
# We do not add the --vendor option to the gem command,
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    10
# nor do we change the default gem installation directory.
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    11
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    12
diff -rupN ruby-1.9.3-p484-orig/lib/rubygems/defaults.rb ruby-1.9.3-p484/lib/rubygems/defaults.rb
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    13
--- ruby-1.9.3-p484-orig/lib/rubygems/defaults.rb	2012-04-19 15:43:16.000000000 -0700
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    14
+++ ruby-1.9.3-p484/lib/rubygems/defaults.rb	2014-08-05 10:40:08.041798000 -0700
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    15
@@ -61,11 +61,11 @@ module Gem
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    16
   # Default gem load path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    17
 
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    18
   def self.default_path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    19
-    if File.exist? Gem.user_home then
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    20
-      [user_dir, default_dir]
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    21
-    else
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    22
-      [default_dir]
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    23
-    end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    24
+    path = []
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    25
+    path << user_dir if user_home && File.exist?(user_home)
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    26
+    path << default_dir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    27
+    path << vendor_dir if File.directory? vendor_dir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    28
+    path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    29
   end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    30
 
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    31
   ##
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    32
@@ -121,4 +121,13 @@ module Gem
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    33
       'ruby'
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    34
     end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    35
   end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    36
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    37
+  ##
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    38
+  # Directory where vendor gems are installed.
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    39
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    40
+  def self.vendor_dir # :nodoc:
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    41
+    File.join RbConfig::CONFIG['vendordir'], 'gems',
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    42
+              RbConfig::CONFIG['ruby_version']
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    43
+  end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    44
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    45
 end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    46
diff -rupN ruby-1.9.3-p484-orig/test/rubygems/test_gem.rb ruby-1.9.3-p484/test/rubygems/test_gem.rb
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    47
--- ruby-1.9.3-p484-orig/test/rubygems/test_gem.rb	2012-04-19 15:43:16.000000000 -0700
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    48
+++ ruby-1.9.3-p484/test/rubygems/test_gem.rb	2014-08-05 14:04:49.794776000 -0700
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    49
@@ -604,6 +604,45 @@ class TestGem < Gem::TestCase
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    50
     Gem::ConfigMap[:ruby_install_name] = orig_RUBY_INSTALL_NAME
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    51
   end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    52
 
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    53
+  def test_default_path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    54
+    orig_vendordir = RbConfig::CONFIG['vendordir']
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    55
+    RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor'
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    56
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    57
+    FileUtils.rm_rf Gem.user_home
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    58
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    59
+    expected = [Gem.default_dir]
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    60
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    61
+    assert_equal expected, Gem.default_path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    62
+  ensure
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    63
+    RbConfig::CONFIG['vendordir'] = orig_vendordir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    64
+  end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    65
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    66
+  def test_default_path_user_home
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    67
+    orig_vendordir = RbConfig::CONFIG['vendordir']
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    68
+    RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor'
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    69
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    70
+    expected = [Gem.user_dir, Gem.default_dir]
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    71
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    72
+    assert_equal expected, Gem.default_path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    73
+  ensure
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    74
+    RbConfig::CONFIG['vendordir'] = orig_vendordir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    75
+  end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    76
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    77
+  def test_default_path_vendor_dir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    78
+    orig_vendordir = RbConfig::CONFIG['vendordir']
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    79
+    RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor'
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    80
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    81
+    FileUtils.mkdir_p Gem.vendor_dir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    82
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    83
+    FileUtils.rm_rf Gem.user_home
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    84
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    85
+    expected = [Gem.default_dir, Gem.vendor_dir]
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    86
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    87
+    assert_equal expected, Gem.default_path
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    88
+  ensure
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    89
+    RbConfig::CONFIG['vendordir'] = orig_vendordir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    90
+  end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    91
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    92
   def test_self_default_sources
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    93
     assert_equal %w[http://rubygems.org/], Gem.default_sources
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    94
   end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    95
@@ -1062,6 +1101,14 @@ class TestGem < Gem::TestCase
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    96
     end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    97
   end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    98
 
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
    99
+  def test_self_vendor_dir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   100
+    expected =
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   101
+      File.join RbConfig::CONFIG['vendordir'], 'gems',
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   102
+                RbConfig::CONFIG['ruby_version']
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   103
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   104
+    assert_equal expected, Gem.vendor_dir
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   105
+  end
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   106
+
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   107
   def test_load_plugins
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   108
     plugin_path = File.join "lib", "rubygems_plugin.rb"
6660993f1e66 19324816 Fix rubygems to use a vendor_ruby path for gems in Solaris packages
April Chin <april.chin@oracle.com>
parents:
diff changeset
   109