From 2dcd5e860174f36108ad44ccfa7a2c2c823a57bb Mon Sep 17 00:00:00 2001 From: Lionel Sambuc Date: Fri, 4 Apr 2014 11:14:35 +0200 Subject: [PATCH] lang/perl5 --- lang/perl5/Makefile | 4 + lang/perl5/distinfo | 2 +- lang/perl5/files/minix.sh | 257 ++++++++++++++++++++++++++++++++++++ lang/perl5/hacks.mk | 6 + lang/perl5/patches/patch-ca | 57 ++++---- 5 files changed, 298 insertions(+), 28 deletions(-) create mode 100644 lang/perl5/files/minix.sh diff --git a/lang/perl5/Makefile b/lang/perl5/Makefile index d03aea752..ff473ca78 100644 --- a/lang/perl5/Makefile +++ b/lang/perl5/Makefile @@ -204,6 +204,7 @@ LIBSWANTED.HPUX= cl pthread $$libswanted # see Perl's README.hpux LIBSWANTED.IRIX= m crypt LIBSWANTED.Interix= m dl LIBSWANTED.Linux= m crypt dl nsl +LIBSWANTED.Minix= m crypt c LIBSWANTED.MirBSD= m crypt LIBSWANTED.NetBSD= m crypt LIBSWANTED.OpenBSD= m crypt @@ -223,6 +224,7 @@ SYSLIBPATH.DragonFly= /usr/lib SYSLIBPATH.FreeBSD= /usr/lib SYSLIBPATH.Haiku= /boot/common/lib SYSLIBPATH.Interix= /usr/lib +SYSLIBPATH.Minix= /usr/lib SYSLIBPATH.MirBSD= /usr/lib SYSLIBPATH.NetBSD= /usr/lib SYSLIBPATH.OpenBSD= /usr/lib @@ -289,6 +291,8 @@ post-extract: ${WRKSRC}/cpan/DB_File/hints/netbsd.pl cp ${FILESDIR}/cpan-DB_File-hints-openbsd.pl \ ${WRKSRC}/cpan/DB_File/hints/openbsd.pl +# MINIX: + cp ${FILESDIR}/minix.sh ${WRKSRC}/hints/minix.sh pre-configure: cd ${WRKSRC} && find `pwd` -name "*.orig" -type f -exec ${RM} -f {} \; diff --git a/lang/perl5/distinfo b/lang/perl5/distinfo index 637669010..7d116d2c6 100644 --- a/lang/perl5/distinfo +++ b/lang/perl5/distinfo @@ -9,7 +9,7 @@ SHA1 (patch-ab) = ddddf24cfa96c3b95202c2081006e0c7216afa1d SHA1 (patch-ac) = cd918ae7aedddfcd3d555a1d1388c4c8719ccd12 SHA1 (patch-ah) = f66b496ba8f7b7d3e5a1f0c6f03d051a652f426e SHA1 (patch-aq) = 4bf5a76f0277b0939b2ca7720f4bb045a788b5cc -SHA1 (patch-ca) = 80f96af07df5e77d0e0cdbdaeb5cca852008395f +SHA1 (patch-ca) = 2efe0b47ac7d4d98fd69ba93d08388ed38643115 SHA1 (patch-ch) = 5b6a89c82e158bab0a5f06add48c28e600678099 SHA1 (patch-ck) = 5c381db130cdf4c315678e2d65380eaaa3065fee SHA1 (patch-cn) = d1877383e213a414562b5bb4c1e8aa785926fab7 diff --git a/lang/perl5/files/minix.sh b/lang/perl5/files/minix.sh new file mode 100644 index 000000000..ebc1c4949 --- /dev/null +++ b/lang/perl5/files/minix.sh @@ -0,0 +1,257 @@ +# hints/netbsd.sh +# +# Please check with packages@netbsd.org before making modifications +# to this file. + +case "$archname" in +'') + archname=`uname -m`-${osname} + ;; +esac + +# NetBSD keeps dynamic loading dl*() functions in /usr/lib/crt0.o, +# so Configure doesn't find them (unless you abandon the nm scan). +# Also, NetBSD 0.9a was the first release to introduce shared +# libraries. +# +case "$osvers" in +0.9|0.8*) + usedl="$undef" + ;; +*) + case `uname -m` in + pmax) + # NetBSD 1.3 and 1.3.1 on pmax shipped an `old' ld.so, + # which will not work. + case "$osvers" in + 1.3|1.3.1) + d_dlopen=$undef + ;; + esac + ;; + esac + if test -f /usr/libexec/ld.elf_so; then + # ELF + d_dlopen=$define + d_dlerror=$define + cccdlflags="-DPIC -fPIC $cccdlflags" + lddlflags="-shared $lddlflags" + cat >UU/cc.cbu <<'EOCBU' +# gcc 4.6 doesn't support --whole-archive, but it's required for the +# system gcc to build correctly, so check for it +echo 'int f(void) { return 0; }' >try.c +if ${cc:-cc} $cccdlflags -c try.c -otry.o 2>&1 && + ${cc:-cc} --whole-archive $lddlflags try.o -otry.so 2>&1 ; then + lddlflags="--whole-archive $lddlflags" +fi +rm try.c try.o try.so 2>/dev/null +EOCBU + rpathflag="-Wl,-rpath," + case "$osvers" in + 1.[0-5]*) + # + # Include the whole libgcc.a into the perl executable + # so that certain symbols needed by loadable modules + # built as C++ objects (__eh_alloc, __pure_virtual, + # etc.) will always be defined. + # + ccdlflags="-Wl,-whole-archive -lgcc \ + -Wl,-no-whole-archive -Wl,-E $ccdlflags" + ;; + *) + ccdlflags="-Wl,-E $ccdlflags" + ;; + esac + elif test -f /usr/libexec/ld.so; then + # a.out + d_dlopen=$define + d_dlerror=$define + cccdlflags="-DPIC -fPIC $cccdlflags" + lddlflags="-Bshareable $lddlflags" + rpathflag="-R" + else + d_dlopen=$undef + rpathflag= + fi + ;; +esac + +# netbsd had these but they don't really work as advertised, in the +# versions listed below. if they are defined, then there isn't a +# way to make perl call setuid() or setgid(). if they aren't, then +# ($<, $>) = ($u, $u); will work (same for $(/$)). this is because +# you can not change the real userid of a process under 4.4BSD. +# netbsd fixed this in 1.3.2. +case "$osvers" in +0.9*|1.[012]*|1.3|1.3.1) + d_setregid="$undef" + d_setreuid="$undef" + ;; +esac +case "$osvers" in +0.9*|1.*|2.*|3.*|4.*|5.*|6.*) + d_getprotoent_r="$undef" + d_getprotobyname_r="$undef" + d_getprotobynumber_r="$undef" + d_setprotoent_r="$undef" + d_endprotoent_r="$undef" + d_getservent_r="$undef" + d_getservbyname_r="$undef" + d_getservbyport_r="$undef" + d_setservent_r="$undef" + d_endservent_r="$undef" + d_getprotoent_r_proto="0" + d_getprotobyname_r_proto="0" + d_getprotobynumber_r_proto="0" + d_setprotoent_r_proto="0" + d_endprotoent_r_proto="0" + d_getservent_r_proto="0" + d_getservbyname_r_proto="0" + d_getservbyport_r_proto="0" + d_setservent_r_proto="0" + d_endservent_r_proto="0" + # MINIX Specific + d_gethostbyname_r="$undef" + d_gethostbyaddr_r="$undef" + d_gethostent_r="$undef" + d_sethostent_r="$undef" + d_endhostent_r="$undef" + d_inetntop="undef" + d_inetpton="undef" + d_ipv6_mreq="undef" + d_ipv6_mreq_source="undef" + d_sockaddr_in6="undef" + d_sin6_scope_id="undef" + d_usethreads="undef" + ;; +esac + +# These are obsolete in any netbsd. +d_setrgid="$undef" +d_setruid="$undef" + +# there's no problem with vfork. +usevfork=true + +# This is there but in machine/ieeefp_h. +ieeefp_h="define" + +# This script UU/usethreads.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in +$define|true|[yY]*) + lpthread= + for xxx in pthread; do + for yyy in $loclibpth $plibpth $glibpth dummy; do + zzz=$yyy/lib$xxx.a + if test -f "$zzz"; then + lpthread=$xxx + break; + fi + zzz=$yyy/lib$xxx.so + if test -f "$zzz"; then + lpthread=$xxx + break; + fi + zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null` + if test "X$zzz" != X; then + lpthread=$xxx + break; + fi + done + if test "X$lpthread" != X; then + break; + fi + done + if test "X$lpthread" != X; then + # Add -lpthread. + libswanted="$libswanted $lpthread" + # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r. + # This will be revisited when NetBSD gains a native pthreads + # implementation. + else + echo "$0: No POSIX threads library (-lpthread) found. " \ + "You may want to install GNU pth. Aborting." >&4 + exit 1 + fi + unset lpthread + + # several reentrant functions are embedded in libc, but haven't + # been added to the header files yet. Let's hold off on using + # them until they are a valid part of the API + case "$osvers" in + [012].*|3.[0-1]) + d_getprotobyname_r=$undef + d_getprotobynumber_r=$undef + d_getprotoent_r=$undef + d_getservbyname_r=$undef + d_getservbyport_r=$undef + d_getservent_r=$undef + d_setprotoent_r=$undef + d_setservent_r=$undef + d_endprotoent_r=$undef + d_endservent_r=$undef ;; + esac + ;; + +esac +EOCBU + +# Set sensible defaults for NetBSD: look for local software in +# /usr/local, plus the build prefix, which might or might not be +# /usr/pkg. +# +loclibpth="/usr/local/lib ${prefix}/lib" +locincpth="/usr/local/include ${prefix}/include" + +case "$rpathflag" in +'') + ldflags= + ;; +*) + ldflags= + for yyy in $loclibpth; do + ldflags="$ldflags $rpathflag$yyy" + done + ;; +esac + +case `uname -m` in +alpha) + echo 'int main() {}' > try.c + gcc=`${cc:-cc} -v -c try.c 2>&1|grep 'gcc version egcs-2'` + case "$gcc" in + '' | "gcc version egcs-2.95."[3-9]*) ;; # 2.95.3 or better okay + *) cat >&4 < getverlist <cpp_stuff.out 2>&1