You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
388 lines
12 KiB
388 lines
12 KiB
By default, the "vendor" area is not used, so Perl's installation |
|
procedure forgot to create its top-level paths, too. In OpenPKG we use |
|
the "vendor" area, so make sure it is created the same way the "site" |
|
area is. |
|
|
|
Index: installperl |
|
--- installperl.orig 2009-08-14 00:40:10 +0200 |
|
+++ installperl 2009-08-24 09:37:51 +0200 |
|
@@ -197,6 +197,8 @@ |
|
my $installarchlib = "$opts{destdir}$Config{installarchlib}"; |
|
my $installsitelib = "$opts{destdir}$Config{installsitelib}"; |
|
my $installsitearch = "$opts{destdir}$Config{installsitearch}"; |
|
+my $installvendorlib = "$opts{destdir}$Config{installvendorlib}"; |
|
+my $installvendorarch = "$opts{destdir}$Config{installvendorarch}"; |
|
my $installman1dir = "$opts{destdir}$Config{installman1dir}"; |
|
my $man1ext = $Config{man1ext}; |
|
my $libperl = $Config{libperl}; |
|
@@ -356,6 +358,8 @@ |
|
mkpath($installarchlib, $opts{verbose}, 0777); |
|
mkpath($installsitelib, $opts{verbose}, 0777) if ($installsitelib); |
|
mkpath($installsitearch, $opts{verbose}, 0777) if ($installsitearch); |
|
+mkpath($installvendorlib, $opts{verbose}, 0777) if ($installvendorlib); |
|
+mkpath($installvendorarch, $opts{verbose}, 0777) if ($installvendorarch); |
|
|
|
if (chdir "lib") { |
|
$do_installarchlib = ! samepath($installarchlib, '.'); |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
By default, the Perl module search order is "use lib, -I, PERL[5]LIB, |
|
perl, site, vendor, other". This means that in OpenPKG both the modules |
|
installed via CPAN shell (in "site" area) and the "perl-xxx" packages |
|
(in "vendor" area) cannot override the (sometimes obsoleted) module |
|
versions distributed with Perl (in "perl" area). Hence, we change |
|
the search order to a more reasonable one for OpenPKG: "use lib, -I, |
|
PERL[5]LIB, site, vendor, perl, other". |
|
|
|
Index: perl.c |
|
--- perl.c.orig 2009-04-22 20:07:41 +0200 |
|
+++ perl.c 2009-08-24 09:36:28 +0200 |
|
@@ -4879,39 +4879,6 @@ |
|
incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE); |
|
#endif |
|
|
|
-#ifdef ARCHLIB_EXP |
|
- incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
-#endif |
|
-#ifdef MACOS_TRADITIONAL |
|
- { |
|
- Stat_t tmpstatbuf; |
|
- SV * privdir = newSV(0); |
|
- char * macperl = PerlEnv_getenv("MACPERL"); |
|
- |
|
- if (!macperl) |
|
- macperl = ""; |
|
- |
|
- Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); |
|
- if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
- incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
- Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); |
|
- if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
- incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
- |
|
- SvREFCNT_dec(privdir); |
|
- } |
|
- if (!PL_tainting) |
|
- incpush(":", FALSE, FALSE, TRUE, FALSE); |
|
-#else |
|
-#ifndef PRIVLIB_EXP |
|
-# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" |
|
-#endif |
|
-#if defined(WIN32) |
|
- incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); |
|
-#else |
|
- incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
-#endif |
|
- |
|
#ifdef SITEARCH_EXP |
|
/* sitearch is always relative to sitelib on Windows for |
|
* DLL-based path intuition to work correctly */ |
|
@@ -4954,6 +4921,39 @@ |
|
incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE, TRUE); |
|
#endif |
|
|
|
+#ifdef ARCHLIB_EXP |
|
+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
+#endif |
|
+#ifdef MACOS_TRADITIONAL |
|
+ { |
|
+ Stat_t tmpstatbuf; |
|
+ SV * privdir = newSV(0); |
|
+ char * macperl = PerlEnv_getenv("MACPERL"); |
|
+ |
|
+ if (!macperl) |
|
+ macperl = ""; |
|
+ |
|
+ Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); |
|
+ if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
+ incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
+ Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); |
|
+ if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
+ incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
+ |
|
+ SvREFCNT_dec(privdir); |
|
+ } |
|
+ if (!PL_tainting) |
|
+ incpush(":", FALSE, FALSE, TRUE, FALSE); |
|
+#else |
|
+#ifndef PRIVLIB_EXP |
|
+# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" |
|
+#endif |
|
+#if defined(WIN32) |
|
+ incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); |
|
+#else |
|
+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
+#endif |
|
+ |
|
#ifdef PERL_OTHERLIBDIRS |
|
incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE, TRUE); |
|
#endif |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Port to [Open]Darwin 6.6.2: |
|
|
|
1. In OpenPKG, Perl does not use the vendor GCC and our GCC does not |
|
understand "-no-cpp-precomp", so remove this build option. |
|
|
|
2. The <sys/mman.h> indirectly includes system specific headers |
|
which in turn have fields named "environ" while Perl uses |
|
a define of "environ" internally. So wrap the inclusion. |
|
|
|
3. Darwin 6 no longer accepts the non-standard "#import" statements, |
|
so replace with "#include" and circumvent some header problem |
|
related to the non-standard "__private_extern__" attribute. |
|
|
|
Index: hints/darwin.sh |
|
--- hints/darwin.sh.orig 2009-04-14 20:38:15 +0200 |
|
+++ hints/darwin.sh 2009-08-24 09:36:28 +0200 |
|
@@ -120,9 +120,6 @@ |
|
*-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;; |
|
esac |
|
|
|
-# Avoid Apple's cpp precompiler, better for extensions |
|
-cppflags="${cppflags} -no-cpp-precomp" |
|
- |
|
# This is necessary because perl's build system doesn't |
|
# apply cppflags to cc compile lines as it should. |
|
ccflags="${ccflags} ${cppflags}" |
|
@@ -182,8 +179,7 @@ |
|
esac |
|
ldlibpthname='DYLD_LIBRARY_PATH'; |
|
|
|
-# useshrplib=true results in much slower startup times. |
|
-# 'false' is the default value. Use Configure -Duseshrplib to override. |
|
+useshrplib='true' |
|
|
|
cat > UU/archname.cbu <<'EOCBU' |
|
# This script UU/archname.cbu will get 'called-back' by Configure |
|
Index: ext/DynaLoader/dl_dyld.xs |
|
--- ext/DynaLoader/dl_dyld.xs.orig 2009-04-15 22:51:42 +0200 |
|
+++ ext/DynaLoader/dl_dyld.xs 2009-08-24 09:36:28 +0200 |
|
@@ -47,7 +47,13 @@ |
|
|
|
#undef environ |
|
#undef bool |
|
+#ifdef PERL_DARWIN |
|
+#define __private_extern__ extern |
|
+#include <mach-o/dyld.h> |
|
+#undef __private_extern__ |
|
+#else |
|
#import <mach-o/dyld.h> |
|
+#endif |
|
|
|
static char *dlerror() |
|
{ |
|
Index: perlio.c |
|
--- perlio.c.orig 2009-04-15 01:47:25 +0200 |
|
+++ perlio.c 2009-08-24 09:36:28 +0200 |
|
@@ -474,7 +474,14 @@ |
|
#include <unistd.h> |
|
#endif |
|
#ifdef HAS_MMAP |
|
+#ifdef PERL_DARWIN |
|
+#define environ_safe environ |
|
+#undef environ |
|
#include <sys/mman.h> |
|
+#define environ environ_safe |
|
+#else |
|
+#include <sys/mman.h> |
|
+#endif |
|
#endif |
|
|
|
void |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Port to Tru64 5.1: |
|
|
|
Under Tru64 our gcc has to be built without binutils and the system |
|
ld(1) does not accept a "-O" option, so remove the whole passing of |
|
optimization flags to ld(1). Under a brain-dead platform like Tru64 we |
|
really don't need any more optimization because we are already happy if |
|
it works at all. |
|
|
|
Index: hints/dec_osf.sh |
|
--- hints/dec_osf.sh.orig 2009-02-12 23:58:12 +0100 |
|
+++ hints/dec_osf.sh 2009-08-24 09:36:28 +0200 |
|
@@ -73,15 +73,6 @@ |
|
*) if $test "X$optimize" = "X$undef"; then |
|
lddlflags="$lddlflags -msym" |
|
else |
|
- case "$myosvers" in |
|
- *4.0D*) |
|
- # QAR 56761: -O4 + .so may produce broken code, |
|
- # fixed in 4.0E or better. |
|
- ;; |
|
- *) |
|
- lddlflags="$lddlflags $optimize" |
|
- ;; |
|
- esac |
|
# -msym: If using a sufficiently recent /sbin/loader, |
|
# keep the module symbols with the modules. |
|
lddlflags="$lddlflags -msym $_lddlflags_strict_ansi" |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0976 |
|
Multiple scripts in the perl package in Trustix Secure Linux 1.5 |
|
through 2.1, and possibly other operating systems, allows local |
|
users to overwrite files via a symlink attack on temporary files. |
|
|
|
Index: lib/CGI/Cookie.pm |
|
--- lib/CGI/Cookie.pm.orig 2009-02-12 23:58:12 +0100 |
|
+++ lib/CGI/Cookie.pm 2009-08-24 09:36:28 +0200 |
|
@@ -470,7 +470,7 @@ |
|
You may also retrieve cookies that were stored in some external |
|
form using the parse() class method: |
|
|
|
- $COOKIES = `cat /usr/tmp/Cookie_stash`; |
|
+ $COOKIES = `cat /var/run/www/Cookie_stash`; |
|
%cookies = parse CGI::Cookie($COOKIES); |
|
|
|
If you are in a mod_perl environment, you can save some overhead by |
|
Index: lib/Shell.pm |
|
--- lib/Shell.pm.orig 2009-02-12 23:58:16 +0100 |
|
+++ lib/Shell.pm 2009-08-24 09:36:28 +0200 |
|
@@ -151,7 +151,7 @@ |
|
use Shell qw(cat ps cp); |
|
$passwd = cat('</etc/passwd'); |
|
@pslines = ps('-ww'), |
|
- cp("/etc/passwd", "/tmp/passwd"); |
|
+ cp("/etc/passwd", "/etc/passwd.orig"); |
|
|
|
# object oriented |
|
my $sh = Shell->new; |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Linker flag change for Solaris. |
|
|
|
Index: Configure |
|
--- Configure.orig 2009-08-18 21:03:53 +0200 |
|
+++ Configure 2009-08-24 09:36:28 +0200 |
|
@@ -8056,7 +8056,7 @@ |
|
;; |
|
linux|irix*|gnu*) dflt="-shared $optimize" ;; |
|
next) dflt='none' ;; |
|
- solaris) dflt='-G' ;; |
|
+ solaris) dflt='-shared' ;; |
|
sunos) dflt='-assert nodefinitions' ;; |
|
svr4*|esix*|nonstopux) dflt="-G $ldflags" ;; |
|
*) dflt='none' ;; |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Security Fix (CVE-2005-3962, OpenPKG-SA-2005.025-perl) |
|
|
|
Index: sv.c |
|
--- sv.c.orig 2009-08-05 16:48:19 +0200 |
|
+++ sv.c 2009-08-24 09:36:28 +0200 |
|
@@ -9163,7 +9163,10 @@ |
|
if ( (width = expect_number(&q)) ) { |
|
if (*q == '$') { |
|
++q; |
|
- efix = width; |
|
+ if (width > PERL_INT_MAX) |
|
+ efix = PERL_INT_MAX; |
|
+ else |
|
+ efix = width; |
|
} else { |
|
goto gotwidth; |
|
} |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Do not use -fstack-protector as it causes too much portability issues. |
|
|
|
Index: Configure |
|
--- Configure.orig 2009-08-24 09:42:33 +0200 |
|
+++ Configure 2009-08-24 13:01:27 +0200 |
|
@@ -5140,17 +5140,6 @@ |
|
;; |
|
esac |
|
|
|
- # on x86_64 (at least) we require an extra library (libssp) in the |
|
- # link command line. This library is not named, so I infer that it is |
|
- # an implementation detail that may change. Hence the safest approach |
|
- # is to add the flag to the flags passed to the compiler at link time, |
|
- # as that way the compiler can do the right implementation dependant |
|
- # thing. (NWC) |
|
- case "$gccversion" in |
|
- ?*) set stack-protector -fstack-protector |
|
- eval $checkccflag |
|
- ;; |
|
- esac |
|
;; |
|
esac |
|
|
|
@@ -5289,15 +5278,6 @@ |
|
;; |
|
*) dflt="$ldflags";; |
|
esac |
|
-# See note above about -fstack-protector |
|
-case "$ccflags" in |
|
-*-fstack-protector*) |
|
- case "$dflt" in |
|
- *-fstack-protector*) ;; # Don't add it again |
|
- *) dflt="$dflt -fstack-protector" ;; |
|
- esac |
|
- ;; |
|
-esac |
|
|
|
: Try to guess additional flags to pick up local libraries. |
|
for thislibdir in $libpth; do |
|
@@ -8085,14 +8065,6 @@ |
|
''|' ') dflt='none' ;; |
|
esac |
|
|
|
- case "$ldflags" in |
|
- *-fstack-protector*) |
|
- case "$dflt" in |
|
- *-fstack-protector*) ;; # Don't add it again |
|
- *) dflt="$dflt -fstack-protector" ;; |
|
- esac |
|
- ;; |
|
- esac |
|
|
|
|
|
rp="Any special flags to pass to $ld to create a dynamically loaded library?" |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Make sure we install into <prefix>/lib/perl/ and not <prefix>/lib/perl5/ |
|
|
|
Index: Configure |
|
--- Configure.orig 2009-08-24 18:33:49 +0200 |
|
+++ Configure 2009-08-24 18:44:39 +0200 |
|
@@ -1756,7 +1756,7 @@ |
|
touch posthint.sh |
|
|
|
: set package name |
|
-package='perl5' |
|
+package='perl' |
|
first=`echo $package | sed -e 's/^\(.\).*/\1/'` |
|
last=`echo $package | sed -e 's/^.\(.*\)/\1/'` |
|
case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in |
|
|
|
----------------------------------------------------------------------------- |
|
|
|
Linking against just libgdbm_compat under at least SUSE fails |
|
because it also needs libgdbm (which Perl doesn't pick up, too) |
|
|
|
Index: hints/linux.sh |
|
--- hints/linux.sh.orig 2009-02-12 23:58:12 +0100 |
|
+++ hints/linux.sh 2009-09-09 21:01:05 +0200 |
|
@@ -55,7 +55,9 @@ |
|
libswanted="$*" |
|
|
|
# Debian 4.0 puts ndbm in the -lgdbm_compat library. |
|
-libswanted="$libswanted gdbm_compat" |
|
+if [ -f /etc/debian_version -o -f /etc/ubuntu_version ]; then |
|
+ libswanted="$libswanted gdbm_compat" |
|
+fi |
|
|
|
# If you have glibc, then report the version for ./myconfig bug reporting. |
|
# (Configure doesn't need to know the specific version since it just uses |
|
|
|
|