[packages/ruby/dev-2.0: 2/21] new files

glen glen at pld-linux.org
Fri Apr 18 02:24:08 CEST 2014


commit c0484a8d38c3f70ce548d30201acd709c182d52d
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Wed Mar 19 15:27:29 2014 +0200

    new files

 DESTDIR.patch                          |  73 +++++++
 custom-rubygems-location.patch         |  84 ++++++++
 duplicated-paths.patch                 |  70 +++++++
 empty-ruby-version.patch               |  34 ++++
 rubygems-2.0.0-binary-extensions.patch | 344 +++++++++++++++++++++++++++++++++
 5 files changed, 605 insertions(+)
---
diff --git a/DESTDIR.patch b/DESTDIR.patch
new file mode 100644
index 0000000..93ef17a
--- /dev/null
+++ b/DESTDIR.patch
@@ -0,0 +1,73 @@
+From 28e8a4ad0146fef37b514bde9a27ba5b6f7c34c5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Tue, 2 Jul 2013 11:51:50 +0200
+Subject: [PATCH] Revert "mkmf.rb: prefix install_dirs only with DESTDIR"
+
+Fixes issues with DESTDIR.
+https://bugs.ruby-lang.org/issues/8115
+
+This reverts commit 7e1d5045943835ff906850e7b3bc71f985ae5f36.
+---
+ lib/mkmf.rb | 29 ++++++++++++++---------------
+ 1 file changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/lib/mkmf.rb b/lib/mkmf.rb
+index ee89198..cca487e 100644
+--- a/lib/mkmf.rb
++++ b/lib/mkmf.rb
+@@ -189,21 +189,21 @@ module MakeMakefile
+       ]
+     elsif $configure_args.has_key?('--vendor')
+       dirs = [
+-        ['BINDIR',        '$(DESTDIR)$(bindir)'],
+-        ['RUBYCOMMONDIR', '$(DESTDIR)$(vendordir)$(target_prefix)'],
+-        ['RUBYLIBDIR',    '$(DESTDIR)$(vendorlibdir)$(target_prefix)'],
+-        ['RUBYARCHDIR',   '$(DESTDIR)$(vendorarchdir)$(target_prefix)'],
+-        ['HDRDIR',        '$(DESTDIR)$(rubyhdrdir)/ruby$(target_prefix)'],
+-        ['ARCHHDRDIR',    '$(DESTDIR)$(rubyhdrdir)/$(arch)/ruby$(target_prefix)'],
++        ['BINDIR',        '$(bindir)'],
++        ['RUBYCOMMONDIR', '$(vendordir)$(target_prefix)'],
++        ['RUBYLIBDIR',    '$(vendorlibdir)$(target_prefix)'],
++        ['RUBYARCHDIR',   '$(vendorarchdir)$(target_prefix)'],
++        ['HDRDIR',        '$(rubyhdrdir)/ruby$(target_prefix)'],
++        ['ARCHHDRDIR',    '$(rubyhdrdir)/$(arch)/ruby$(target_prefix)'],
+       ]
+     else
+       dirs = [
+-        ['BINDIR',        '$(DESTDIR)$(bindir)'],
+-        ['RUBYCOMMONDIR', '$(DESTDIR)$(sitedir)$(target_prefix)'],
+-        ['RUBYLIBDIR',    '$(DESTDIR)$(sitelibdir)$(target_prefix)'],
+-        ['RUBYARCHDIR',   '$(DESTDIR)$(sitearchdir)$(target_prefix)'],
+-        ['HDRDIR',        '$(DESTDIR)$(rubyhdrdir)/ruby$(target_prefix)'],
+-        ['ARCHHDRDIR',    '$(DESTDIR)$(rubyhdrdir)/$(arch)/ruby$(target_prefix)'],
++        ['BINDIR',        '$(bindir)'],
++        ['RUBYCOMMONDIR', '$(sitedir)$(target_prefix)'],
++        ['RUBYLIBDIR',    '$(sitelibdir)$(target_prefix)'],
++        ['RUBYARCHDIR',   '$(sitearchdir)$(target_prefix)'],
++        ['HDRDIR',        '$(rubyhdrdir)/ruby$(target_prefix)'],
++        ['ARCHHDRDIR',    '$(rubyhdrdir)/$(arch)/ruby$(target_prefix)'],
+       ]
+     end
+     dirs << ['target_prefix', (target_prefix ? "/#{target_prefix}" : "")]
+@@ -1728,7 +1728,6 @@ SRC
+   end
+ 
+   def with_destdir(dir)
+-    return dir unless $extmk
+     dir = dir.sub($dest_prefix_pattern, '')
+     /\A\$[\(\{]/ =~ dir ? dir : "$(DESTDIR)"+dir
+   end
+@@ -1787,8 +1786,8 @@ ECHO = $(ECHO1:0=@echo)
+ #### Start of system configuration section. ####
+ #{"top_srcdir = " + $top_srcdir.sub(%r"\A#{Regexp.quote($topdir)}/", "$(topdir)/") if $extmk}
+ srcdir = #{srcdir.gsub(/\$\((srcdir)\)|\$\{(srcdir)\}/) {mkintpath(CONFIG[$1||$2]).unspace}}
+-topdir = #{mkintpath(topdir = $extmk ? CONFIG["topdir"] : $topdir).unspace}
+-hdrdir = #{(hdrdir = CONFIG["hdrdir"]) == topdir ? "$(topdir)" : mkintpath(hdrdir).unspace}
++topdir = #{mkintpath($extmk ? CONFIG["topdir"] : $topdir).unspace}
++hdrdir = #{mkintpath(CONFIG["hdrdir"]).unspace}
+ arch_hdrdir = #{$arch_hdrdir.quote}
+ PATH_SEPARATOR = #{CONFIG['PATH_SEPARATOR']}
+ VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])}
+-- 
+1.8.2.1
+
diff --git a/custom-rubygems-location.patch b/custom-rubygems-location.patch
new file mode 100644
index 0000000..90ad58d
--- /dev/null
+++ b/custom-rubygems-location.patch
@@ -0,0 +1,84 @@
+From b5e9dc3683cb085aa57e7b12c35a4f21b2cc1482 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Fri, 11 Nov 2011 13:14:45 +0100
+Subject: [PATCH] Allow to install RubyGems into custom location, outside of
+ Ruby tree.
+
+---
+ configure.in      | 8 ++++++++
+ tool/rbinstall.rb | 9 +++++++++
+ version.c         | 4 ++++
+ 3 files changed, 21 insertions(+)
+
+diff --git a/configure.in b/configure.in
+index 1627d12..e064b2b 100644
+--- a/configure.in
++++ b/configure.in
+@@ -3349,6 +3349,13 @@ AC_ARG_WITH(vendorarchdir,
+             [vendorarchdir=$withval],
+             [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
+ 
++AC_ARG_WITH(rubygemsdir,
++           AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]),
++            [rubygemsdir=$withval])
++if test "$rubygemsdir" != ""; then
++    AC_DEFINE_UNQUOTED(RUBYGEMS_DIR,"$rubygemsdir" !<verconf>!)
++fi
++
+ unexpand_shvar rubylibprefix       exec_prefix libdir RUBY_BASE_NAME
+ unexpand_shvar rubyarchprefix      exec_prefix libdir arch RUBY_BASE_NAME archlibdir rubylibprefix
+ unexpand_shvar rubysitearchprefix  exec_prefix libdir sitearch arch RUBY_BASE_NAME archlibdir sitearchlibdir rubylibprefix
+@@ -3415,6 +3422,7 @@ AC_SUBST(sitearchdir)dnl
+ AC_SUBST(vendordir)dnl
+ AC_SUBST(vendorlibdir)dnl
+ AC_SUBST(vendorarchdir)dnl
++AC_SUBST(rubygemsdir)dnl
+ 
+ configure_args=$ac_configure_args
+ AC_SUBST(configure_args)dnl
+diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
+index 92e54c6..c72dfb6 100755
+--- a/tool/rbinstall.rb
++++ b/tool/rbinstall.rb
+@@ -313,6 +313,7 @@ sitelibdir = CONFIG["sitelibdir"]
+ sitearchlibdir = CONFIG["sitearchdir"]
+ vendorlibdir = CONFIG["vendorlibdir"]
+ vendorarchlibdir = CONFIG["vendorarchdir"]
++rubygemsdir = CONFIG["rubygemsdir"]
+ mandir = CONFIG["mandir", true]
+ docdir = CONFIG["docdir", true]
+ configure_args = Shellwords.shellwords(CONFIG["configure_args"])
+@@ -500,7 +501,15 @@ end
+ install?(:local, :comm, :lib) do
+   prepare "library scripts", rubylibdir
+   noinst = %w[README* *.txt *.rdoc *.gemspec]
++  noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir
+   install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode)
++  if rubygemsdir
++    noinst = %w[obsolete.rb]
++    install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode)
++    install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode)
++    install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode)
++    install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode)
++  end
+ end
+ 
+ install?(:local, :arch, :lib) do
+diff --git a/version.c b/version.c
+index 54c4513..d76100b 100644
+--- a/version.c
++++ b/version.c
+@@ -99,6 +99,10 @@ const char ruby_initial_load_paths[] =
+ #endif
+ #endif
+ 
++#ifdef RUBYGEMS_DIR
++    RUBYGEMS_DIR "\0"
++#endif
++
+     RUBY_LIB "\0"
+ #ifdef RUBY_THINARCH
+     RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
+-- 
+1.8.1.2
+
diff --git a/duplicated-paths.patch b/duplicated-paths.patch
new file mode 100644
index 0000000..58d602d
--- /dev/null
+++ b/duplicated-paths.patch
@@ -0,0 +1,70 @@
+From e943a89efd63dcfb80a0ab8d9a4db37f523f508e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Fri, 8 Feb 2013 22:48:41 +0100
+Subject: [PATCH] Prevent duplicated paths when empty version string is
+ configured.
+
+---
+ configure.in |  3 +++
+ version.c    | 10 ++++++++++
+ 2 files changed, 13 insertions(+)
+
+diff --git a/configure.in b/configure.in
+index 5850bbf..7604bb8 100644
+--- a/configure.in
++++ b/configure.in
+@@ -3367,6 +3367,9 @@ unexpand_shvar exec_prefix         prefix
+ if test ${RUBY_LIB_VERSION_STYLE+set}; then
+     AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION_STYLE, $RUBY_LIB_VERSION_STYLE !<verconf>!)
+ else
++    if test "x${ruby_version}" = 'x'; then
++        AC_DEFINE(RUBY_LIB_VERSION_BLANK, 1)
++    fi
+     AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION, [$RUBY_LIB_VERSION] !<verconf>!)
+ fi
+ AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, ${RUBY_EXEC_PREFIX})
+diff --git a/version.c b/version.c
+index 282960d..54c4513 100644
+--- a/version.c
++++ b/version.c
+@@ -39,9 +39,15 @@
+ #define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby"
+ #endif
+ 
++#ifdef RUBY_LIB_VERSION_BLANK
++#define RUBY_LIB                    RUBY_LIB_PREFIX
++#define RUBY_SITE_LIB2              RUBY_SITE_LIB
++#define RUBY_VENDOR_LIB2            RUBY_VENDOR_LIB
++#else
+ #define RUBY_LIB                    RUBY_LIB_PREFIX  "/"RUBY_LIB_VERSION
+ #define RUBY_SITE_LIB2              RUBY_SITE_LIB    "/"RUBY_LIB_VERSION
+ #define RUBY_VENDOR_LIB2            RUBY_VENDOR_LIB  "/"RUBY_LIB_VERSION
++#endif
+ #ifndef RUBY_ARCH_LIB_FOR
+ #define RUBY_ARCH_LIB_FOR(arch)        RUBY_LIB         "/"arch
+ #endif
+@@ -77,8 +83,10 @@ const char ruby_initial_load_paths[] =
+     RUBY_SITE_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
+ #endif
+     RUBY_SITE_ARCH_LIB_FOR(RUBY_SITEARCH) "\0"
++#ifndef RUBY_LIB_VERSION_BLANK
+     RUBY_SITE_LIB "\0"
+ #endif
++#endif
+ 
+ #ifndef NO_RUBY_VENDOR_LIB
+     RUBY_VENDOR_LIB2 "\0"
+@@ -86,8 +94,10 @@ const char ruby_initial_load_paths[] =
+     RUBY_VENDOR_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
+ #endif
+     RUBY_VENDOR_ARCH_LIB_FOR(RUBY_SITEARCH) "\0"
++#ifndef RUBY_LIB_VERSION_BLANK
+     RUBY_VENDOR_LIB "\0"
+ #endif
++#endif
+ 
+     RUBY_LIB "\0"
+ #ifdef RUBY_THINARCH
+-- 
+1.8.1.2
+
diff --git a/empty-ruby-version.patch b/empty-ruby-version.patch
new file mode 100644
index 0000000..365dc7b
--- /dev/null
+++ b/empty-ruby-version.patch
@@ -0,0 +1,34 @@
+From c9b2eff36728266052ccfff54d3ac0a0624fd0f1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Thu, 14 Feb 2013 11:50:41 +0100
+Subject: [PATCH] Use File.join insteado of manual path creation.
+
+This prevents issues, when File.join in #new_default_spec removes
+superfluous slashes while they are kept in expected paths. E.g. the test
+would fail if ruby configuration specifies --with-ruby-version=''.
+---
+ test/rubygems/test_gem_commands_contents_command.rb | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/test/rubygems/test_gem_commands_contents_command.rb b/test/rubygems/test_gem_commands_contents_command.rb
+index 60df53f..35c9631 100644
+--- a/test/rubygems/test_gem_commands_contents_command.rb
++++ b/test/rubygems/test_gem_commands_contents_command.rb
+@@ -140,10 +140,10 @@ lib/foo.rb
+       @cmd.execute
+     end
+ 
+-    expected = %W[
+-      #{Gem::ConfigMap[:bindir]}/default_command
+-      #{Gem::ConfigMap[:rubylibdir]}/default/gem.rb
+-      #{Gem::ConfigMap[:archdir]}/default_gem.so
++    expected = [
++      File.join(Gem::ConfigMap[:bindir], 'default_command'),
++      File.join(Gem::ConfigMap[:rubylibdir], 'default/gem.rb'),
++      File.join(Gem::ConfigMap[:archdir], 'default_gem.so')
+     ].sort.join "\n"
+ 
+     assert_equal expected, @ui.output.chomp
+-- 
+1.8.1.2
+
diff --git a/rubygems-2.0.0-binary-extensions.patch b/rubygems-2.0.0-binary-extensions.patch
new file mode 100644
index 0000000..4876d35
--- /dev/null
+++ b/rubygems-2.0.0-binary-extensions.patch
@@ -0,0 +1,344 @@
+From ec90622235ae19b28a327cb50a10e0311e8f3d71 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Thu, 3 Nov 2011 16:43:05 +0100
+Subject: [PATCH 1/8] Add dedicate extensions folder into $LOAD_PATH.
+
+---
+ lib/rubygems/specification.rb | 32 ++++++++++++++++++++++++++++++--
+ 1 file changed, 30 insertions(+), 2 deletions(-)
+
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index cabdf8d..87b14d2 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1256,6 +1256,12 @@ class Gem::Specification
+       File.join full_gem_path, path
+     end
+ 
++    unless extensions.empty?
++      paths += require_paths.map do |path|
++        File.join ext_dir, path
++      end
++    end
++
+     # gem directories must come after -I and ENV['RUBYLIB']
+     insert_index = Gem.load_path_insert_index
+ 
+@@ -1374,11 +1380,16 @@ class Gem::Specification
+ 
+   def contains_requirable_file? file
+     root     = full_gem_path
++    ext      = ext_dir
+     suffixes = Gem.suffixes
+ 
+     require_paths.any? do |lib|
+-      base = "#{root}/#{lib}/#{file}"
+-      suffixes.any? { |suf| File.file? "#{base}#{suf}" }
++      base = ["#{root}/#{lib}/#{file}"]
++      base << "#{ext}/#{lib}/#{file}" unless extensions.empty?
++
++      base.any? do |path|
++        suffixes.any? { |suf| File.file? "#{path}#{suf}" }
++      end
+     end
+   end
+ 
+@@ -1674,6 +1685,23 @@ class Gem::Specification
+   end
+ 
+   ##
++  # Returns the full path to this spec's ext directory.
++  # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
++
++  def ext_dir
++    @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
++  end
++
++  ##
++  # Returns the full path to the exts directory containing this spec's
++  # gem directory. eg: /usr/local/lib/ruby/1.8/exts
++
++  def exts_dir
++    # TODO: this logic seems terribly broken, but tests fail if just base_dir
++    @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
++  end
++
++  ##
+   # Deprecated and ignored, defaults to true.
+   #
+   # Formerly used to indicate this gem was RDoc-capable.
+-- 
+1.8.1.2
+
+
+From e42819f32fc5d935f7e7189ec4be8bdab0a2cf3f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Wed, 16 Nov 2011 13:26:48 +0100
+Subject: [PATCH 2/8] Use spec's ext dir for extension installation.
+
+---
+ lib/rubygems/installer.rb     | 2 +-
+ lib/rubygems/specification.rb | 7 +++----
+ 2 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index 780a88b..854c177 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -646,7 +646,7 @@ TEXT
+       say "This could take a while..."
+     end
+ 
+-    dest_path = File.join gem_dir, spec.require_paths.first
++    dest_path = spec.ext_dir
+     ran_rake = false # only run rake once
+ 
+     spec.extensions.each do |extension|
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index 87b14d2..492ddbe 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1689,16 +1689,15 @@ class Gem::Specification
+   # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
+ 
+   def ext_dir
+-    @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
++    @ext_dir ||= File.join exts_dir, full_name, require_paths.first
+   end
+ 
+   ##
+   # Returns the full path to the exts directory containing this spec's
+-  # gem directory. eg: /usr/local/lib/ruby/1.8/exts
++  # gem directory. eg: /usr/local/lib/ruby/1.8/gems
+ 
+   def exts_dir
+-    # TODO: this logic seems terribly broken, but tests fail if just base_dir
+-    @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
++    @exts_dir ||= gems_dir
+   end
+ 
+   ##
+-- 
+1.8.1.2
+
+
+From 0e9dd0655111f7dda805233c79a3771459d9a66a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Wed, 16 Nov 2011 14:52:16 +0100
+Subject: [PATCH 3/9] Simplify the extending of $LOAD_PATH for binary gems.
+
+---
+ lib/rubygems/specification.rb | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index 492ddbe..c703827 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1256,11 +1256,7 @@ class Gem::Specification
+       File.join full_gem_path, path
+     end
+ 
+-    unless extensions.empty?
+-      paths += require_paths.map do |path|
+-        File.join ext_dir, path
+-      end
+-    end
++    paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
+ 
+     # gem directories must come after -I and ENV['RUBYLIB']
+     insert_index = Gem.load_path_insert_index
+@@ -1697,7 +1693,10 @@ class Gem::Specification
+   # gem directory. eg: /usr/local/lib/ruby/1.8/gems
+ 
+   def exts_dir
+-    @exts_dir ||= gems_dir
++    @exts_dir ||= begin
++      dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
++      dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
++    end
+   end
+ 
+   ##
+-- 
+1.8.1.2
+
+
+From 9a8556c609e800d0dbd24af416d613f2e82f323c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Fri, 9 Dec 2011 16:31:04 +0100
+Subject: [PATCH 4/8] Fix the binary extension search path construction.
+
+---
+ lib/rubygems/installer.rb     | 2 +-
+ lib/rubygems/specification.rb | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index 854c177..f1f2ad7 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -646,7 +646,7 @@ TEXT
+       say "This could take a while..."
+     end
+ 
+-    dest_path = spec.ext_dir
++    dest_path = File.join spec.ext_dir, spec.require_paths.first
+     ran_rake = false # only run rake once
+ 
+     spec.extensions.each do |extension|
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index c703827..fa9ea6e 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1256,7 +1256,7 @@ class Gem::Specification
+       File.join full_gem_path, path
+     end
+ 
+-    paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
++    paths << File.join(ext_dir, require_paths.first) unless extensions.empty? || (ext_dir == full_gem_path)
+ 
+     # gem directories must come after -I and ENV['RUBYLIB']
+     insert_index = Gem.load_path_insert_index
+@@ -1685,7 +1685,7 @@ class Gem::Specification
+   # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
+ 
+   def ext_dir
+-    @ext_dir ||= File.join exts_dir, full_name, require_paths.first
++    @ext_dir ||= File.join exts_dir, full_name
+   end
+ 
+   ##
+-- 
+1.8.1.2
+
+
+From 476c2f90cc6f5f490858f253a9b23eb19d53d2fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Tue, 13 Dec 2011 12:14:54 +0100
+Subject: [PATCH 5/8] Remove binary extensions during uninstall.
+
+---
+ lib/rubygems/uninstaller.rb | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb
+index d672b9d..5c31a0c 100644
+--- a/lib/rubygems/uninstaller.rb
++++ b/lib/rubygems/uninstaller.rb
+@@ -246,6 +246,7 @@ class Gem::Uninstaller
+       File.writable?(spec.base_dir)
+ 
+     FileUtils.rm_rf spec.full_gem_path
++    FileUtils.rm_rf spec.ext_dir
+ 
+     # TODO: should this be moved to spec?... I vote eww (also exists in docmgr)
+     old_platform_name = [spec.name,
+-- 
+1.8.1.2
+
+
+From 35dc17e86f701fe1be80d98ace79735c535fd570 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Tue, 13 Dec 2011 14:27:14 +0100
+Subject: [PATCH 6/8] Avoid dependency on customized operating_system.rb.
+
+---
+ lib/rubygems/defaults.rb      | 11 +++++++++++
+ lib/rubygems/specification.rb |  5 +----
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
+index ea84e5c..b221954 100644
+--- a/lib/rubygems/defaults.rb
++++ b/lib/rubygems/defaults.rb
+@@ -101,6 +101,17 @@ module Gem
+   end
+ 
+   ##
++  # Returns binary extensions dir for specified RubyGems base dir or nil
++  # if such directory cannot be determined.
++  #
++  # By default, the binary extensions are located side by side with their
++  # Ruby counterparts, therefore nil is returned
++
++  def self.default_ext_dir_for base_dir
++    nil
++  end
++
++  ##
+   # A wrapper around RUBY_ENGINE const that may not be defined
+ 
+   def self.ruby_engine
+diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
+index fa9ea6e..2b10499 100644
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1693,10 +1693,7 @@ class Gem::Specification
+   # gem directory. eg: /usr/local/lib/ruby/1.8/gems
+ 
+   def exts_dir
+-    @exts_dir ||= begin
+-      dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
+-      dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
+-    end
++    @exts_dir ||= Gem.default_ext_dir_for(base_dir) || gems_dir
+   end
+ 
+   ##
+-- 
+1.8.1.2
+
+
+From 0937c0b0a3c2ed08ab5b0875f7f95e24157525c2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Thu, 7 Feb 2013 13:07:34 +0100
+Subject: [PATCH 7/8] Fix binary extensions installation when --install-dir is
+ specified.
+
+---
+ lib/rubygems/installer.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index f1f2ad7..e1577fc 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -646,7 +646,7 @@ TEXT
+       say "This could take a while..."
+     end
+ 
+-    dest_path = File.join spec.ext_dir, spec.require_paths.first
++    dest_path = File.join(options[:install_dir] ? gem_dir : spec.ext_dir, spec.require_paths.first)
+     ran_rake = false # only run rake once
+ 
+     spec.extensions.each do |extension|
+-- 
+1.8.1.2
+
+
+From 062a11c59731f5875d5a8821a212c8a41cb84577 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch at redhat.com>
+Date: Fri, 15 Feb 2013 17:07:07 +0100
+Subject: [PATCH 8/8] Use correct option.
+
+---
+ lib/rubygems/installer.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index e1577fc..1492c68 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -646,7 +646,7 @@ TEXT
+       say "This could take a while..."
+     end
+ 
+-    dest_path = File.join(options[:install_dir] ? gem_dir : spec.ext_dir, spec.require_paths.first)
++    dest_path = File.join(@install_dir ? gem_dir : spec.ext_dir, spec.require_paths.first)
+     ran_rake = false # only run rake once
+ 
+     spec.extensions.each do |extension|
+-- 
+1.8.1.2
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/ruby.git/commitdiff/44b97f26f94a3604b2a6245c5945f5c385a54cb9



More information about the pld-cvs-commit mailing list