Update to Ruby 1.9.3.

This commit is contained in:
Vít Ondruch 2012-01-18 15:54:01 +01:00
parent 2272bb7315
commit 117278abd0
22 changed files with 1815 additions and 827 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ ruby-rev415a3ef9ab82c65a7abc-ext_tk.tar.gz
/ruby-1.8.7-p352.tar.bz2
/ruby-revc2dfaa7d40531aef3706bcc16f38178b0c6633ee-ext_tk.tar.gz
/ruby-1.8.7-p357.tar.bz2
/ruby-1.9.3-p0.tar.gz

70
operating_system.rb Normal file
View File

@ -0,0 +1,70 @@
module Gem
class << self
##
# Returns a string representing that part or the directory tree that is
# common to all specified directories.
def common_path(dirs)
paths = dirs.collect {|dir| dir.split(File::SEPARATOR)}
uncommon_idx = paths.transpose.each_with_index.find {|dirnames, idx| dirnames.uniq.length > 1}.last
paths[0][0 ... uncommon_idx].join(File::SEPARATOR)
end
private :common_path
##
# Default gems locations allowed on FHS system (/usr, /usr/share).
# The locations are derived from directories specified during build
# configuration.
def default_locations
@default_locations ||= {
:system => common_path([ConfigMap[:vendorlibdir], ConfigMap[:vendorarchdir]]),
:local => common_path([ConfigMap[:sitelibdir], ConfigMap[:sitearchdir]])
}
end
##
# For each location provides set of directories for binaries (:bin_dir)
# platform independent (:gem_dir) and dependent (:ext_dir) files.
def default_dirs
@default_dirs ||= Hash[default_locations.collect do |destination, path|
[destination, {
:bin_dir => File.join(path, ConfigMap[:bindir].split(File::SEPARATOR).last),
:gem_dir => File.join(path, ConfigMap[:datadir].split(File::SEPARATOR).last, 'gems'),
:ext_dir => File.join(path, ConfigMap[:libdir].split(File::SEPARATOR).last, 'gems')
}]
end]
end
##
# RubyGems default overrides.
def default_dir
if Process.uid == 0
Gem.default_dirs[:local][:gem_dir]
else
Gem.user_dir
end
end
def default_path
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
path.unshift Gem.user_dir if File.exist? Gem.user_home
end
def default_bindir
if Process.uid == 0
Gem.default_dirs[:local][:bin_dir]
else
File.join [Dir.home, 'bin']
end
end
def default_ext_dir_for base_dir
dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
dirs && File.join(dirs.last[:ext_dir], 'exts')
end
end
end

View File

