diff options
author | martin <martin@pkgsrc.org> | 2000-11-08 08:28:00 +0000 |
---|---|---|
committer | martin <martin@pkgsrc.org> | 2000-11-08 08:28:00 +0000 |
commit | b4ce2f09712e8334b8624a32e6dd2a9e2d8111dd (patch) | |
tree | 7df0856880a118ed4d1b768dfdef09cdad670630 /lang/perl5-base | |
parent | 7bd025cafb45d24c0b0683208a315a5661dea2f3 (diff) | |
download | pkgsrc-b4ce2f09712e8334b8624a32e6dd2a9e2d8111dd.tar.gz |
Make perl work on NetBSD/sparc64.
The patch against regcomp.c (uninitialized variable) has been fed back
to the perl maintainers. The others are more like workarounds for known
toolchain problems and not fed back (for now).
The hints/netbsd.sh file has an additional change: the perl buildin malloc
(which is disabled in pkgsrc builds via configure arguments anyway) is now
disabled in the hints file as well. This makes it possible to build a
working perl outside of pkgsrc with this hints file. Wheter this hints file
should be fed back is subject to further discussion.
Make perl not build against a dynamic libperl.so.
There are two reasons: (a) the dynamic libperl.so version does not work
at all on sparc64, and (b) the static linked version is said to have a
significant performance improvement on some platforms (i.e. sparc). I think
the libperl.so was enabled by accident when switching from perl 5.0.4 to
5.6.0.
Other packages using libperl.so should not depend on perl5-base but on
../libperl.
Diffstat (limited to 'lang/perl5-base')
-rw-r--r-- | lang/perl5-base/Makefile | 8 | ||||
-rw-r--r-- | lang/perl5-base/files/patch-sum | 5 | ||||
-rw-r--r-- | lang/perl5-base/patches/patch-ag | 28 | ||||
-rw-r--r-- | lang/perl5-base/patches/patch-ah | 12 | ||||
-rw-r--r-- | lang/perl5-base/patches/patch-ai | 36 |
5 files changed, 81 insertions, 8 deletions
diff --git a/lang/perl5-base/Makefile b/lang/perl5-base/Makefile index a057549179e..6084776dff2 100644 --- a/lang/perl5-base/Makefile +++ b/lang/perl5-base/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.1.1.1 2000/09/05 09:18:21 jlam Exp $ +# $NetBSD: Makefile,v 1.2 2000/11/08 08:28:00 martin Exp $ # FreeBSD Id: Makefile,v 1.20 1997/07/18 06:16:44 markm Exp # @@ -20,12 +20,6 @@ CONFIGURE_ARGS+= -sde -Dprefix=${PREFIX} -Doptimize="${CFLAGS}" \ -Dcc=gcc -Dusemymalloc=false MAKE_ENV+= LD_LIBRARY_PATH=${WRKSRC} -.if exists(/usr/libexec/ld.so) || exists(/usr/libexec/ld.elf_so) -CONFIGURE_ARGS+= -Duseshrplib=true -.else -CONFIGURE_ARGS+= -Duseshrplib=false -.endif - .include "../../mk/bsd.prefs.mk" .if ${OPSYS} == "SunOS" diff --git a/lang/perl5-base/files/patch-sum b/lang/perl5-base/files/patch-sum index 4c50434c1d2..97acc50ca6d 100644 --- a/lang/perl5-base/files/patch-sum +++ b/lang/perl5-base/files/patch-sum @@ -1,4 +1,4 @@ -$NetBSD: patch-sum,v 1.1.1.1 2000/09/05 09:18:21 jlam Exp $ +$NetBSD: patch-sum,v 1.2 2000/11/08 08:28:00 martin Exp $ MD5 (patch-aa) = 22d1a3a613210ca5f129c81449eab10b MD5 (patch-ab) = 032835dd7aaab9ee4531e7e6e83ffba5 @@ -6,3 +6,6 @@ MD5 (patch-ac) = ddd3e3b08afdc062c78f26175e4fcc44 MD5 (patch-ad) = 76f075f7badc7dcc5a315b3c2a82657c MD5 (patch-ae) = 197b8ed09f99be86865c0d6d66927e96 MD5 (patch-af) = 16d95e0667ef104d0dba4a61531d5b11 +MD5 (patch-ag) = a2e03195dab858bf57005a63043ca355 +MD5 (patch-ah) = 450115a339f77225d07d09e8554d41a9 +MD5 (patch-ai) = 27f1ec73c9eadd3252c7a7d37f2e0e11 diff --git a/lang/perl5-base/patches/patch-ag b/lang/perl5-base/patches/patch-ag new file mode 100644 index 00000000000..552f0fc779b --- /dev/null +++ b/lang/perl5-base/patches/patch-ag @@ -0,0 +1,28 @@ +$NetBSD: patch-ag,v 1.1 2000/11/08 08:28:00 martin Exp $ + +--- hints/netbsd.sh.orig Sun Feb 6 15:57:09 2000 ++++ hints/netbsd.sh Wed Nov 8 08:26:20 2000 +@@ -63,6 +63,23 @@ + '') usevfork=true ;; + esac + ++# Using perl's malloc leads to trouble on some toolchain versions... ++test "$usemymalloc" || usemymalloc='n' ++ ++# The toolchain on sparc64 is not realy production quality right now, ++# but gcc 2.96 is supposed to fix most problems. ++# The -g triggers -DDEBUGGING, which plays the real trick and circumvents ++# code generation bugs. So we add -g everywhere, to at least have a ++# realy debuggable build. ++if [ "`uname -m`" = "sparc64" ]; then ++ if $cc -v 2>&1 | grep "gcc version" | grep "2.95.2" > /dev/null; then ++ ccdlflags="-g $ccdlflags" ++ cccdlflags="-g $cccdlflags" ++ lddlflags="-g $lddlflags" ++ optimize='-g -msoft-quad-float -O2 -DGCC2952_SPARC64_WORKAROUND' ++ fi ++fi ++ + # Pre-empt the /usr/bin/perl question of installperl. + installusrbinperl='n' + diff --git a/lang/perl5-base/patches/patch-ah b/lang/perl5-base/patches/patch-ah new file mode 100644 index 00000000000..373b892b9db --- /dev/null +++ b/lang/perl5-base/patches/patch-ah @@ -0,0 +1,12 @@ +$NetBSD: patch-ah,v 1.1 2000/11/08 08:28:01 martin Exp $ + +--- regcomp.c.orig Tue Mar 14 23:19:44 2000 ++++ regcomp.c Wed Nov 8 01:23:19 2000 +@@ -669,6 +669,7 @@ + regnode *oscan = scan; + struct regnode_charclass_class this_class; + struct regnode_charclass_class *oclass = NULL; ++ pos_before = 1; + + switch (PL_regkind[(U8)OP(scan)]) { + case WHILEM: /* End of (?:...)* . */ diff --git a/lang/perl5-base/patches/patch-ai b/lang/perl5-base/patches/patch-ai new file mode 100644 index 00000000000..dfd1859610f --- /dev/null +++ b/lang/perl5-base/patches/patch-ai @@ -0,0 +1,36 @@ +$NetBSD: patch-ai,v 1.1 2000/11/08 08:28:01 martin Exp $ + +--- pp.c.orig Mon Mar 20 16:35:44 2000 ++++ pp.c Mon Nov 6 23:07:51 2000 +@@ -1834,6 +1834,16 @@ + } + } + ++#ifdef GCC2952_SPARC64_WORKAROUND ++double myLocalModf(double theVal, double * theIntRes) ++{ ++ double res, ret; ++ ret = modf(theVal, &res); ++ *theIntRes = res; ++ return ret; ++} ++#endif ++ + PP(pp_int) + { + djSP; dTARGET; +@@ -1846,8 +1856,13 @@ + SETi(iv); + } + else { +- if (value >= 0.0) ++ if (value >= 0.0) { ++#ifdef GCC2952_SPARC64_WORKAROUND ++ (void)myLocalModf(value, &value); ++#else + (void)Perl_modf(value, &value); ++#endif ++ } + else { + (void)Perl_modf(-value, &value); + value = -value; |