[49773] trunk/dports/lang/ruby

kimuraw at macports.org kimuraw at macports.org
Fri Apr 17 18:27:53 PDT 2009


Revision: 49773
          http://trac.macports.org/changeset/49773
Author:   kimuraw at macports.org
Date:     2009-04-17 18:27:52 -0700 (Fri, 17 Apr 2009)
Log Message:
-----------
lang/ruby:

- upgrade to 1.8.7-p160
- refactoring patchfiles: for purpose, not path
    Makefile.in -> vendordir, (remove r22808: seems to need not)
    configure.in -> vendordir, bug19050 (#19050: use $(CC) not cc)
    mkmf.rb -> vendordir, bug3604 (#3604: gcc4 fails to detect linking at configure)
    mkconfig.rb -> vendordir
    patch-lib-rexml-formatters-pretty.rb.diff -> (remove: this bug was fixed)
- fix failure of the patch thread_hooks for 1.8.7-p160 and rename (add .diff)

Modified Paths:
--------------
    trunk/dports/lang/ruby/Portfile

Added Paths:
-----------
    trunk/dports/lang/ruby/files/patch-bug19050.diff
    trunk/dports/lang/ruby/files/patch-bug3604.diff
    trunk/dports/lang/ruby/files/patch-thread-hooks.diff
    trunk/dports/lang/ruby/files/patch-vendordir.diff

Removed Paths:
-------------
    trunk/dports/lang/ruby/files/patch-Makefile.in
    trunk/dports/lang/ruby/files/patch-configure.in
    trunk/dports/lang/ruby/files/patch-lib-rexml-formatters-pretty.rb.diff
    trunk/dports/lang/ruby/files/patch-mkconfig.rb
    trunk/dports/lang/ruby/files/patch-mkmf.rb
    trunk/dports/lang/ruby/files/patch-thread-hooks

Modified: trunk/dports/lang/ruby/Portfile
===================================================================
--- trunk/dports/lang/ruby/Portfile	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/Portfile	2009-04-18 01:27:52 UTC (rev 49773)
@@ -3,8 +3,7 @@
 PortSystem 1.0
 
 name			ruby
-version			1.8.7-p72
-revision		3
+version			1.8.7-p160
 
 categories		lang ruby
 maintainers		kimuraw
@@ -19,43 +18,39 @@
 master_sites	ruby:1.8
 				
 dist_subdir		ruby
-checksums		md5 0b215c46b89b28d7ab8d56d96e72d5b9 \
-				rmd160 07bf0d6987ba111aed988093c569fb66ba54891b \
-				sha1 462e990a724580e4dfeeac5a271b93f6cfcbf5c7
+checksums		md5 f8ddb886b8a81cf005f53e9a9541091d \
+				rmd160 77469c9c4e9303f2ec8ca72a0cbf98b674cb1415 \
+				sha1 64ed631a819f28d9dd86d2c699e1b0a94d7e5dc9
 
 use_bzip2		yes
 
 platforms		darwin
 
-depends_build		port:autoconf
+depends_build	port:autoconf
 
 depends_lib		port:libiconv \
 				port:readline \
 				port:openssl \
 				port:zlib \
 				port:ncurses
-				
-patchfiles		patch-Makefile.in \
-				patch-configure.in \
-				patch-mkmf.rb \
-				patch-mkconfig.rb
 
-# http://trac.macports.org/ticket/16853
-# abandon wrapping if the line contains no space.
-# (REXML::Formatters::Pretty#wrap)
-# http://redmine.ruby-lang.org/issues/show/516
-patchfiles-append patch-lib-rexml-formatters-pretty.rb.diff
+# vendordir: enable vendor-specific.rb
+# #3604: gcc4 fails to detect linking at configure
+# #19050: use $(CC) not cc, this change has been merged at ruby-1.8 trunk
+patchfiles		patch-vendordir.diff \
+				patch-bug3604.diff \
+				patch-bug19050.diff
 
 # ignore getcontext() and setcontext()
 # on 10.5, these functions have some problems (SEGV on ppc, slower than 1.8.6)
 # http://chopine.be/lrz/ruby-osx-patches/ignore-gsetcontext.diff
 patchfiles-append patch-node.h.diff
 
-use_autoconf			yes
-autoconf.cmd autoreconf
-autoconf.args -fvi
+use_autoconf	yes
+autoconf.cmd	autoreconf
+autoconf.args	-fvi
 
-use_parallel_build      yes
+use_parallel_build		yes
 
 configure.args	--enable-shared \
 				--mandir="${prefix}/share/man" \
@@ -96,7 +91,7 @@
 }
 
 variant thread_hooks description "apply Apple's thread_hooks patch" {
-	patchfiles-append		patch-thread-hooks
+	patchfiles-append		patch-thread-hooks.diff
 }
 
 variant no_doc description "do not install rdoc documents" {

Deleted: trunk/dports/lang/ruby/files/patch-Makefile.in
===================================================================
--- trunk/dports/lang/ruby/files/patch-Makefile.in	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/files/patch-Makefile.in	2009-04-18 01:27:52 UTC (rev 49773)
@@ -1,25 +0,0 @@
---- Makefile.in.orig	2007-02-13 08:01:19.000000000 +0900
-+++ Makefile.in	2007-03-15 14:19:03.000000000 +0900
-@@ -24,6 +24,8 @@
- arch = @arch@
- sitearch = @sitearch@
- sitedir = @sitedir@
-+vendorarch = @vendorarch@
-+vendordir = @vendordir@
- 
- TESTUI = console
- TESTS =
-@@ -101,11 +103,11 @@
- 
- miniruby$(EXEEXT):
- 		@$(RM) $@
--		$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@
-+		$(PURIFY) $(CC) $(XLDFLAGS) $(LDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@
- 
- $(PROGRAM):
- 		@$(RM) $@
--		$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@
-+		$(PURIFY) $(CC) $(XLDFLAGS) $(LDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@
- 
- # We must `rm' the library each time this rule is invoked because "updating" a
- # MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not

Added: trunk/dports/lang/ruby/files/patch-bug19050.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-bug19050.diff	                        (rev 0)
+++ trunk/dports/lang/ruby/files/patch-bug19050.diff	2009-04-18 01:27:52 UTC (rev 49773)
@@ -0,0 +1,20 @@
+--- ../ruby-1.8.7-p160.org/configure.in	2009-01-19 18:25:38.000000000 +0900
++++ ./configure.in	2009-04-18 00:13:45.000000000 +0900
+@@ -1213,7 +1213,7 @@
+ 	rhapsody*)	: ${LDSHARED='cc -dynamic -bundle -undefined suppress'}
+ 			: ${LDFLAGS=""}
+ 			rb_cv_dlopen=yes ;;
+-	darwin*)	: ${LDSHARED='cc -dynamic -bundle -undefined suppress -flat_namespace'}
++	darwin*)	: ${LDSHARED='$(CC) -dynamic -bundle -undefined suppress -flat_namespace'}
+ 			: ${LDFLAGS=""}
+ 			: ${LIBPATHENV=DYLD_LIBRARY_PATH}
+ 			rb_cv_dlopen=yes ;;
+@@ -1526,7 +1526,7 @@
+ 	;;
+     darwin*)
+ 	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(MAJOR).$(MINOR).$(TEENY).dylib'
+-	LIBRUBY_LDSHARED='cc -dynamiclib -undefined suppress -flat_namespace'
++	LIBRUBY_LDSHARED='$(CC) -dynamiclib -undefined suppress -flat_namespace'
+ 	LIBRUBY_DLDFLAGS='-install_name $(libdir)/lib$(RUBY_SO_NAME).dylib -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(MAJOR).$(MINOR)'
+ 	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_SO_NAME).dylib'
+ 	;;

