pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/42170: lang/perl5 uses wrong thread library detection on DragonFly



>Number:         42170
>Category:       pkg
>Synopsis:       lang/perl5 uses wrong thread library detection on DragonFly
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Oct 10 10:15:00 +0000 2009
>Originator:     Simon Schubert
>Release:        pkgsrc HEAD
>Organization:
DragonFly
>Environment:
DragonFly-2.5.1

>Description:
On DragonFly, perl5 uses a wrong thread library detection and assumes that 
libc_r needs to be present for threading support.

The same patch has been submitted upstream to the perlbug mailing list.

>How-To-Repeat:
compile perl5 on a brand new DragonFly-2.5.1 system.
>Fix:
$NetBSD$

--- hints/dragonfly.sh.orig     2009-10-09 15:28:17 +0200
+++ hints/dragonfly.sh
@@ -19,18 +19,10 @@ esac
 # out here to avoid duplicating them everywhere.
 case "$osvers" in
 *)  objformat=`/usr/bin/objformat`
-    if [ x$objformat = xelf ]; then
-       libpth="/usr/lib /usr/local/lib"
-       glibpth="/usr/lib /usr/local/lib"
-       ldflags="-Wl,-E "
-       lddlflags="-shared "
-    else
-       if [ -e /usr/lib/aout ]; then
-           libpth="/usr/lib/aout /usr/local/lib /usr/lib"
-           glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
-       fi
-       lddlflags='-Bshareable'
-    fi
+    libpth="/usr/lib /usr/local/lib"
+    glibpth="/usr/lib /usr/local/lib"
+    ldflags="-Wl,-E "
+    lddlflags="-shared "
     cccdlflags='-DPIC -fPIC'
     ;;
 esac
@@ -67,43 +59,16 @@ d_voidsig='define'
 cat > UU/usethreads.cbu <<'EOCBU'
 case "$usethreads" in
 $define|true|[yY]*)
-    lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`
     case "$osvers" in
-    *)  if [ ! -r "$lc_r" ]; then
-           cat <<EOM >&4
-POSIX threads should be supported by FreeBSD $osvers --
-but your system is missing the shared libc_r.
-(/sbin/ldconfig -r doesn't find any).
+    *)  ldflags="-pthread $ldflags"
 
-Consider using the latest STABLE release.
-EOM
-           exit 1
-       fi
-       case "$osvers" in
-           *)  ldflags="-pthread $ldflags"
-               ;;
-       esac
        # Both in 4.x and 5.x gethostbyaddr_r exists but
        # it is "Temporary function, not threadsafe"...
        # Presumably earlier it didn't even exist.
        d_gethostbyaddr_r="undef"
        d_gethostbyaddr_r_proto="0"
-       ;;
-    esac
 
-    set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
-    shift
-    libswanted="$*"
-    # Configure will probably pick the wrong libc to use for nm scan.
-    # The safest quick-fix is just to not use nm at all...
-    usenm=false
-
-    unset lc_r
-
-    # Even with the malloc mutexes the Perl malloc does not
-    # seem to be threadsafe in FreeBSD?
-    case "$usemymalloc" in
-    '')  usemymalloc=n ;;
+       ;;
     esac
 esac
 EOCBU



Home | Main Index | Thread Index | Old Index