Because our lang/ruby/1.8 port does not link with pthread, but qt3
does, attempting to load the qtruby extension in ruby will currently
crash the ruby interpreter unless you run ruby with
LD_PRELOAD=libpthread.  This makes the LD_PRELOAD hack unnecessary, by
using -lpthread (not -pthread) when linking.

I believe this technique was discovered by bernd@, it's also used in the
textproc/ruby-hyperestraier port.

Tested on amd64.  Looking for OKs.

Jeremy

Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/kde/bindings3/Makefile,v
retrieving revision 1.73
diff -u -p -r1.73 Makefile
--- Makefile    15 Jan 2011 01:09:43 -0000      1.73
+++ Makefile    15 Feb 2011 23:39:29 -0000
@@ -16,7 +16,7 @@ LIB_DEPENDS = x11/kde/libs3 \
                x11/qt3 \
                ${MODRUBY_LIB_DEPENDS}
 
-REVISION =     13
+REVISION =     14
 #XXX missing -rpath to /usr/local ?
 USE_LIBTOOL =  gnu
 USE_GROFF =    Yes
Index: patches/patch-qtruby_rubylib_qtruby_Makefile_in
===================================================================
RCS file: 
/cvs/ports/x11/kde/bindings3/patches/patch-qtruby_rubylib_qtruby_Makefile_in,v
retrieving revision 1.3
diff -u -p -r1.3 patch-qtruby_rubylib_qtruby_Makefile_in
--- patches/patch-qtruby_rubylib_qtruby_Makefile_in     29 Aug 2008 11:27:44 
-0000      1.3
+++ patches/patch-qtruby_rubylib_qtruby_Makefile_in     11 Mar 2011 01:33:10 
-0000
@@ -1,6 +1,20 @@
 $OpenBSD: patch-qtruby_rubylib_qtruby_Makefile_in,v 1.3 2008/08/29 11:27:44 
espie Exp $
---- qtruby/rubylib/qtruby/Makefile.in.orig     Wed Aug 20 17:38:15 2008
-+++ qtruby/rubylib/qtruby/Makefile.in  Thu Aug 28 10:56:33 2008
+
+Add -lpthread linking to remove need for LD_PRELOAD=libpthread,
+since the lang/ruby/1.8 port is not linked to libpthread, but
+qt3 is.
+
+--- qtruby/rubylib/qtruby/Makefile.in.orig     Wed Aug 20 08:38:15 2008
++++ qtruby/rubylib/qtruby/Makefile.in  Wed Feb 16 00:13:53 2011
+@@ -260,7 +260,7 @@ LIB_KUNITTEST = @LIB_KUNITTEST@
+ LIB_KUTILS = @LIB_KUTILS@
+ LIB_POLL = @LIB_POLL@
+ LIB_QPE = @LIB_QPE@
+-LIB_QT = @LIB_QT@
++LIB_QT = @LIB_QT@ -lpthread
+ LIB_SMB = @LIB_SMB@
+ LIB_X11 = @LIB_X11@
+ LIB_XEXT = @LIB_XEXT@
 @@ -428,7 +428,7 @@ libqtrubyinternal_la_SOURCES = Qt.cpp handlers.cpp 
  rubylibdir = $(RUBY_SITEARCHDIR)
  rubylib_LTLIBRARIES = qtruby.la

Reply via email to