Added: trunk/dports/lang/ruby/files/patch-bug3604.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-bug3604.diff	                        (rev 0)
+++ trunk/dports/lang/ruby/files/patch-bug3604.diff	2009-04-18 01:27:52 UTC (rev 49773)
@@ -0,0 +1,27 @@
+--- ../ruby-1.8.7-p160.org/lib/mkmf.rb	2009-03-31 18:37:22.000000000 +0900
++++ ./lib/mkmf.rb	2009-04-17 23:57:04.000000000 +0900
+@@ -461,7 +461,7 @@
+ 
+ def try_func(func, libs, headers = nil, &b)
+   headers = cpp_include(headers)
+-  try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b)
++  try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b)
+ #{COMMON_HEADERS}
+ #{headers}
+ /*top*/
+@@ -473,6 +473,15 @@
+ int main() { return 0; }
+ int t() { #{func}(); return 0; }
+ SRC
++int #{func}();
++/*top*/
++/*
++ * http://trac.macports.org/ticket/3604
++ * gcc 4.0 on 10.4 has a problem
++ */
++int main() { return 0; }
++int t() { #{func}(); return 0; }
++SRC
+ end
+ 
+ def try_var(var, headers = nil, &b)

Deleted: trunk/dports/lang/ruby/files/patch-configure.in
===================================================================
--- trunk/dports/lang/ruby/files/patch-configure.in	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/files/patch-configure.in	2009-04-18 01:27:52 UTC (rev 49773)
@@ -1,41 +0,0 @@
---- configure.in.orig	2009-03-29 23:59:20.000000000 -0400
-+++ configure.in	2009-03-30 00:00:15.000000000 -0400
-@@ -1212,7 +1212,7 @@
- 	rhapsody*)	: ${LDSHARED='cc -dynamic -bundle -undefined suppress'}
- 			: ${LDFLAGS=""}
- 			rb_cv_dlopen=yes ;;
--	darwin*)	: ${LDSHARED='cc -dynamic -bundle -undefined suppress -flat_namespace'}
-+	darwin*)	: ${LDSHARED='$(CC) -dynamic -bundle -undefined suppress -flat_namespace'}
- 			: ${LDFLAGS=""}
- 			: ${LIBPATHENV=DYLD_LIBRARY_PATH}
- 			rb_cv_dlopen=yes ;;
-@@ -1525,7 +1525,7 @@
- 	;;
-     darwin*)
- 	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(MAJOR).$(MINOR).$(TEENY).dylib'
--	LIBRUBY_LDSHARED='cc -dynamiclib -undefined suppress -flat_namespace'
-+	LIBRUBY_LDSHARED='$(CC) -dynamiclib -undefined suppress -flat_namespace'
- 	LIBRUBY_DLDFLAGS='-install_name $(libdir)/lib$(RUBY_SO_NAME).dylib -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(MAJOR).$(MINOR)'
- 	LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_SO_NAME).dylib'
- 	;;
-@@ -1752,6 +1752,7 @@
- AC_SUBST(arch)dnl
- AC_SUBST(sitearch)dnl
- AC_SUBST(sitedir)dnl
-+AC_SUBST(vendorarch)dnl
- AC_SUBST(vendordir)dnl
- 
- configure_args=$ac_configure_args
-@@ -1774,8 +1775,10 @@
- fi
- 
- case "$target_os" in
--  mingw*) sitearch="$target_cpu-$rb_cv_msvcrt" ;;
--  *) sitearch="${arch}" ;;
-+  mingw*) sitearch="$target_cpu-$rb_cv_msvcrt"
-+  	  vendorarch="$target_cpu-$rb_cv_msvcrt" ;;
-+  *) sitearch="${arch}"
-+     vendorarch="${arch}" ;;
- esac
- 
- AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")