@ -1,11 +0,0 @@
--- ruby-1.8.7-p299/configure.in.orig 2010-06-24 16:09:00.000000000 -0400
+++ ruby-1.8.7-p299/configure.in 2010-06-24 16:09:13.000000000 -0400
@@ -1802,6 +1802,8 @@ AC_SUBST(vendordir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
+target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+
if test "$fat_binary" != no ; then
arch="fat-${target_os}"

View File

@ -1,228 +0,0 @@
--- ruby-1.8.7-p249/Makefile.in.orig 2010-06-15 17:51:14.000000000 -0400
+++ ruby-1.8.7-p249/Makefile.in 2010-06-15 17:56:54.000000000 -0400
@@ -24,6 +24,9 @@ datadir = @datadir@
arch = @arch@
sitearch = @sitearch@
sitedir = @sitedir@
+sitearchdir = @sitearchdir@
+vendordir = @vendordir@
+vendorarchdir = @vendorarchdir@
TESTUI = console
TESTS =
--- ruby-1.8.7-p249/mkconfig.rb.orig2 2010-06-15 18:19:29.000000000 -0400
+++ ruby-1.8.7-p249/mkconfig.rb 2010-06-15 18:19:33.000000000 -0400
@@ -141,12 +141,12 @@ print(*v_fast)
print(*v_others)
print <<EOS
CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
- CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
- CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
- CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
+ CONFIG["rubylibdir"] = "$(vendordir)/$(ruby_version)"
+ CONFIG["archdir"] = "$(libdir)/ruby/$(ruby_version)/$(sitearch)"
+ CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
+ CONFIG["sitearchdir"] = "$(libdir)/ruby/site_ruby/$(ruby_version)/$(sitearch)"
+ CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
+ CONFIG["vendorarchdir"] = "$(libdir)/ruby/$(ruby_version)/$(sitearch)"
CONFIG["topdir"] = File.dirname(__FILE__)
MAKEFILE_CONFIG = {}
CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
--- ruby-1.8.7-p249/ruby.c.orig 2010-06-15 18:22:52.000000000 -0400
+++ ruby-1.8.7-p249/ruby.c 2010-06-23 14:05:54.000000000 -0400
@@ -316,24 +316,27 @@ ruby_init_loadpath()
#endif
incpush(RUBY_RELATIVE(RUBY_SITE_LIB2));
-#ifdef RUBY_SITE_THIN_ARCHLIB
- incpush(RUBY_RELATIVE(RUBY_SITE_THIN_ARCHLIB));
-#endif
- incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB));
- incpush(RUBY_RELATIVE(RUBY_SITE_LIB));
-
+ incpush(RUBY_RELATIVE(RUBY_SITE_ARCH2));
+ incpush(RUBY_RELATIVE(RUBY_SITE_ARCH3));
+ incpush(RUBY_RELATIVE(RUBY_SITE_LIB3));
+ incpush(RUBY_RELATIVE(RUBY_SITE_ARCH4));
+ incpush(RUBY_RELATIVE(RUBY_ALT_SITE_ARCH));
+ incpush(RUBY_RELATIVE(RUBY_ALT_SITE_ARCH2));
+ incpush(RUBY_RELATIVE(RUBY_ALT_SITE_ARCH3));
incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB2));
-#ifdef RUBY_VENDOR_THIN_ARCHLIB
- incpush(RUBY_RELATIVE(RUBY_VENDOR_THIN_ARCHLIB));
-#endif
- incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCHLIB));
- incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB));
+ incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCH2));
+ incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCH3));
+
+ // uncomment the following when we want to support parallel
+ // installable ruby stacks
+ //incpush(RUBY_RELATIVE(RUBY_SITE_ARCH));
+ //incpush(RUBY_RELATIVE(RUBY_SITE_LIB));
+
+ //incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCH));
+ //incpush(RUBY_RELATIVE(RUBY_VENDOR_ARCH4));
+ //incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB));
+ //incpush(RUBY_RELATIVE(RUBY_VENDOR_LIB3));
- incpush(RUBY_RELATIVE(RUBY_LIB));
-#ifdef RUBY_THIN_ARCHLIB
- incpush(RUBY_RELATIVE(RUBY_THIN_ARCHLIB));
-#endif
- incpush(RUBY_RELATIVE(RUBY_ARCHLIB));
if (rb_safe_level() == 0) {
incpush(".");
--- ruby-1.8.7-p299/configure.in.orig2 2010-06-24 16:10:40.000000000 -0400
+++ ruby-1.8.7-p299/configure.in 2010-06-24 16:16:33.000000000 -0400
@@ -58,6 +58,9 @@ fi
if test "$TEENY" = ""; then
AC_MSG_ERROR(could not determine TEENY number from version.h)
fi
+rb_mm_version="${MAJOR}.${MINOR}"
+ruby_version="${MAJOR}.${MINOR}.${TEENY}"
+ruby_mm_version="${rb_mm_version}"
AC_SUBST(MAJOR)
AC_SUBST(MINOR)
AC_SUBST(TEENY)
@@ -1759,6 +1762,12 @@ AC_ARG_WITH(sitedir,
[sitedir='${libdir}/ruby/site_ruby'])
SITE_DIR=`eval echo \\"${sitedir}\\"`
+AC_ARG_WITH(sitearchdir,
+ [ --with-sitearchdir=DIR site arch. libraries in DIR [[LIBDIR/ruby/site_ruby]]],
+ [sitearchdir=$withval],
+ [sitearchdir='${libdir}/${RUBY_INSTALL_NAME}/site_ruby'])
+SITE_ARCH_DIR=`eval echo \\"${sitearchdir}\\"`
+
case "$target_os" in
cygwin*|mingw*|*djgpp*|os2-emx*)
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
@@ -1770,50 +1779,45 @@ case "$target_os" in
;;
esac
RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}"
-RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}"
AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}")
AC_ARG_WITH(vendordir,
[ --with-vendordir=DIR vendor libraries in DIR [[LIBDIR/ruby/vendor_ruby]]],
[vendordir=$withval],
[vendordir='${libdir}/ruby/vendor_ruby'])
VENDOR_DIR=`eval echo \\"${vendordir}\\"`
+
+AC_ARG_WITH(vendorarchdir,
+ [ --with-vendorarchdir=DIR vendor arch. libraries in DIR [[LIBDIR/ruby/vendor_ruby]]],
+ [vendorarchdir=$withval],
+ [vendorarchdir='${libdir}/${RUBY_INSTALL_NAME}/vendor_ruby'])
+VENDOR_ARCH_DIR=`eval echo \\"${vendorarchdir}\\"`
+
case "$target_os" in
cygwin*|mingw*|*djgpp*|os2-emx*)
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
;;
*)
+ RUBY_SITE_ARCH_PATH="`eval echo \\"$SITE_ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_VENDOR_ARCH_PATH="`eval echo \\"$VENDOR_ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
;;
esac
RUBY_VENDOR_LIB_PATH2="${RUBY_VENDOR_LIB_PATH}/${MAJOR}.${MINOR}"
-AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, "${RUBY_VENDOR_LIB_PATH}")
-AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB2, "${RUBY_VENDOR_LIB_PATH2}")
-
-AC_SUBST(arch)dnl
-AC_SUBST(sitearch)dnl
-AC_SUBST(sitedir)dnl
-AC_SUBST(vendordir)dnl
-
-configure_args=$ac_configure_args
-AC_SUBST(configure_args)dnl
-
target_cpu=`echo $target_cpu | sed s/i.86/i386/`
if test "$fat_binary" != no ; then
arch="fat-${target_os}"
AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
- "${RUBY_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
+ "${RUBY_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB,
- "${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
+ "${RUBY_SITE_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_VENDOR_THIN_ARCHLIB,
- "${RUBY_VENDOR_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
+ "${RUBY_VENDOR_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_PLATFORM, __ARCHITECTURE__ "-${target_os}")
else
arch="${target_cpu}-${target_os}"
@@ -1825,9 +1829,57 @@ case "$target_os" in
*) sitearch="${arch}" ;;
esac
-AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${sitearch}")
-AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, "${RUBY_VENDOR_LIB_PATH2}/${sitearch}")
+RUBY_SITE_ARCH_PATH_1="${RUBY_SITE_ARCH_PATH}/${ruby_version}"
+RUBY_SITE_ARCH_PATH_2="${RUBY_SITE_ARCH_PATH}/${ruby_mm_version}"
+RUBY_SITE_ARCH_PATH_3="${RUBY_SITE_ARCH_PATH}/${ruby_mm_version}/${sitearch}"
+RUBY_SITE_ARCH_PATH_4="${RUBY_SITE_ARCH_PATH}"
+RUBY_SITE_LIB_PATH_1="${RUBY_SITE_LIB_PATH}/${ruby_version}"
+RUBY_SITE_LIB_PATH_2="${RUBY_SITE_LIB_PATH}/${ruby_mm_version}"
+RUBY_SITE_LIB_PATH_3="${RUBY_SITE_LIB_PATH}"
+RUBY_VENDOR_ARCH_PATH_1="${RUBY_VENDOR_ARCH_PATH}/${ruby_version}"
+RUBY_VENDOR_ARCH_PATH_2="${RUBY_VENDOR_ARCH_PATH}/${ruby_mm_version}"
+RUBY_VENDOR_ARCH_PATH_3="${RUBY_VENDOR_ARCH_PATH}/${ruby_mm_version}/${sitearch}"
+RUBY_VENDOR_ARCH_PATH_4="${RUBY_VENDOR_ARCH_PATH}"
+RUBY_VENDOR_LIB_PATH_1="${RUBY_VENDOR_LIB_PATH}/${ruby_version}"
+RUBY_VENDOR_LIB_PATH_2="${RUBY_VENDOR_LIB_PATH}/${ruby_mm_version}"
+RUBY_VENDOR_LIB_PATH_3="${RUBY_VENDOR_LIB_PATH}"
+
+AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH, "${RUBY_SITE_ARCH_PATH_1}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH2, "${RUBY_SITE_ARCH_PATH_2}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH3, "${RUBY_SITE_ARCH_PATH_3}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH4, "${RUBY_SITE_ARCH_PATH_4}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH_1}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH_2}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_LIB3, "${RUBY_SITE_LIB_PATH_3}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH, "${RUBY_VENDOR_ARCH_PATH_1}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH2, "${RUBY_VENDOR_ARCH_PATH_2}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH3, "${RUBY_VENDOR_ARCH_PATH_3}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH4, "${RUBY_VENDOR_ARCH_PATH_4}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, "${RUBY_VENDOR_LIB_PATH_1}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB2, "${RUBY_VENDOR_LIB_PATH_2}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB3, "${RUBY_VENDOR_LIB_PATH_3}")
+
+# XXX these are being added to keep compatiblity w/ the 1.8.6
+# search path, but don't get created anywhere, are unused, and
+# should really be removed
+AC_DEFINE_UNQUOTED(RUBY_ALT_SITE_ARCH, "${libdir}/site_ruby/${ruby_mm_version}")
+AC_DEFINE_UNQUOTED(RUBY_ALT_SITE_ARCH2, "${libdir}/site_ruby/${ruby_mm_version}/${sitearch}")
+AC_DEFINE_UNQUOTED(RUBY_ALT_SITE_ARCH3, "${libdir}/site_ruby")
+
+AC_SUBST(arch)dnl
+AC_SUBST(sitearch)dnl
+AC_SUBST(sitedir)dnl
+AC_SUBST(vendordir)dnl
+AC_SUBST(ruby_mm_version)dnl
+AC_SUBST(sitearchdir)dnl
+AC_SUBST(vendorarchdir)dnl
+
+configure_args=$ac_configure_args
+AC_SUBST(configure_args)dnl
+
+AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH3}")
+AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, "${RUBY_VENDOR_LIB_PATH3}")
AC_ARG_WITH(search-path,
[ --with-search-path=DIR specify the additional search path],

View File

@ -1,34 +0,0 @@
diff -ruN ruby-1.8.3.orig/mkconfig.rb ruby-1.8.3/mkconfig.rb
--- ruby-1.8.7/mkconfig.rb 2008-06-06 12:39:57.000000000 +0200
+++ ruby-1.8.7/mkconfig.rb 2010-06-21 11:17:13.839498249 +0200
@@ -39,6 +39,7 @@ vars = {}
has_version = false
continued_name = nil
continued_line = nil
+lib_64 = ''
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -96,13 +97,21 @@ File.foreach "config.status" do |line|
v_others << v
end
has_version = true if name == "MAJOR"
+
+ # If the target architecture is one of the following,
+ # ppc64 s390x sparc64 x86_64
+ # then use "lib64", not "lib" in prefix.
+ if name == "target_cpu" and (/64"$/ =~ val or val == '"s390x"')
+ lib_64 = '64'
+ end
end
# break if /^CEOF/
end
drive = File::PATH_SEPARATOR == ';'
-prefix = '/lib/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
+prefix = "/lib#{lib_64}/ruby/" \
+ + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
print " TOPDIR = File.dirname(__FILE__).chomp!(#{prefix.dump})\n"
print " DESTDIR = ", (drive ? "TOPDIR && TOPDIR[/\\A[a-z]:/i] || " : ""), "'' unless defined? DESTDIR\n"
print " CONFIG = {}\n"

View File

@ -1,11 +0,0 @@
--- ruby-1.8.7-p249/lib/mkmf.rb.orig 2010-06-15 12:04:06.000000000 -0400
+++ ruby-1.8.7-p249/lib/mkmf.rb 2010-06-15 12:05:05.000000000 -0400
@@ -319,7 +319,7 @@ def link_command(ldflags, opt="", libpat
'LDFLAGS' => "#$LDFLAGS #{ldflags}",
'LIBPATH' => libpathflag(libpath),
'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
- 'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
+ 'LIBS' => "#$LIBRUBYARG_SHARED #{opt} #$LIBS")
Config::expand(TRY_LINK.dup, conf)
end

View File

@ -1,33 +0,0 @@
--- ruby-1.8.7-p330/mkconfig.rb.multilib 2010-11-24 16:38:41.000000000 +0900
+++ ruby-1.8.7-p330/mkconfig.rb 2010-12-26 02:16:32.000000000 +0900
@@ -40,6 +40,7 @@
has_patchlevel = false
continued_name = nil
continued_line = nil
+lib_64 = ''
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -102,13 +103,21 @@
when "PATCHLEVEL"
has_patchlevel = true
end
+
+ # If the target architecture is one of the following,
+ # ppc64 s390x sparc64 x86_64
+ # then use "lib64", not "lib" in prefix.
+ if name == "target_cpu" and (/64"$/ =~ val or val == '"s390x"')
+ lib_64 = '64'
+ end
end
# break if /^CEOF/
end
drive = File::PATH_SEPARATOR == ';'
-prefix = '/lib/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
+prefix = "/lib#{lib_64}/ruby/" \
+ + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
print " TOPDIR = File.dirname(__FILE__).chomp!(#{prefix.dump})\n"
print " DESTDIR = ", (drive ? "TOPDIR && TOPDIR[/\\A[a-z]:/i] || " : ""), "'' unless defined? DESTDIR\n"
print " CONFIG = {}\n"

View File

@ -1,54 +0,0 @@
--- ruby-1.8.7-p352/array.c.pathuniq 2009-02-05 08:55:33.000000000 +0900
+++ ruby-1.8.7-p352/array.c 2011-07-16 09:44:35.000000000 +0900
@@ -2954,7 +2954,7 @@
* b.uniq! #=> nil
*/
-static VALUE
+GCC_VISIBILITY_HIDDEN VALUE
rb_ary_uniq_bang(ary)
VALUE ary;
{
@@ -2987,7 +2987,7 @@
* a.uniq #=> ["a", "b", "c"]
*/
-static VALUE
+GCC_VISIBILITY_HIDDEN VALUE
rb_ary_uniq(ary)
VALUE ary;
{
--- ruby-1.8.7-p352/intern.h.pathuniq 2011-05-23 13:49:40.000000000 +0900
+++ ruby-1.8.7-p352/intern.h 2011-07-16 09:43:10.000000000 +0900
@@ -18,6 +18,11 @@
*/
#define ID_ALLOCATOR 1
+#ifdef __GNUC__
+#define GCC_VISIBILITY_HIDDEN __attribute__ ((visibility("hidden")))
+#else
+#define GCC_VISIBILITY_HIDDEN
+#endif
/* array.c */
void rb_mem_clear _((register VALUE*, register long));
@@ -44,6 +49,8 @@
VALUE rb_ary_reverse _((VALUE));
VALUE rb_ary_sort _((VALUE));
VALUE rb_ary_sort_bang _((VALUE));
+GCC_VISIBILITY_HIDDEN VALUE rb_ary_uniq _((VALUE));
+GCC_VISIBILITY_HIDDEN VALUE rb_ary_uniq_bang _((VALUE));
VALUE rb_ary_delete _((VALUE, VALUE));
VALUE rb_ary_delete_at _((VALUE, long));
VALUE rb_ary_clear _((VALUE));
--- ruby-1.8.7-p352/ruby.c.pathuniq 2011-07-16 08:54:11.000000000 +0900
+++ ruby-1.8.7-p352/ruby.c 2011-07-16 09:36:13.000000000 +0900
@@ -341,6 +341,8 @@
if (rb_safe_level() == 0) {
incpush(".");
}
+
+ rb_load_path = rb_ary_uniq(rb_load_path);
}
struct req_list {

View File

@ -0,0 +1,188 @@
From b0a875862d14244ca41cd1e1e9090f87757aaeb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Mon, 5 Sep 2011 13:10:47 +0200
Subject: [PATCH] Added configuration flags for site and vendor architecture
specific directories.
---
Makefile.in | 3 +++
configure.in | 40 ++++++++++++++++++++++++++++++++++++++++
tool/mkconfig.rb | 8 ++++++--
version.c | 4 ++++
4 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index bcdaf5f..f57e4c4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -34,6 +34,9 @@ datadir = @datadir@
archdir = @archdir@
sitearch = @sitearch@
sitedir = @sitedir@
+sitearchdir= @sitearchdir@
+vendordir = @vendordir@
+vendorarchdir = @vendorarchdir@
ruby_version = @ruby_version@
TESTUI = console
diff --git a/configure.in b/configure.in
index 83e5d76..31532bd 100644
--- a/configure.in
+++ b/configure.in
@@ -2801,6 +2801,15 @@ until SITE_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITE_DIR}"; do
dir="${SITE_DIR}"
done
+AC_ARG_WITH(sitearchdir,
+ AS_HELP_STRING([--with-sitearchdir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
+ [sitearchdir=$withval],
+ [sitearchdir='${rubylibprefix}/site_ruby/${arch}'])
+dir="${sitearchdir}"
+until SITEARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITEARCH_DIR}"; do
+ dir="${SITEARCH_DIR}"
+done
+
AC_ARG_WITH(vendordir,
AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
[vendordir=$withval],
@@ -2810,19 +2819,32 @@ until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
dir="${VENDOR_DIR}"
done
+AC_ARG_WITH(vendorarchdir,
+ AS_HELP_STRING([--with-vendorarchdir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
+ [vendorarchdir=$withval],
+ [vendorarchdir='${rubylibprefix}/vendor_ruby/${arch}'])
+dir="${vendorarchdir}"
+until VENDORARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDORARCH_DIR}"; do
+ dir="${VENDORARCH_DIR}"
+done
+
if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=""
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_ARCH_LIB_PATH="`eval echo "$ARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_SITE_ARCHLIB_PATH="`eval echo "$SITEARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_VENDOR_ARCHLIB_PATH="`eval echo "$VENDORARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
else
RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_ARCH_LIB_PATH="`eval echo \\"$ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_SITE_ARCHLIB_PATH="`eval echo \\"$SITEARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_VENDOR_ARCHLIB_PATH="`eval echo \\"$VENDORARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
fi
pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
@@ -2840,6 +2862,13 @@ AS_CASE(["$RUBY_SITE_LIB_PATH"],
[
RUBY_SITE_LIB_PATH="\"${RUBY_SITE_LIB_PATH}\""
])
+AS_CASE(["$RUBY_SITE_ARCHLIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_SITE_ARCHLIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_ARCHLIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_SITE_ARCHLIB_PATH="\"${RUBY_SITE_ARCHLIB_PATH}\""
+ ])
AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
["$RUBY_LIB_PREFIX/"*], [
RUBY_VENDOR_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_LIB_PATH\" : \"$pat\"`"'"'
@@ -2847,6 +2876,13 @@ AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
[
RUBY_VENDOR_LIB_PATH="\"${RUBY_VENDOR_LIB_PATH}\""
])
+AS_CASE(["$RUBY_VENDOR_ARCHLIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_VENDOR_ARCHLIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_ARCHLIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_VENDOR_ARCHLIB_PATH="\"${RUBY_VENDOR_ARCHLIB_PATH}\""
+ ])
pat=`echo "$RUBY_EXEC_PREFIX/" | tr -c '\012' .`'\(.*\)'
AS_CASE(["$RUBY_LIB_PREFIX"],
["$RUBY_EXEC_PREFIX/"*], [
@@ -2868,19 +2904,23 @@ if test "x$SITE_DIR" = xno; then
AC_DEFINE(NO_RUBY_SITE_LIB)
else
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB_PATH})
+ AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, ${RUBY_SITE_ARCHLIB_PATH})
fi
if test "x$VENDOR_DIR" = xno; then
AC_DEFINE(NO_RUBY_VENDOR_LIB)
else
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB_PATH})
+ AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, ${RUBY_VENDOR_ARCHLIB_PATH})
fi
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(ruby_version)dnl
AC_SUBST(archdir)dnl
AC_SUBST(sitedir)dnl
+AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
+AC_SUBST(vendorarchdir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index b707c4b..6230720 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -44,6 +44,8 @@ v_others = []
continued_line = nil
path_version = "/$(ruby_version)"
archdir_override = "$(vendorlibdir)/$(sitearch)"
+sitearchdir_override = "$(sitelibdir)/$(sitearch)"
+vendorarchdir_override = "$(vendorlibdir)/$(sitearch)"
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -79,6 +81,8 @@ File.foreach "config.status" do |line|
when /^RUBY_SO_NAME$/; next if $so_name
when /^arch$/; if val.empty? then val = arch else arch = val end
when /^archdir$/; archdir_override = val; next
+ when /^sitearchdir$/; sitearchdir_override = val; next
+ when /^vendorarchdir$/; vendorarchdir_override = val; next
when /^sitearch/; val = '$(arch)' if val.empty?
end
case val
@@ -213,11 +217,11 @@ print <<EOS
EOS
print <<EOS unless v_disabled["sitedir"]
CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
+ CONFIG["sitearchdir"] = "#{sitearchdir_override}"
EOS
print <<EOS unless v_disabled["vendordir"]
CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
- CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
+ CONFIG["vendorarchdir"] = "#{vendorarchdir_override}"
EOS
print <<EOS
CONFIG["topdir"] = File.dirname(__FILE__)
diff --git a/version.c b/version.c
index 59d4e5e..2558aa0 100644
--- a/version.c
+++ b/version.c
@@ -50,8 +50,12 @@
#ifndef RUBY_ARCHLIB
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
#endif
+#ifndef RUBY_SITE_ARCHLIB
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
+#endif
+#ifndef RUBY_VENDOR_ARCHLIB
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
+#endif
#ifdef RUBY_THINARCH
#define RUBY_THIN_ARCHLIB RUBY_LIB "/"RUBY_THINARCH
#define RUBY_SITE_THIN_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_THINARCH
--
1.7.6.1

View File

@ -0,0 +1,11 @@
--- a/configure.in.orig 2011-10-18 08:56:21.587594685 +0200
+++ b/configure.in 2011-10-18 08:56:59.751593321 +0200
@@ -2925,6 +2925,8 @@
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
+target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+
if test "${universal_binary-no}" = yes ; then
arch="universal-${target_os}"
AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,

View File

@ -0,0 +1,132 @@
From df4253a5b79b63f16f215f2c19f1b9666c4ca01e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 8 Sep 2011 15:30:05 +0200
Subject: [PATCH] Add configuration arch specific dir flag.
---
Makefile.in | 1 +
configure.in | 20 ++++++++++++++++++++
tool/mkconfig.rb | 4 +++-
version.c | 2 ++
4 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index bcdaf5f..d61b2ee 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -31,6 +31,7 @@ libexecdir = @libexecdir@
datarootdir = @datarootdir@
datadir = @datadir@
arch = @arch@
+archdir = @archdir@
sitearch = @sitearch@
sitedir = @sitedir@
ruby_version = @ruby_version@
diff --git a/configure.in b/configure.in
index 83e5d76..e6dc38c 100644
--- a/configure.in
+++ b/configure.in
@@ -2783,6 +2783,15 @@ else
RUBY_LIB_VERSION="\"${ruby_version}\""
fi
+AC_ARG_WITH(archdir,
+ AS_HELP_STRING([--with-archdir=DIR], [architecture specific ruby libraries [[LIBDIR/RUBY_BASE_NAME/ARCH]]]),
+ [archdir=$withval],
+ [archdir='${rubylibprefix}/${arch}'])
+dir="${archdir}"
+until ARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${ARCH_DIR}"; do
+ dir="${ARCH_DIR}"
+done
+
AC_ARG_WITH(sitedir,
AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
[sitedir=$withval],
@@ -2805,16 +2814,25 @@ if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=""
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_ARCH_LIB_PATH="`eval echo "$ARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
else
RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_ARCH_LIB_PATH="`eval echo \\"$ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
fi
pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
+AS_CASE(["$RUBY_ARCH_LIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_ARCH_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_ARCH_LIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_ARCH_LIB_PATH="\"${RUBY_ARCH_LIB_PATH}\""
+ ])
AS_CASE(["$RUBY_SITE_LIB_PATH"],
["$RUBY_LIB_PREFIX/"*], [
RUBY_SITE_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_LIB_PATH\" : \"$pat\"`"'"'
@@ -2845,6 +2863,7 @@ else
fi
AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, "${RUBY_EXEC_PREFIX}")
AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX})
+AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, ${RUBY_ARCH_LIB_PATH})
if test "x$SITE_DIR" = xno; then
AC_DEFINE(NO_RUBY_SITE_LIB)
else
@@ -2859,6 +2878,7 @@ fi
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(ruby_version)dnl
+AC_SUBST(archdir)dnl
AC_SUBST(sitedir)dnl
AC_SUBST(vendordir)dnl
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index b707c4b..9780ef2 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -43,6 +43,7 @@ v_others = []
continued_name = nil
continued_line = nil
path_version = "/$(ruby_version)"
+archdir_override = "$(vendorlibdir)/$(sitearch)"
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -77,6 +78,7 @@ File.foreach "config.status" do |line|
when /^RUBY_INSTALL_NAME$/; next if $install_name
when /^RUBY_SO_NAME$/; next if $so_name
when /^arch$/; if val.empty? then val = arch else arch = val end
+ when /^archdir$/; archdir_override = val; next
when /^sitearch/; val = '$(arch)' if val.empty?
end
case val
@@ -207,7 +209,7 @@ print(*v_fast)
print(*v_others)
print <<EOS
CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
+ CONFIG["archdir"] = "#{archdir_override}"
EOS
print <<EOS unless v_disabled["sitedir"]
CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
diff --git a/version.c b/version.c
index 59d4e5e..915a0a2 100644
--- a/version.c
+++ b/version.c
@@ -47,7 +47,9 @@
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
#endif
+#ifndef RUBY_ARCHLIB
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
+#endif
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
#ifdef RUBY_THINARCH
--
1.7.6.1

View File

@ -0,0 +1,31 @@
--- ruby-1.9.3-p0/test/ruby/test_bignum.rb.orig 2011-11-10 09:52:59.101925465 +0100
+++ ruby-1.9.3-p0/test/ruby/test_bignum.rb 2011-11-10 09:54:14.580798826 +0100
@@ -378,7 +378,7 @@
assert_equal(true, (2**32).even?)
end
- def interrupt
+ def assert_interrupt
time = Time.now
start_flag = false
end_flag = false
@@ -387,14 +387,16 @@
yield
end_flag = true
end
- sleep 1
+ Thread.pass until start_flag
thread.raise
thread.join rescue nil
- start_flag && !end_flag && Time.now - time < 10
+ time = Time.now - time
+ assert_equal([true, false], [start_flag, end_flag])
+ assert_operator(time, :<, 10)
end
def test_interrupt
- assert(interrupt { (65536 ** 65536).to_s })
+ assert_interrupt {(65536 ** 65536).to_s}
end
def test_too_big_to_s

View File

@ -0,0 +1,97 @@
From 279a693ce4ef3a887ce8d4fa59e0f2616a14d91a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@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/mkconfig.rb | 1 +
tool/rbinstall.rb | 9 +++++++++
version.c | 4 ++++
4 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/configure.in b/configure.in
index b1bc951..91c5d0d 100644
--- a/configure.in
+++ b/configure.in
@@ -2828,6 +2828,13 @@ until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
dir="${VENDORARCH_DIR}"
done
+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")
+fi
+
if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=""
@@ -2921,6 +2928,7 @@ AC_SUBST(sitearch)dnl
AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
AC_SUBST(vendorarchdir)dnl
+AC_SUBST(rubygemsdir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index b707c4b..9fecbfb 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -84,6 +84,7 @@ File.foreach "config.status" do |line|
when /^sitearchdir$/; sitearchdir_override = val; next
when /^vendorarchdir$/; vendorarchdir_override = val; next
when /^sitearch/; val = '$(arch)' if val.empty?
+ when /^rubygemsdir/; next if val.empty?
end
case val
when /^\$\(ac_\w+\)$/; next
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 6bfc73e..31dc446 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -300,6 +300,7 @@ sitelibdir = CONFIG["sitelibdir"]
sitearchlibdir = CONFIG["sitearchdir"]
vendorlibdir = CONFIG["vendorlibdir"]
vendorarchlibdir = CONFIG["vendorarchdir"]
+rubygemsdir = CONFIG["rubygemsdir"]
mandir = CONFIG["mandir"]
capidir = CONFIG["docdir"]
configure_args = Shellwords.shellwords(CONFIG["configure_args"])
@@ -487,7 +488,15 @@ end
install?(:local, :comm, :lib) do
prepare "library scripts", rubylibdir
noinst = %w[README* *.txt *.rdoc]
+ 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 59d4e5e..12ba7e9 100644
--- a/version.c
+++ b/version.c
@@ -103,6 +103,10 @@ const char ruby_initial_load_paths[] =
#endif
#endif
+#ifdef RUBYGEMS_DIR
+ RUBYGEMS_DIR "\0"
+#endif
+
RUBY_LIB "\0"
#ifdef RUBY_THIN_ARCHLIB
RUBY_THIN_ARCHLIB "\0"
--
1.7.7

View File

@ -0,0 +1,149 @@
From fa1a50ad10814f724b8713865dc222724cb955ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 25 Aug 2011 14:33:51 +0200
Subject: [PATCH] Allow to disable versioned paths.
---
configure.in | 11 +++++++++++
tool/mkconfig.rb | 9 ++++++---
version.c | 10 ++++++++++
3 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/configure.in b/configure.in
index e742e74..86cb68f 100644
--- a/configure.in
+++ b/configure.in
@@ -2953,6 +2953,17 @@ else
fi
AC_SUBST(USE_RUBYGEMS)
+AC_ARG_ENABLE(versioned-paths,
+ AS_HELP_STRING([--disable-versioned-paths], [disable paths with version number]),
+ [enable_versioned_paths="$enableval"], [enable_versioned_paths=yes])
+if test x"$enable_versioned_paths" = xno; then
+ AC_DEFINE(DISABLE_VERSIONED_PATHS, 1)
+ USE_VERSIONED_PATHS=NO
+else
+ USE_VERSIONED_PATHS=YES
+fi
+AC_SUBST(USE_VERSIONED_PATHS)
+
arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
AS_MKDIR_P("${arch_hdrdir}")
config_h="${arch_hdrdir}/config.h"
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index a2221f0..47d8c8f 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -42,6 +42,7 @@ v_others = []
vars = {}
continued_name = nil
continued_line = nil
+path_version = "/$(ruby_version)"
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -138,6 +139,8 @@ File.foreach "config.status" do |line|
case name
when "ruby_version"
version = val[/\A"(.*)"\z/, 1]
+ when /^USE_VERSIONED_PATHS$/
+ path_version = nil if /NO/ =~ val
end
end
# break if /^CEOF/
@@ -203,15 +206,15 @@ end
print(*v_fast)
print(*v_others)
print <<EOS
- CONFIG["rubylibdir"] = "$(rubylibprefix)/$(ruby_version)"
+ CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
EOS
print <<EOS unless v_disabled["sitedir"]
- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
+ CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
EOS
print <<EOS unless v_disabled["vendordir"]
- CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
+ CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
EOS
print <<EOS
diff --git a/version.c b/version.c
index 59d4e5e..641dc33 100644
--- a/version.c
+++ b/version.c
@@ -38,9 +38,15 @@
#define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby"
#endif
+#ifdef DISABLE_VERSIONED_PATHS
+#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
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
@@ -75,8 +81,10 @@ const char ruby_initial_load_paths[] =
RUBY_SITE_THIN_ARCHLIB "\0"
#endif
RUBY_SITE_ARCHLIB "\0"
+#ifndef DISABLE_VERSIONED_PATHS
RUBY_SITE_LIB "\0"
#endif
+#endif
#ifndef NO_RUBY_VENDOR_LIB
RUBY_VENDOR_LIB2 "\0"
@@ -84,8 +92,10 @@ const char ruby_initial_load_paths[] =
RUBY_VENDOR_THIN_ARCHLIB "\0"
#endif
RUBY_VENDOR_ARCHLIB "\0"
+#ifndef DISABLE_VERSIONED_PATHS
RUBY_VENDOR_LIB "\0"
#endif
+#endif
RUBY_LIB "\0"
#ifdef RUBY_THIN_ARCHLIB
--
1.7.7.3
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
index a3c65bf..0575730 100644
--- a/lib/rdoc/ri/paths.rb
+++ b/lib/rdoc/ri/paths.rb
@@ -11,9 +11,9 @@ module RDoc::RI::Paths
version = RbConfig::CONFIG['ruby_version']
base = if RbConfig::CONFIG.key? 'ridir' then
- File.join RbConfig::CONFIG['ridir'], version
+ File.join [RbConfig::CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
else
- File.join RbConfig::CONFIG['datadir'], 'ri', version
+ File.join [RbConfig::CONFIG['datadir'], 'ri', RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
end
SYSDIR = File.join base, "system"
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index cec8c9f..fed14d2 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -379,7 +379,7 @@ end
install?(:doc, :rdoc) do
if $rdocdir
- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system")
+ ridatadir = File.join([CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil, "system"].compact)
prepare "rdoc", ridatadir
install_recursive($rdocdir, ridatadir, :mode => $data_mode)
end
--
1.7.6

View File

@ -0,0 +1,40 @@
diff --git a/ext/json/parser/parser.c b/ext/json/parser/parser.c
index d1d14c7..1773616 100644
--- a/ext/json/parser/parser.c
+++ b/ext/json/parser/parser.c
@@ -1293,6 +1293,7 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
{
char *p = string, *pe = string, *unescape;
int unescape_len;
+ char buf[4];
while (pe < stringEnd) {
if (*pe == '\\') {
@@ -1325,7 +1326,6 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
if (pe > stringEnd - 4) {
return Qnil;
} else {
- char buf[4];
UTF32 ch = unescape_unicode((unsigned char *) ++pe);
pe += 3;
if (UNI_SUR_HIGH_START == (ch & 0xFC00)) {
diff --git a/ext/json/parser/parser.rl b/ext/json/parser/parser.rl
index e7d47e1..33e775c 100644
--- a/ext/json/parser/parser.rl
+++ b/ext/json/parser/parser.rl
@@ -393,6 +393,7 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
{
char *p = string, *pe = string, *unescape;
int unescape_len;
+ char buf[4];
while (pe < stringEnd) {
if (*pe == '\\') {
@@ -425,7 +426,6 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
if (pe > stringEnd - 4) {
return Qnil;
} else {
- char buf[4];
UTF32 ch = unescape_unicode((unsigned char *) ++pe);
pe += 3;
if (UNI_SUR_HIGH_START == (ch & 0xFC00)) {

View File

@ -0,0 +1,12 @@
diff -up ruby-1.9.3-p0/ext/tk/extconf.rb.orig ruby-1.9.3-p0/ext/tk/extconf.rb
--- ruby-1.9.3-p0/ext/tk/extconf.rb.orig 2011-06-29 16:11:19.000000000 +0200
+++ ruby-1.9.3-p0/ext/tk/extconf.rb 2011-10-18 16:15:59.406299659 +0200
@@ -114,7 +114,7 @@ def is_macosx?
end
def maybe_64bit?
- /64|universal/ =~ RUBY_PLATFORM
+ /64|universal|s390x/ =~ RUBY_PLATFORM
end
def check_tcltk_version(version)

View File

@ -0,0 +1,53 @@
Index: ChangeLog
===================================================================
--- ChangeLog (revision 34277)
+++ ChangeLog (revision 34278)
@@ -1,3 +1,13 @@
+Thu Jan 12 13:51:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (cont_restore_0): prevent optimizing out `sp'. sp is used for
+ reserving a memory space with ALLOCA_N for restoring machine stack
+ stored in cont->machine_stack, but clang optimized out it (and
+ maybe #5851 is also caused by this).
+ This affected TestContinuation#test_check_localvars.
+
+ * cont.c (cont_restore_1): revert workaround introduced in r32201.
+
Mon Oct 10 22:33:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* test/-ext-/old_thread_select/test_old_thread_select.rb:
Index: cont.c
===================================================================
--- cont.c (revision 34277)
+++ cont.c (revision 34278)
@@ -669,10 +669,9 @@
}
#endif
if (cont->machine_stack_src) {
- size_t i;
FLUSH_REGISTER_WINDOWS;
- for (i = 0; i < cont->machine_stack_size; i++)
- cont->machine_stack_src[i] = cont->machine_stack[i];
+ MEMCPY(cont->machine_stack_src, cont->machine_stack,
+ VALUE, cont->machine_stack_size);
}
#ifdef __ia64
@@ -742,7 +741,7 @@
if (&space[0] > end) {
# ifdef HAVE_ALLOCA
volatile VALUE *sp = ALLOCA_N(VALUE, &space[0] - end);
- (void)sp;
+ space[0] = *sp;
# else
cont_restore_0(cont, &space[0]);
# endif
@@ -758,7 +757,7 @@
if (&space[STACK_PAD_SIZE] < end) {
# ifdef HAVE_ALLOCA
volatile VALUE *sp = ALLOCA_N(VALUE, end - &space[STACK_PAD_SIZE]);
- (void)sp;
+ space[0] = *sp;
# else
cont_restore_0(cont, &space[STACK_PAD_SIZE-1]);
# endif

View File

@ -0,0 +1,76 @@
--- ruby-1.9.3-p0/lib/rubygems/uninstaller.rb.orig 2011-10-31 10:22:36.321579483 +0100
+++ ruby-1.9.3-p0/lib/rubygems/uninstaller.rb 2011-10-31 10:34:25.563626119 +0100
@@ -51,15 +51,14 @@
@bin_dir = options[:bin_dir]
@format_executable = options[:format_executable]
+ if options[:force]
+ @force_all = true
+ @force_ignore = true
+ end
+
# only add user directory if install_dir is not set
@user_install = false
@user_install = options[:user_install] unless options[:install_dir]
-
- if @user_install then
- Gem.use_paths Gem.user_dir, @gem_home
- else
- Gem.use_paths @gem_home
- end
end
##
@@ -69,10 +68,24 @@
def uninstall
list = Gem::Specification.find_all_by_name(@gem, @version)
+ list, other_repo_specs = list.partition do |spec|
+ @gem_home == spec.base_dir or
+ (@user_install and spec.base_dir == Gem.user_dir)
+ end
+
if list.empty? then
- raise Gem::InstallError, "gem #{@gem.inspect} is not installed"
+ raise Gem::InstallError, "gem #{@gem.inspect} is not installed" if
+ other_repo_specs.empty?
+
+ other_repos = other_repo_specs.map { |spec| spec.base_dir }.uniq
+
+ message = ["#{@gem} is not installed in GEM_HOME, try:"]
+ message.concat other_repos.map { |repo|
+ "\tgem uninstall -i #{repo} #{@gem}"
+ }
- elsif list.size > 1 and @force_all then
+ raise Gem::InstallError, message.join("\n")
+ elsif @force_all then
remove_all list
elsif list.size > 1 then
@@ -250,12 +263,10 @@
msg << "\t#{spec.full_name}"
spec.dependent_gems.each do |dep_spec, dep, satlist|
- msg <<
- ("#{dep_spec.name}-#{dep_spec.version} depends on " +
- "[#{dep.name} (#{dep.requirement})]")
+ msg << "#{dep_spec.name}-#{dep_spec.version} depends on #{dep}"
end
- msg << 'If you remove this gems, one or more dependencies will not be met.'
+ msg << 'If you remove this gem, one or more dependencies will not be met.'
msg << 'Continue with Uninstall?'
return ask_yes_no(msg.join("\n"), true)
end
--- ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb.orig 2011-11-03 08:58:31.411272176 +0100
+++ ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb 2011-11-03 08:58:43.010272351 +0100
@@ -225,7 +225,7 @@
uninstaller = Gem::Uninstaller.new('a')
- use_ui Gem::MockGemUi.new("2\n") do
+ use_ui Gem::MockGemUi.new("2\ny\n") do
uninstaller.uninstall
end

View File

@ -0,0 +1,24 @@
diff --git a/test/webrick/test_cgi.rb b/test/webrick/test_cgi.rb
index 1185316..0ef1b37 100644
--- a/test/webrick/test_cgi.rb
+++ b/test/webrick/test_cgi.rb
@@ -14,6 +14,7 @@ class TestWEBrickCGI < Test::Unit::TestCase
def req.meta_vars
meta = super
meta["RUBYLIB"] = $:.join(File::PATH_SEPARATOR)
+ meta[RbConfig::CONFIG['LIBPATHENV']] = ENV[RbConfig::CONFIG['LIBPATHENV']]
return meta
end
},
diff --git a/test/webrick/test_filehandler.rb b/test/webrick/test_filehandler.rb
index bcdb3df..f78ba5c 100644
--- a/test/webrick/test_filehandler.rb
+++ b/test/webrick/test_filehandler.rb
@@ -252,6 +252,7 @@ class WEBrick::TestFileHandler < Test::Unit::TestCase
def req.meta_vars
meta = super
meta["RUBYLIB"] = $:.join(File::PATH_SEPARATOR)
+ meta[RbConfig::CONFIG['LIBPATHENV']] = ENV[RbConfig::CONFIG['LIBPATHENV']]
return meta
end
},

1088
ruby.spec

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,296 @@
From 5a37a3489491a33f2e7011043fbbcd9a765e1777 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 3 Nov 2011 16:43:05 +0100
Subject: [PATCH 1/6] Add dedicate extensions folder into $LOAD_PATH.
---
lib/rubygems/specification.rb | 37 ++++++++++++++++++++++++++++++-------
1 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 97db19e..263e7d3 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -843,6 +843,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
@@ -954,16 +960,16 @@ class Gem::Specification
def contains_requirable_file? file
root = full_gem_path
+ ext = ext_dir
+
+ require_paths.any? do |lib|
+ base = ["#{root}/#{lib}/#{file}"]
+ base << "#{ext}/#{lib}/#{file}" unless extensions.empty?
- require_paths.each do |lib|
- base = "#{root}/#{lib}/#{file}"
- Gem.suffixes.each do |suf|
- path = "#{base}#{suf}"
- return true if File.file? path
+ base.any? do |path|
+ Gem.suffixes.any? { |suf| File.file? "#{path}#{suf}" }
end
end
-
- return false
end
##
@@ -1273,6 +1279,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.7.7.3
From 671e4285bf9db948bc5f054d7d3d931cdd7a17f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 16 Nov 2011 13:26:48 +0100
Subject: [PATCH 2/6] 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 74d803d..0063c7f 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -499,7 +499,7 @@ TEXT
def build_extensions
return if spec.extensions.empty?
say "Building native extensions. This could take a while..."
- 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 263e7d3..d31b93b 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1283,16 +1283,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.7.7.3
From 11b4a0cbadd8b1d3320f838881aa60feb6f848e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 16 Nov 2011 14:52:16 +0100
Subject: [PATCH 3/6] Simplify the extending of $LOAD_PATH for binary gems.
---
lib/rubygems/specification.rb | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index d31b93b..e65ea2d 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -843,11 +843,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
@@ -1291,7 +1287,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.7.7.3
From 5d46cd2b1ac9517a9cbcfa430261e62bb3a376b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 9 Dec 2011 16:31:04 +0100
Subject: [PATCH 4/6] 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 0063c7f..83b8fd5 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -499,7 +499,7 @@ TEXT
def build_extensions
return if spec.extensions.empty?
say "Building native extensions. This could take a while..."
- 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 e65ea2d..8be2ade 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -843,7 +843,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
@@ -1279,7 +1279,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.7.7.3
From 6229583633802b45e5a3e5689ab9077347cd9ef7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 13 Dec 2011 12:14:54 +0100
Subject: [PATCH 5/6] Remove binary extensions during uninstall.
---
lib/rubygems/uninstaller.rb | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb
index cc32ea4..94d78e0 100644
--- a/lib/rubygems/uninstaller.rb
+++ b/lib/rubygems/uninstaller.rb
@@ -213,6 +213,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.7.7.3
From bc40e1b9f60a9a04456e3504ffe6ee600b6da269 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 13 Dec 2011 14:27:14 +0100
Subject: [PATCH 6/6] 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 20b4198..6d8711f 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -87,6 +87,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
+
+ ##
# The default system-wide source info cache directory
def self.default_system_source_cache_dir
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 8be2ade..f54210a 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1287,10 +1287,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.7.7.3

View File

@ -1,2 +1 @@
3abd9e2a29f756a0d30c7bfca578cdeb ruby-1.8.7-p357.tar.bz2
01b1053cf357459349bf74363756ad41 ruby-revc2dfaa7d40531aef3706bcc16f38178b0c6633ee-ext_tk.tar.gz
8e2fef56185cfbaf29d0c8329fc77c05 ruby-1.9.3-p0.tar.gz