ports/160404: Unbreaking databases/ruby-bdb1 for Ruby-1.9

Mikhail T. mi at aldan.algebra.com
Fri Sep 2 19:30:12 UTC 2011


>Number:         160404
>Category:       ports
>Synopsis:       Unbreaking databases/ruby-bdb1 for Ruby-1.9
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Sep 02 19:30:11 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Mikhail T.
>Release:        FreeBSD 8.2-STABLE amd64
>Organization:
Virtual Estates, Inc.	http://sybpipe.com/
>Environment:
System: FreeBSD narawntapu 8.2-STABLE FreeBSD 8.2-STABLE #0: Sun Jun 12 22:48:33 EDT 2011 root at narawntapu:/usr/obj/home/src/sys/POWEREDGE2900 amd64

>Description:
	The below patches allow ruby-bdb1 to compile against Ruby-1.9.
	They also add the "regression-test" target to the port's Makefile.
	(When the RUBY_VER is 1.8, the test-target is automatically
	triggered after build.)

	Although some of the regression tests still fail under Ruby-1.9,
	the binary is now "good enough" for portupgrade to work (an
	upgrade is running here as I type this.)

	Thus, ruby-bdb1 will not be any worse, than ruby-bdb, which,
	currently, also has numerous problems with Ruby-1.9, see:

		http://www.freebsd.org/cgi/query-pr.cgi?pr=160402

>How-To-Repeat:
>Fix:

Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/databases/ruby-bdb1/Makefile,v
retrieving revision 1.21
diff -U 2 -r1.21 Makefile
--- Makefile	4 Jul 2011 17:46:08 -0000	1.21
+++ Makefile	2 Sep 2011 19:14:27 -0000
@@ -32,4 +32,7 @@
 		docs/doc
 
+test regression-test check:
+	${MAKE} -C ${WRKSRC} test
+
 post-build:
 .if !defined(NOPORTDOCS)
@@ -49,5 +52,13 @@
 .include <bsd.port.pre.mk>
 .if ${RUBY_VER} == 1.9
-BROKEN=	does not build with ruby 1.9
+pre-everything::
+	########################################################
+	# Although it is now possible to compile ${PORTNAME}
+	# against Ruby-${RUBY_VER}, the resulting binary is not
+	# fully functional due to changes in Ruby API.
+	# Use of Ruby-1.8 is recommended for full compatibility.
+	########################################################
+.elif ${RUBY_VER} == 1.8
+post-build: test
 .endif
 .include <bsd.port.post.mk>
Index: files/patch-delegate
===================================================================
RCS file: files/patch-delegate
diff -N files/patch-delegate
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-delegate	2 Sep 2011 19:14:27 -0000
@@ -0,0 +1,10 @@
+--- src/delegate.c	2006-09-19 13:06:40.000000000 -0400
++++ src/delegate.c	2011-09-02 13:28:23.000000000 -0400
+@@ -171,5 +171,6 @@
+ 	ary = rb_class_instance_methods(1, &tmp, rb_mKernel);
+ 	for (i = 0; i < RARRAY_LEN(ary); i++) {
+-	    method = StringValuePtr(RARRAY_PTR(ary)[i]);
++	    tmp = rb_obj_as_string(RARRAY_PTR(ary)[i]);
++	    method = StringValuePtr(tmp);
+ 	    if (!strcmp(method, "==") ||
+ 		!strcmp(method, "===") || !strcmp(method, "=~")) continue;
Index: files/patch-super
===================================================================
RCS file: files/patch-super
diff -N files/patch-super
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-super	2 Sep 2011 19:14:27 -0000
@@ -0,0 +1,16 @@
+The RCLASS_SUPER define is present in both Ruby 1.8 and 1.9.
+
+Direct access to "super" no longer works in 1.9 (the field is
+not there), but the define continues to work properly.
+
+	-mi
+
+--- src/bdb1.c	2006-09-20 12:41:01.000000000 -0400
++++ src/bdb1.c	2011-09-02 12:27:34.000000000 -0400
+@@ -692,5 +692,5 @@
+ 	    break;
+ 	}
+-	cl = RCLASS(cl)->super;
++	cl = RCLASS_SUPER(cl);
+     }
+     if (!cl) {
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list