On Thu, Jan 19, 2012 at 5:22 PM, David Coppa <dco...@openbsd.org> wrote:
> Hi,
>
> This diff fixes R's problem with pthread undefined symbols, as
> reported here:
>
> http://marc.info/?l=openbsd-ports&m=132196919327917
>
> and here:
>
> http://marc.info/?l=openbsd-ports&m=132187529729922
>
> It also fixes libpthread linkage (-lpthread -> -pthread) and
> an incorrect usage of the "--export-dynamic" linker flag (it's
> '-Wl,--export-dynamic', not '-Wl,-export-dynamic'.
>
> Tested on sparc64 and amd64.
> Ok?

Ping!

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/math/R/Makefile,v
> retrieving revision 1.44
> diff -u -p -r1.44 Makefile
> --- Makefile    3 Nov 2011 20:28:09 -0000       1.44
> +++ Makefile    19 Jan 2012 16:10:45 -0000
> @@ -4,7 +4,7 @@ SHARED_ONLY=    Yes
>
>  COMMENT=       clone of S, a powerful math/statistics/graphics language
>  DISTNAME=      R-2.8.1
> -REVISION=      6
> +REVISION=      7
>  SHARED_LIBS=   Rlapack 29.0 \
>                Rblas   29.0
>
> @@ -20,8 +20,8 @@ PERMIT_DISTFILES_FTP= Yes
>  WANTLIB=       GL ICE SM X11 Xext Xmu Xrender Xss Xt \
>                bz2 c cairo expat fontconfig freetype glib-2.0 \
>                gmodule-2.0 gobject-2.0 gthread-2.0 jpeg m ncurses pango-1.0 \
> -               pangocairo-1.0 pangoft2-1.0 pcre pixman-1 png  pthread-stubs \
> -               readline tiff xcb xcb-render xcb-shm z \
> +               pangocairo-1.0 pangoft2-1.0 pcre pixman-1 png pthread \
> +               pthread-stubs readline tiff xcb xcb-render xcb-shm z \
>                ${MODFORTRAN_WANTLIB} ${MODTK_WANTLIB}
>
>  MASTER_SITES=  http://cran.r-project.org/src/base/R-2/ \
> Index: patches/patch-configure
> ===================================================================
> RCS file: /cvs/ports/math/R/patches/patch-configure,v
> retrieving revision 1.10
> diff -u -p -r1.10 patch-configure
> --- patches/patch-configure     11 Mar 2009 08:21:33 -0000      1.10
> +++ patches/patch-configure     19 Jan 2012 16:10:45 -0000
> @@ -1,6 +1,69 @@
>  $OpenBSD: patch-configure,v 1.10 2009/03/11 08:21:33 sthen Exp $
> ---- configure.orig     Thu Dec 18 14:03:48 2008
> -+++ configure  Wed Mar 11 00:21:36 2009
> +--- configure.orig     Thu Dec 18 15:03:48 2008
> ++++ configure  Thu Jan 19 14:38:44 2012
> +@@ -31142,7 +31142,7 @@ echo "$as_me: WARNING: Use of flat namespace is 
> reques
> +   openbsd*)
> +     ## looks like ${wl} is not defined here.  Perhaps in libtool code?
> +     if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
> +-      main_ldflags="${wl}-export-dynamic"
> ++      main_ldflags="${wl}--export-dynamic"
> +       shlib_ldflags="-shared -fPIC"
> +     fi
> +     ;;
> +@@ -52736,13 +52736,13 @@ rm -f core conftest.err conftest.$ac_objext 
> conftest_i
> +         if test -n "$gl_have_pthread"; then
> +           # The program links fine without libpthread. But it may actually
> +           # need to link with libpthread in order to create multiple 
> threads.
> +-          { echo "$as_me:$LINENO: checking for pthread_kill in -lpthread" 
> >&5
> +-echo $ECHO_N "checking for pthread_kill in -lpthread... $ECHO_C" >&6; }
> ++          { echo "$as_me:$LINENO: checking for pthread_kill in -pthread" >&5
> ++echo $ECHO_N "checking for pthread_kill in -pthread... $ECHO_C" >&6; }
> + if test "${ac_cv_lib_pthread_pthread_kill+set}" = set; then
> +   echo $ECHO_N "(cached) $ECHO_C" >&6
> + else
> +   ac_check_lib_save_LIBS=$LIBS
> +-LIBS="-lpthread  $LIBS"
> ++LIBS="-pthread  $LIBS"
> + cat >conftest.$ac_ext <<_ACEOF
> + /* confdefs.h.  */
> + _ACEOF
> +@@ -52806,7 +52806,7 @@ fi
> + { echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_kill" >&5
> + echo "${ECHO_T}$ac_cv_lib_pthread_pthread_kill" >&6; }
> + if test $ac_cv_lib_pthread_pthread_kill = yes; then
> +-  LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
> ++  LIBMULTITHREAD=-pthread LTLIBMULTITHREAD=-pthread
> +              # On Solaris and HP-UX, most pthread functions exist also in 
> libc.
> +              # Therefore pthread_in_use() needs to actually try to create a
> +              # thread: pthread_create from libc will fail, whereas
> +@@ -52824,13 +52824,13 @@ fi
> +
> +         else
> +           # Some library is needed. Try libpthread and libc_r.
> +-          { echo "$as_me:$LINENO: checking for pthread_kill in -lpthread" 
> >&5
> +-echo $ECHO_N "checking for pthread_kill in -lpthread... $ECHO_C" >&6; }
> ++          { echo "$as_me:$LINENO: checking for pthread_kill in -pthread" >&5
> ++echo $ECHO_N "checking for pthread_kill in -pthread... $ECHO_C" >&6; }
> + if test "${ac_cv_lib_pthread_pthread_kill+set}" = set; then
> +   echo $ECHO_N "(cached) $ECHO_C" >&6
> + else
> +   ac_check_lib_save_LIBS=$LIBS
> +-LIBS="-lpthread  $LIBS"
> ++LIBS="-pthread  $LIBS"
> + cat >conftest.$ac_ext <<_ACEOF
> + /* confdefs.h.  */
> + _ACEOF
> +@@ -52895,8 +52895,8 @@ fi
> + echo "${ECHO_T}$ac_cv_lib_pthread_pthread_kill" >&6; }
> + if test $ac_cv_lib_pthread_pthread_kill = yes; then
> +   gl_have_pthread=yes
> +-             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
> +-             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
> ++             LIBTHREAD=-pthread LTLIBTHREAD=-pthread
> ++             LIBMULTITHREAD=-pthread LTLIBMULTITHREAD=-pthread
> + fi
> +
> +           if test -z "$gl_have_pthread"; then
>  @@ -60283,7 +60283,7 @@ LIBTHREAD!$LIBTHREAD$ac_delim
>  LTLIBTHREAD!$LTLIBTHREAD$ac_delim
>  LIBMULTITHREAD!$LIBMULTITHREAD$ac_delim
> Index: patches/patch-src_main_Makefile_in
> ===================================================================
> RCS file: patches/patch-src_main_Makefile_in
> diff -N patches/patch-src_main_Makefile_in
> --- /dev/null   1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_main_Makefile_in  19 Jan 2012 16:10:45 -0000
> @@ -0,0 +1,15 @@
> +$OpenBSD$
> +
> +Fix runtime errors due to libpthread undefined symbols
> +
> +--- src/main/Makefile.in.orig  Thu Jan 19 12:12:26 2012
> ++++ src/main/Makefile.in       Thu Jan 19 12:13:35 2012
> +@@ -91,7 +91,7 @@ MAIN_LIBS = ../unix/libunix.a ../appl/libappl.a ../nma
> + EXTRA_STATIC_LIBS = $(R_ZLIBS) $(R_BZLIBS) $(R_PCRE) $(R_XDR)$(R_LIBINTL)
> + STATIC_LIBS = $(MAIN_LIBS) $(EXTRA_STATIC_LIBS)
> +
> +-EXTRA_LIBS = $(BLAS_LIBS) $(FLIBS) $(R_XTRA_LIBS) @LIBINTL@ 
> $(READLINE_LIBS) $(LIBS)
> ++EXTRA_LIBS = $(BLAS_LIBS) $(FLIBS) $(R_XTRA_LIBS) @LIBINTL@ 
> $(READLINE_LIBS) $(LIBS) -pthread
> +
> + R_binary = R.bin
> + R_bin_OBJECTS = Rmain.o
>

Reply via email to