Deleted: trunk/dports/lang/ruby/files/patch-lib-rexml-formatters-pretty.rb.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-lib-rexml-formatters-pretty.rb.diff	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/files/patch-lib-rexml-formatters-pretty.rb.diff	2009-04-18 01:27:52 UTC (rev 49773)
@@ -1,10 +0,0 @@
---- lib/rexml/formatters/pretty.rb	2008/06/04 09:37:38	16810
-+++ lib/rexml/formatters/pretty.rb	2008/09/23 11:09:39	19487
-@@ -128,6 +128,7 @@
-         # Recursively wrap string at width.
-         return string if string.length <= width
-         place = string.rindex(' ', width) # Position in string with last ' ' before cutoff
-+        return string if place.nil?
-         return string[0,place] + "\n" + wrap(string[place+1..-1], width)
-       end
- 

Deleted: trunk/dports/lang/ruby/files/patch-mkconfig.rb
===================================================================
--- trunk/dports/lang/ruby/files/patch-mkconfig.rb	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/files/patch-mkconfig.rb	2009-04-18 01:27:52 UTC (rev 49773)
@@ -1,16 +0,0 @@
---- mkconfig.rb.orig	2008-06-21 17:22:11.000000000 +0900
-+++ mkconfig.rb	2008-06-21 17:23:00.000000000 +0900
-@@ -147,6 +147,13 @@
-   CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
-   CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
-   CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
-+  # macports -rvendor-specific support
-+  if defined?(VENDOR_SPECIFIC) && VENDOR_SPECIFIC
-+    CONFIG["sitearch"] = CONFIG["vendorarch"]
-+    CONFIG["sitedir"] = CONFIG["vendordir"]
-+    CONFIG["sitelibdir"] = CONFIG["vendorlibdir"]
-+    CONFIG["sitearchdir"] = CONFIG["vendorarchdir"]
-+  end
-   CONFIG["topdir"] = File.dirname(__FILE__)
-   MAKEFILE_CONFIG = {}
-   CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}

