[69126] trunk/dports/lang/ruby
kimuraw at macports.org
kimuraw at macports.org
Thu Jun 24 05:54:43 PDT 2010
Revision: 69126
http://trac.macports.org/changeset/69126
Author: kimuraw at macports.org
Date: 2010-06-24 05:54:41 -0700 (Thu, 24 Jun 2010)
Log Message:
-----------
lang/ruby: upgrade to 1.8.7-p299
- refactoring patch-bug15528.diff [ruby-core:29427]
- delete unneeded two patchfiles (merged this version)
Modified Paths:
--------------
trunk/dports/lang/ruby/Portfile
trunk/dports/lang/ruby/files/patch-bug15528.diff
Removed Paths:
-------------
trunk/dports/lang/ruby/files/patch-bug23650.diff
trunk/dports/lang/ruby/files/patch-ruby_bug2648.diff
Modified: trunk/dports/lang/ruby/Portfile
===================================================================
--- trunk/dports/lang/ruby/Portfile 2010-06-24 11:41:19 UTC (rev 69125)
+++ trunk/dports/lang/ruby/Portfile 2010-06-24 12:54:41 UTC (rev 69126)
@@ -4,8 +4,8 @@
PortGroup muniversal 1.0
name ruby
-version 1.8.7-p249
-revision 3
+version 1.8.7-p299
+revision 0
categories lang ruby
maintainers kimuraw
@@ -20,9 +20,9 @@
master_sites ruby:1.8
dist_subdir ruby
-checksums md5 37200cc956a16996bbfd25bb4068f242 \
- rmd160 96b238bd7194652ec194a505c2e5911441c5c5ee \
- sha1 2947f21f22e9345a3e94d84e6f88e7d0fc98a871
+checksums md5 244439a87d75ab24170a9c2b451ce351 \
+ rmd160 0ea4a05f439b6a2cf4bf53339df48aed329f9e43 \
+ sha1 9c66c6ee21d427b5f3183b6c42beb02aa8618cef
use_bzip2 yes
@@ -40,20 +40,10 @@
# #15528: on some Mac, TCPServer.open("localhost", 0) raises SocketError
# like "getaddrinfo: nodename nor servname provided, or not
# known (SocketError)"
-# ruby bug#2648 (backport from 1.8): p249 with pthread sometimes SEGV crash
-# http://redmine.ruby-lang.org/issues/show/2648
-# http://redmine.ruby-lang.org/issues/show/2603
-# #23650: raises `super called outside of method (NoMethodError)'
-# when "super" called at a block of a derived class
-# (backport from 1.8)
-# http://redmine.ruby-lang.org/issues/show/2537
-# http://redmine.ruby-lang.org/issues/show/2419
patchfiles patch-vendordir.diff \
patch-bug3604.diff \
patch-bug19050.diff \
- patch-bug15528.diff \
- patch-ruby_bug2648.diff \
- patch-bug23650.diff
+ patch-bug15528.diff
# ignore getcontext() and setcontext()
# on 10.5, these functions have some problems (SEGV on ppc, slower than 1.8.6)
Modified: trunk/dports/lang/ruby/files/patch-bug15528.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-bug15528.diff 2010-06-24 11:41:19 UTC (rev 69125)
+++ trunk/dports/lang/ruby/files/patch-bug15528.diff 2010-06-24 12:54:41 UTC (rev 69126)
@@ -1,69 +1,55 @@
diff -ur ../ruby-1.8.7-p249.org/ext/socket/socket.c ./ext/socket/socket.c
--- ../ruby-1.8.7-p249.org/ext/socket/socket.c 2009-01-27 15:18:04.000000000 +0900
-+++ ./ext/socket/socket.c 2010-01-20 23:02:35.000000000 +0900
-@@ -877,6 +877,14 @@
- }
- else if (FIXNUM_P(port)) {
- snprintf(pbuf, len, "%ld", FIX2LONG(port));
-+ /* It looks like getaddrinfo changed in Mac OS X 10.5.3 so that sending "0"
-+ * as the argument for the port number makes it return EAI_NONAME
-+ * but feeding it a port number of NULL seems to do the trick.
-+ * RSD - 2008-06-05
-+ */
-+ if (FIX2LONG(port) == 0) {
-+ return "";
++++ ./ext/socket/socket.c 2010-06-22 21:54:15.000000000 +0900
+@@ -234,6 +234,33 @@
+ #endif
+ #endif
+
++static int str_isnumber __P((const char *));
++
++#if defined(__APPLE__)
++/* fix [ruby-core:29427] */
++static int
++ruby_getaddrinfo__darwin(const char *nodename, const char *servname,
++ struct addrinfo *hints, struct addrinfo **res)
++{
++ const char *tmp_servname;
++ struct addrinfo tmp_hints;
++ tmp_servname = servname;
++ MEMCPY(&tmp_hints, hints, struct addrinfo, 1);
++ if (nodename && servname) {
++ if (str_isnumber(tmp_servname) && atoi(servname) == 0) {
++ tmp_servname = NULL;
++#ifdef AI_NUMERICSERV
++ if (tmp_hints.ai_flags) tmp_hints.ai_flags &= ~AI_NUMERICSERV;
++#endif
+ }
- return pbuf;
- }
- else {
-@@ -3592,6 +3600,14 @@
- else if (FIXNUM_P(port)) {
- snprintf(pbuf, sizeof(pbuf), "%ld", FIX2LONG(port));
- pptr = pbuf;
-+ /* It looks like getaddrinfo changed in Mac OS X 10.5.3 so that sending "0"
-+ * as the argument for the port number makes it return EAI_NONAME
-+ * but feeding it a port number of NULL seems to do the trick.
-+ * RSD - 2008-06-05
-+ */
-+ if (FIX2LONG(port) == 0) {
-+ pptr = NULL;
-+ }
- }
- else {
- strncpy(pbuf, StringValuePtr(port), sizeof(pbuf));
-@@ -3717,7 +3733,15 @@
- }
- else if (FIXNUM_P(port)) {
- snprintf(pbuf, sizeof(pbuf), "%ld", NUM2LONG(port));
-- pptr = pbuf;
-+ pptr = pbuf;
-+ /* It looks like getaddrinfo changed in Mac OS X 10.5.3 so that sending "0"
-+ * as the argument for the port number makes it return EAI_NONAME
-+ * but feeding it a port number of NULL seems to do the trick.
-+ * RSD - 2008-06-05
-+ */
-+ if (NUM2LONG(port) == 0) {
-+ pptr = NULL;
-+ }
- }
- else {
- strncpy(pbuf, StringValuePtr(port), sizeof(pbuf));
-Only in ./ext/socket: socket.c.orig
++ }
++ int error = getaddrinfo(nodename, tmp_servname, &tmp_hints, res);
++ return error;
++}
++#undef getaddrinfo
++#define getaddrinfo(node,serv,hints,res) ruby_getaddrinfo__darwin((node),(serv),(hints),(res))
++#endif
++
+ #ifdef HAVE_CLOSESOCKET
+ #undef close
+ #define close closesocket
diff -ur ../ruby-1.8.7-p249.org/test/socket/test_socket.rb ./test/socket/test_socket.rb
--- ../ruby-1.8.7-p249.org/test/socket/test_socket.rb 2007-02-13 08:01:19.000000000 +0900
-+++ ./test/socket/test_socket.rb 2010-01-20 23:02:40.000000000 +0900
-@@ -57,6 +57,14 @@
++++ ./test/socket/test_socket.rb 2010-06-22 21:55:29.000000000 +0900
+@@ -71,6 +71,14 @@
}
end
end
-+
-+ def test_getaddrinfo_raises_no_errors_on_port_argument_of_0
-+ # Added 2008-06-05 to ensure that Mac OS X 10.5.3's changes to getaddrinfo don't cause
-+ # Ruby's Socket-based classes to fail.
-+ # Here are two of the situations I found that were causing erroneous errors
-+ assert_nothing_raised(){Socket.getaddrinfo(Socket.gethostname, 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME)}
-+ assert_nothing_raised(){TCPServer.open('localhost', 0)}
++
++ def test_getaddrinfo_raises_no_errors_on_port_argument_of_0 # [ruby-core:29427]
++ assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
++ assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', '0', Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
++ assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', '00', Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
++ assert_raise(SocketError, '[ruby-core:29427]'){ Socket.getaddrinfo(nil, nil, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
++ assert_nothing_raised('[ruby-core:29427]'){ TCPServer.open('localhost', 0) {} }
+ end
+ end if defined?(Socket)
- def test_listen
- s = nil
+ class TestSocket < Test::Unit::TestCase
Deleted: trunk/dports/lang/ruby/files/patch-bug23650.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-bug23650.diff 2010-06-24 11:41:19 UTC (rev 69125)
+++ trunk/dports/lang/ruby/files/patch-bug23650.diff 2010-06-24 12:54:41 UTC (rev 69126)
@@ -1,68 +0,0 @@
-diff -ur ../ruby-1.8.7-p249.mp-patched/eval.c ./eval.c
---- ../ruby-1.8.7-p249.mp-patched/eval.c 2010-03-15 21:50:40.000000000 +0900
-+++ ./eval.c 2010-03-15 23:50:48.000000000 +0900
-@@ -8887,8 +8887,7 @@
- _block = *data;
- _block.block_obj = bvar;
- if (self != Qundef) _block.frame.self = self;
-- _block.frame.last_class = klass;
-- if (!klass) _block.frame.last_func = 0;
-+ if (klass) _block.frame.last_class = klass;
- _block.frame.argc = RARRAY(tmp)->len;
- _block.frame.flags = ruby_frame->flags;
- if (_block.frame.argc && DMETHOD_P()) {
-@@ -9986,7 +9985,7 @@
- VALUE mod;
- {
- ID id;
-- VALUE body;
-+ VALUE body, orig;
- NODE *node;
- int noex;
-
-@@ -10005,6 +10004,7 @@
- else {
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
- }
-+ orig = body;
- if (RDATA(body)->dmark == (RUBY_DATA_FUNC)bm_mark) {
- node = NEW_DMETHOD(method_unbind(body));
- }
-@@ -10033,7 +10033,7 @@
- }
- }
- rb_add_method(mod, id, node, noex);
-- return body;
-+ return orig;
- }
-
- /*
-diff -ur ../ruby-1.8.7-p249.mp-patched/test/ruby/test_super.rb ./test/ruby/test_super.rb
---- ../ruby-1.8.7-p249.mp-patched/test/ruby/test_super.rb 2009-12-14 12:39:41.000000000 +0900
-+++ ./test/ruby/test_super.rb 2010-03-15 23:22:03.000000000 +0900
-@@ -149,4 +149,25 @@
- c = C.new
- assert_equal([c, "#{C.to_s}::m"], c.m, bug2419)
- end
-+
-+ module Bug2537
-+ class Parent
-+ def run(a)
-+ a
-+ end
-+ end
-+
-+ class Child < Parent
-+ def run(*a)
-+ proc {super(*a)}.call
-+ end
-+ end
-+ end
-+
-+ def test_super_in_block_call
-+ bug2537 = '[ruby-dev:39931]'
-+ assert_nothing_raised(bug2537) do
-+ assert_equal(bug2537, Bug2537::Child.new.run(bug2537), bug2537)
-+ end
-+ end
- end
Deleted: trunk/dports/lang/ruby/files/patch-ruby_bug2648.diff
===================================================================
--- trunk/dports/lang/ruby/files/patch-ruby_bug2648.diff 2010-06-24 11:41:19 UTC (rev 69125)
+++ trunk/dports/lang/ruby/files/patch-ruby_bug2648.diff 2010-06-24 12:54:41 UTC (rev 69126)
@@ -1,138 +0,0 @@
-diff -ur ../ruby-1.8.7-p249.org/eval.c ./eval.c
---- ../ruby-1.8.7-p249.org/eval.c 2009-12-21 17:11:42.000000000 +0900
-+++ ./eval.c 2010-01-27 20:59:35.000000000 +0900
-@@ -12245,7 +12245,9 @@
- return th;
- }
-
-+#if defined(HAVE_SETITIMER) || defined(_THREAD_SAFE)
- static int thread_init;
-+#endif
-
- #if defined(POSIX_SIGNAL)
- #define CATCH_VTALRM() posix_signal(SIGVTALRM, catch_timer)
-@@ -12292,6 +12294,8 @@
- pthread_t thread;
- } time_thread = {PTHREAD_COND_INITIALIZER, PTHREAD_MUTEX_INITIALIZER};
-
-+static int timer_stopping;
-+
- #define safe_mutex_lock(lock) \
- pthread_mutex_lock(lock); \
- pthread_cleanup_push((void (*)_((void *)))pthread_mutex_unlock, lock)
-@@ -12316,6 +12320,9 @@
- #define WAIT_FOR_10MS() \
- pthread_cond_timedwait(&running->cond, &running->lock, get_ts(&to, PER_NANO/100))
- while ((err = WAIT_FOR_10MS()) == EINTR || err == ETIMEDOUT) {
-+ if (timer_stopping)
-+ break;
-+
- if (!rb_thread_critical) {
- rb_thread_pending = 1;
- if (rb_trap_immediate) {
-@@ -12343,7 +12350,9 @@
- safe_mutex_lock(&time_thread.lock);
- if (pthread_create(&time_thread.thread, 0, thread_timer, args) == 0) {
- thread_init = 1;
-+#if !defined(__NetBSD__) && !defined(__APPLE__)
- pthread_atfork(0, 0, rb_thread_stop_timer);
-+#endif
- pthread_cond_wait(&start, &time_thread.lock);
- }
- pthread_cleanup_pop(1);
-@@ -12354,10 +12363,12 @@
- {
- if (!thread_init) return;
- safe_mutex_lock(&time_thread.lock);
-+ timer_stopping = 1;
- pthread_cond_signal(&time_thread.cond);
- thread_init = 0;
- pthread_cleanup_pop(1);
- pthread_join(time_thread.thread, NULL);
-+ timer_stopping = 0;
- }
- #elif defined(HAVE_SETITIMER)
- static void
-Only in .: eval.c.orig
-diff -ur ../ruby-1.8.7-p249.org/io.c ./io.c
---- ../ruby-1.8.7-p249.org/io.c 2009-11-25 17:45:13.000000000 +0900
-+++ ./io.c 2010-01-27 20:59:35.000000000 +0900
-@@ -3245,6 +3245,9 @@
- }
-
- retry:
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ rb_thread_stop_timer();
-+#endif
- switch ((pid = fork())) {
- case 0: /* child */
- if (modef & FMODE_READABLE) {
-@@ -3272,11 +3275,17 @@
- ruby_sourcefile, ruby_sourceline, pname);
- _exit(127);
- }
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ rb_thread_start_timer();
-+#endif
- rb_io_synchronized(RFILE(orig_stdout)->fptr);
- rb_io_synchronized(RFILE(orig_stderr)->fptr);
- return Qnil;
-
- case -1: /* fork failed */
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ rb_thread_start_timer();
-+#endif
- if (errno == EAGAIN) {
- rb_thread_sleep(1);
- goto retry;
-@@ -3297,6 +3306,9 @@
- break;
-
- default: /* parent */
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ rb_thread_start_timer();
-+#endif
- if (pid < 0) rb_sys_fail(pname);
- else {
- VALUE port = io_alloc(rb_cIO);
-Only in .: io.c.orig
-diff -ur ../ruby-1.8.7-p249.org/process.c ./process.c
---- ../ruby-1.8.7-p249.org/process.c 2008-06-29 18:34:43.000000000 +0900
-+++ ./process.c 2010-01-27 20:59:35.000000000 +0900
-@@ -1330,7 +1330,14 @@
- fflush(stderr);
- #endif
-
-- switch (pid = fork()) {
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ before_exec();
-+#endif
-+ pid = fork();
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ after_exec();
-+#endif
-+ switch (pid) {
- case 0:
- #ifdef linux
- after_exec();
-@@ -1570,6 +1577,9 @@
-
- chfunc = signal(SIGCHLD, SIG_DFL);
- retry:
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ before_exec();
-+#endif
- pid = fork();
- if (pid == 0) {
- /* child process */
-@@ -1577,6 +1587,9 @@
- rb_protect(proc_exec_args, (VALUE)&earg, NULL);
- _exit(127);
- }
-+#if defined(__NetBSD__) || defined(__APPLE__)
-+ after_exec();
-+#endif
- if (pid < 0) {
- if (errno == EAGAIN) {
- rb_thread_sleep(1);
-Only in .: process.c.orig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100624/69da3c43/attachment-0001.html>
More information about the macports-changes
mailing list