summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authormartin <martin@pkgsrc.org>2000-11-08 08:28:00 +0000
committermartin <martin@pkgsrc.org>2000-11-08 08:28:00 +0000
commitb4ce2f09712e8334b8624a32e6dd2a9e2d8111dd (patch)
tree7df0856880a118ed4d1b768dfdef09cdad670630 /lang
parent7bd025cafb45d24c0b0683208a315a5661dea2f3 (diff)
downloadpkgsrc-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')
-rw-r--r--lang/perl5-base/Makefile8
-rw-r--r--lang/perl5-base/files/patch-sum5
-rw-r--r--lang/perl5-base/patches/patch-ag28
-rw-r--r--lang/perl5-base/patches/patch-ah12
-rw-r--r--lang/perl5-base/patches/patch-ai36
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;