Deleted: trunk/dports/lang/ruby/files/patch-mkmf.rb
===================================================================
--- trunk/dports/lang/ruby/files/patch-mkmf.rb	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/files/patch-mkmf.rb	2009-04-18 01:27:52 UTC (rev 49773)
@@ -1,31 +0,0 @@
---- lib/mkmf.rb.orig	2008-05-29 13:23:36.000000000 +0200
-+++ lib/mkmf.rb	2008-06-15 11:08:36.000000000 +0200
-@@ -461,7 +461,7 @@
- 
- def try_func(func, libs, headers = nil, &b)
-   headers = cpp_include(headers)
--  try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b)
-+  try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b) or try_link(<<"SRC", libs, &b)
- #{COMMON_HEADERS}
- #{headers}
- /*top*/
-@@ -473,6 +473,11 @@
- int main() { return 0; }
- int t() { #{func}(); return 0; }
- SRC
-+int #{func}();
-+/*top*/
-+int main() { return 0; }
-+int t() { #{func}(); return 0; }
-+SRC
- end
- 
- def try_var(var, headers = nil, &b)
-@@ -1307,6 +1312,7 @@
- RUBY_SO_NAME = #{CONFIG['RUBY_SO_NAME']}
- arch = #{CONFIG['arch']}
- sitearch = #{CONFIG['sitearch']}
-+vendorarch = #{CONFIG['vendorarch']}
- ruby_version = #{Config::CONFIG['ruby_version']}
- ruby = #{$ruby}
- RUBY = $(ruby#{sep})

Deleted: trunk/dports/lang/ruby/files/patch-thread-hooks
===================================================================
--- trunk/dports/lang/ruby/files/patch-thread-hooks	2009-04-18 00:58:43 UTC (rev 49772)
+++ trunk/dports/lang/ruby/files/patch-thread-hooks	2009-04-18 01:27:52 UTC (rev 49773)
@@ -1,132 +0,0 @@
-=== ruby.h
-==================================================================
---- ruby.h	(/trunk)	(revision 16)
-+++ ruby.h	(/branches/thread-hooks)	(revision 16)
-@@ -766,6 +766,19 @@
- void ruby_native_thread_kill _((int));
- #endif
- 
-+
-+typedef unsigned int rb_threadswitch_event_t;
-+
-+#define RUBY_THREADSWITCH_INIT 0x01
-+#define RUBY_THREADSWITCH_FREE 0x02
-+#define RUBY_THREADSWITCH_SAVE 0x04
-+#define RUBY_THREADSWITCH_RESTORE 0x08
-+
-+typedef void (*rb_threadswitch_hook_func_t) _((rb_threadswitch_event_t,VALUE));
-+
-+void *rb_add_threadswitch_hook _((rb_threadswitch_hook_func_t func));
-+void rb_remove_threadswitch_hook _((void *handle));
-+
- #if defined(__cplusplus)
- #if 0
- { /* satisfy cc-mode */
-=== eval.c
-==================================================================
---- eval.c	(/trunk)	(revision 16)
-+++ eval.c	(/branches/thread-hooks)	(revision 16)
-@@ -215,6 +215,25 @@
- 
- #include <sys/stat.h>
- 
-+
-+typedef struct threadswitch_hook {
-+    rb_threadswitch_hook_func_t func;
-+    struct threadswitch_hook *next;
-+} rb_threadswitch_hook_t;
-+
-+static rb_threadswitch_hook_t *threadswitch_hooks;
-+
-+#define EXEC_THREADSWITCH_HOOK(event, thread) \
-+    do { \
-+	rb_threadswitch_hook_t *hook = threadswitch_hooks; \
-+	\
-+	while (hook) { \
-+	    (*hook->func)(event, thread); \
-+            hook = hook->next; \
-+	} \
-+    } while (0)
-+
-+
- VALUE rb_cProc;
- VALUE rb_cBinding;
- static VALUE proc_invoke _((VALUE,VALUE,VALUE,VALUE));
-@@ -10474,6 +10493,8 @@
- thread_free(th)
-     rb_thread_t th;
- {
-+    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_FREE,th->thread);
-+
-     if (th->stk_ptr) free(th->stk_ptr);
-     th->stk_ptr = 0;
- #ifdef __ia64
-@@ -10526,6 +10547,8 @@
-     VALUE *pos;
-     int len;
-     static VALUE tval;
-+    
-+    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_SAVE,th->thread);
- 
-     len = ruby_stack_length(&pos);
-     th->stk_len = 0;
-@@ -10725,6 +10748,8 @@
- #define STACK_PAD_SIZE 1024
-     VALUE space[STACK_PAD_SIZE];
- 
-+    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_RESTORE,th->thread);
-+
- #if STACK_GROW_DIRECTION < 0
-     if (addr_in_prev_frame > th->stk_pos) stack_extend(th, exit, &space[0]);
- #elif STACK_GROW_DIRECTION > 0
-@@ -10841,6 +10866,41 @@
-     rb_thread_main_jump(e, RESTORE_RAISE);
- }
- 
-+void *
-+rb_add_threadswitch_hook(func)
-+    rb_threadswitch_hook_func_t func;
-+{
-+    rb_threadswitch_hook_t *hook;
-+    rb_thread_t th;
-+
-+    hook = ALLOC(rb_threadswitch_hook_t);
-+    hook->func = func;
-+    hook->next = threadswitch_hooks;
-+    threadswitch_hooks = hook;
-+
-+    FOREACH_THREAD(th) {
-+    	(*func)(RUBY_THREADSWITCH_INIT, th->thread);
-+    } END_FOREACH(th);
-+
-+    return hook;
-+}
-+
-+void
-+rb_remove_threadswitch_hook(handle)
-+    void *handle;
-+{
-+    rb_threadswitch_hook_t **hook_p, *hook;
-+	
-+    for (hook_p = &threadswitch_hooks; *hook_p; hook_p = &hook->next) {
-+	hook = *hook_p;
-+	if (hook == (rb_threadswitch_hook_t*)handle) {
-+	    *hook_p = hook->next;
-+	    xfree(hook);
-+	    return;
-+	}
-+    }
-+}
-+
- static void
- copy_fds(dst, src, max)
-     fd_set *dst, *src;
-@@ -12068,6 +12128,8 @@
-     THREAD_ALLOC(th);
-     th->thread = Data_Wrap_Struct(klass, thread_mark, thread_free, th);
- 
-+    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_INIT,th->thread);
-+
-     for (vars = th->dyna_vars; vars; vars = vars->next) {
- 	if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
- 	FL_SET(vars, DVAR_DONT_RECYCLE);

Added: trunk/dports/lang/ruby/files/patch-thread-hooks.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-thread-hooks.diff	                        (rev 0)
+++ trunk/dports/lang/ruby/files/patch-thread-hooks.diff	2009-04-18 01:27:52 UTC (rev 49773)
@@ -0,0 +1,130 @@
+diff -ur ../ruby-1.8.7-p160.mp_patched/eval.c ./eval.c
+--- ../ruby-1.8.7-p160.mp_patched/eval.c	2009-03-23 18:28:31.000000000 +0900
++++ ./eval.c	2009-04-18 00:19:27.000000000 +0900
+@@ -217,6 +217,25 @@
+ 
+ #include <sys/stat.h>
+ 
++
++typedef struct threadswitch_hook {
++    rb_threadswitch_hook_func_t func;
++    struct threadswitch_hook *next;
++} rb_threadswitch_hook_t;
++
++static rb_threadswitch_hook_t *threadswitch_hooks;
++
++#define EXEC_THREADSWITCH_HOOK(event, thread) \
++    do { \
++	rb_threadswitch_hook_t *hook = threadswitch_hooks; \
++	\
++	while (hook) { \
++	    (*hook->func)(event, thread); \
++            hook = hook->next; \
++	} \
++    } while (0)
++
++
+ VALUE rb_cProc;
+ VALUE rb_cBinding;
+ static VALUE proc_invoke _((VALUE,VALUE,VALUE,VALUE));
+@@ -10515,6 +10534,8 @@
+ stack_free(th)
+     rb_thread_t th;
+ {
++    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_FREE,th->thread);
++
+     if (th->stk_ptr) free(th->stk_ptr);
+     th->stk_ptr = 0;
+ #ifdef __ia64
+@@ -10574,6 +10595,8 @@
+     VALUE *pos;
+     size_t len;
+     static VALUE tval;
++    
++    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_SAVE,th->thread);
+ 
+     len = ruby_stack_length(&pos);
+     th->stk_len = 0;
+@@ -10768,6 +10791,8 @@
+ #define STACK_PAD_SIZE 1024
+     volatile VALUE space[STACK_PAD_SIZE], *sp = space;
+ 
++    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_RESTORE,th->thread);
++
+ #if !STACK_GROW_DIRECTION
+     if (space < rb_gc_stack_start) {
+         /* Stack grows downward */
+@@ -10897,6 +10922,41 @@
+     rb_thread_main_jump(e, RESTORE_RAISE);
+ }
+ 
++void *
++rb_add_threadswitch_hook(func)
++    rb_threadswitch_hook_func_t func;
++{
++    rb_threadswitch_hook_t *hook;
++    rb_thread_t th;
++
++    hook = ALLOC(rb_threadswitch_hook_t);
++    hook->func = func;
++    hook->next = threadswitch_hooks;
++    threadswitch_hooks = hook;
++
++    FOREACH_THREAD(th) {
++    	(*func)(RUBY_THREADSWITCH_INIT, th->thread);
++    } END_FOREACH(th);
++
++    return hook;
++}
++
++void
++rb_remove_threadswitch_hook(handle)
++    void *handle;
++{
++    rb_threadswitch_hook_t **hook_p, *hook;
++	
++    for (hook_p = &threadswitch_hooks; *hook_p; hook_p = &hook->next) {
++	hook = *hook_p;
++	if (hook == (rb_threadswitch_hook_t*)handle) {
++	    *hook_p = hook->next;
++	    xfree(hook);
++	    return;
++	}
++    }
++}
++
+ static void
+ copy_fds(dst, src, max)
+     fd_set *dst, *src;
+@@ -12143,6 +12203,8 @@
+     THREAD_ALLOC(th);
+     th->thread = Data_Wrap_Struct(klass, thread_mark, thread_free, th);
+ 
++    EXEC_THREADSWITCH_HOOK(RUBY_THREADSWITCH_INIT,th->thread);
++
+     for (vars = th->dyna_vars; vars; vars = vars->next) {
+ 	if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
+ 	FL_SET(vars, DVAR_DONT_RECYCLE);
+diff -ur ../ruby-1.8.7-p160.mp_patched/ruby.h ./ruby.h
+--- ../ruby-1.8.7-p160.mp_patched/ruby.h	2008-07-10 13:54:53.000000000 +0900
++++ ./ruby.h	2009-04-18 00:16:34.000000000 +0900
+@@ -766,6 +766,19 @@
+ void ruby_native_thread_kill _((int));
+ #endif
+ 
++
++typedef unsigned int rb_threadswitch_event_t;
++
++#define RUBY_THREADSWITCH_INIT 0x01
++#define RUBY_THREADSWITCH_FREE 0x02
++#define RUBY_THREADSWITCH_SAVE 0x04
++#define RUBY_THREADSWITCH_RESTORE 0x08
++
++typedef void (*rb_threadswitch_hook_func_t) _((rb_threadswitch_event_t,VALUE));
++
++void *rb_add_threadswitch_hook _((rb_threadswitch_hook_func_t func));
++void rb_remove_threadswitch_hook _((void *handle));
++
+ #if defined(__cplusplus)
+ #if 0
+ { /* satisfy cc-mode */

Added: trunk/dports/lang/ruby/files/patch-vendordir.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-vendordir.diff	                        (rev 0)
+++ trunk/dports/lang/ruby/files/patch-vendordir.diff	2009-04-18 01:27:52 UTC (rev 49773)
@@ -0,0 +1,65 @@
+diff -ur ../ruby-1.8.7-p160.org/Makefile.in ./Makefile.in
+--- ../ruby-1.8.7-p160.org/Makefile.in	2008-05-31 23:57:11.000000000 +0900
++++ ./Makefile.in	2009-04-17 23:20:20.000000000 +0900
+@@ -24,6 +24,8 @@
+ arch = @arch@
+ sitearch = @sitearch@
+ sitedir = @sitedir@
++vendorarch = @vendorarch@
++vendordir = @vendordir@
+ 
+ TESTUI = console
+ TESTS =
+diff -ur ../ruby-1.8.7-p160.org/configure.in ./configure.in
+--- ../ruby-1.8.7-p160.org/configure.in	2009-01-19 18:25:38.000000000 +0900
++++ ./configure.in	2009-04-17 23:24:01.000000000 +0900
+@@ -1753,6 +1753,7 @@
+ AC_SUBST(arch)dnl
+ AC_SUBST(sitearch)dnl
+ AC_SUBST(sitedir)dnl
++AC_SUBST(vendorarch)dnl
+ AC_SUBST(vendordir)dnl
+ 
+ configure_args=$ac_configure_args
+@@ -1775,8 +1776,10 @@
+ fi
+ 
+ case "$target_os" in
+-  mingw*) sitearch="$target_cpu-$rb_cv_msvcrt" ;;
+-  *) sitearch="${arch}" ;;
++  mingw*) sitearch="$target_cpu-$rb_cv_msvcrt"
++  	  vendorarch="$target_cpu-$rb_cv_msvcrt" ;;
++  *) sitearch="${arch}"
++     vendorarch="${arch}" ;;
+ esac
+ 
+ AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
+Only in .: configure.in.orig
+diff -ur ../ruby-1.8.7-p160.org/lib/mkmf.rb ./lib/mkmf.rb
+--- ../ruby-1.8.7-p160.org/lib/mkmf.rb	2009-03-31 18:37:22.000000000 +0900
++++ ./lib/mkmf.rb	2009-04-17 23:27:44.000000000 +0900
+@@ -1330,6 +1330,7 @@
+ RUBY_SO_NAME = #{CONFIG['RUBY_SO_NAME']}
+ arch = #{CONFIG['arch']}
+ sitearch = #{CONFIG['sitearch']}
++vendorarch = #{CONFIG['vendorarch']}
+ ruby_version = #{Config::CONFIG['ruby_version']}
+ ruby = #{$ruby}
+ RUBY = $(ruby#{sep})
+diff -ur ../ruby-1.8.7-p160.org/mkconfig.rb ./mkconfig.rb
+--- ../ruby-1.8.7-p160.org/mkconfig.rb	2008-06-06 19:39:57.000000000 +0900
++++ ./mkconfig.rb	2009-04-17 23:28:08.000000000 +0900
+@@ -147,6 +147,13 @@
+   CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
+   CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
+   CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
++  # macports -rvendor-specific support
++  if defined?(VENDOR_SPECIFIC) && VENDOR_SPECIFIC
++    CONFIG["sitearch"] = CONFIG["vendorarch"]
++    CONFIG["sitedir"] = CONFIG["vendordir"]
++    CONFIG["sitelibdir"] = CONFIG["vendorlibdir"]
++    CONFIG["sitearchdir"] = CONFIG["vendorarchdir"]
++  end
+   CONFIG["topdir"] = File.dirname(__FILE__)
+   MAKEFILE_CONFIG = {}
+   CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090417/c6ed30dc/attachment-0001.html>


More information about the macports-changes mailing list