|
1 By default, the "vendor" area is not used, so Perl's installation |
|
2 procedure forgot to create its top-level paths, too. In OpenPKG we use |
|
3 the "vendor" area, so make sure it is created the same way the "site" |
|
4 area is. |
|
5 |
|
6 Index: installperl |
|
7 --- installperl.orig 2007-12-18 11:47:07 +0100 |
|
8 +++ installperl 2008-03-28 15:23:47 +0100 |
|
9 @@ -211,6 +211,8 @@ |
|
10 my $installarchlib = "$destdir$Config{installarchlib}"; |
|
11 my $installsitelib = "$destdir$Config{installsitelib}"; |
|
12 my $installsitearch = "$destdir$Config{installsitearch}"; |
|
13 +my $installvendorlib = "$destdir$Config{installvendorlib}"; |
|
14 +my $installvendorarch = "$destdir$Config{installvendorarch}"; |
|
15 my $installman1dir = "$destdir$Config{installman1dir}"; |
|
16 my $man1ext = $Config{man1ext}; |
|
17 my $libperl = $Config{libperl}; |
|
18 @@ -372,6 +374,8 @@ |
|
19 mkpath($installarchlib, $verbose, 0777); |
|
20 mkpath($installsitelib, $verbose, 0777) if ($installsitelib); |
|
21 mkpath($installsitearch, $verbose, 0777) if ($installsitearch); |
|
22 +mkpath($installvendorlib, $verbose, 0777) if ($installvendorlib); |
|
23 +mkpath($installvendorarch, $verbose, 0777) if ($installvendorarch); |
|
24 |
|
25 if (chdir "lib") { |
|
26 $do_installarchlib = ! samepath($installarchlib, '.'); |
|
27 |
|
28 ----------------------------------------------------------------------------- |
|
29 |
|
30 By default, the Perl module search order is "use lib, -I, PERL[5]LIB, |
|
31 perl, site, vendor, other". This means that in OpenPKG both the modules |
|
32 installed via CPAN shell (in "site" area) and the "perl-xxx" packages |
|
33 (in "vendor" area) cannot override the (sometimes obsoleted) module |
|
34 versions distributed with Perl (in "perl" area). Hence, we change |
|
35 the search order to a more reasonable one for OpenPKG: "use lib, -I, |
|
36 PERL[5]LIB, site, vendor, perl, other". |
|
37 |
|
38 Index: perl.c |
|
39 --- perl.c.orig 2007-12-18 11:47:08 +0100 |
|
40 +++ perl.c 2008-03-28 15:23:47 +0100 |
|
41 @@ -4753,39 +4753,6 @@ |
|
42 incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE); |
|
43 #endif |
|
44 |
|
45 -#ifdef ARCHLIB_EXP |
|
46 - incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
47 -#endif |
|
48 -#ifdef MACOS_TRADITIONAL |
|
49 - { |
|
50 - Stat_t tmpstatbuf; |
|
51 - SV * privdir = newSV(0); |
|
52 - char * macperl = PerlEnv_getenv("MACPERL"); |
|
53 - |
|
54 - if (!macperl) |
|
55 - macperl = ""; |
|
56 - |
|
57 - Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); |
|
58 - if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
59 - incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
60 - Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); |
|
61 - if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
62 - incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
63 - |
|
64 - SvREFCNT_dec(privdir); |
|
65 - } |
|
66 - if (!PL_tainting) |
|
67 - incpush(":", FALSE, FALSE, TRUE, FALSE); |
|
68 -#else |
|
69 -#ifndef PRIVLIB_EXP |
|
70 -# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" |
|
71 -#endif |
|
72 -#if defined(WIN32) |
|
73 - incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); |
|
74 -#else |
|
75 - incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
76 -#endif |
|
77 - |
|
78 #ifdef SITEARCH_EXP |
|
79 /* sitearch is always relative to sitelib on Windows for |
|
80 * DLL-based path intuition to work correctly */ |
|
81 @@ -4828,6 +4795,39 @@ |
|
82 incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE, TRUE); |
|
83 #endif |
|
84 |
|
85 +#ifdef ARCHLIB_EXP |
|
86 + incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
87 +#endif |
|
88 +#ifdef MACOS_TRADITIONAL |
|
89 + { |
|
90 + Stat_t tmpstatbuf; |
|
91 + SV * privdir = newSV(0); |
|
92 + char * macperl = PerlEnv_getenv("MACPERL"); |
|
93 + |
|
94 + if (!macperl) |
|
95 + macperl = ""; |
|
96 + |
|
97 + Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); |
|
98 + if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
99 + incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
100 + Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); |
|
101 + if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) |
|
102 + incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); |
|
103 + |
|
104 + SvREFCNT_dec(privdir); |
|
105 + } |
|
106 + if (!PL_tainting) |
|
107 + incpush(":", FALSE, FALSE, TRUE, FALSE); |
|
108 +#else |
|
109 +#ifndef PRIVLIB_EXP |
|
110 +# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" |
|
111 +#endif |
|
112 +#if defined(WIN32) |
|
113 + incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); |
|
114 +#else |
|
115 + incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); |
|
116 +#endif |
|
117 + |
|
118 #ifdef PERL_OTHERLIBDIRS |
|
119 incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE, TRUE); |
|
120 #endif |
|
121 |
|
122 ----------------------------------------------------------------------------- |
|
123 |
|
124 Port to [Open]Darwin 6.6.2: |
|
125 |
|
126 1. In OpenPKG, Perl does not use the vendor GCC and our GCC does not |
|
127 understand "-no-cpp-precomp", so remove this build option. |
|
128 |
|
129 2. The <sys/mman.h> indirectly includes system specific headers |
|
130 which in turn have fields named "environ" while Perl uses |
|
131 a define of "environ" internally. So wrap the inclusion. |
|
132 |
|
133 3. Darwin 6 no longer accepts the non-standard "#import" statements, |
|
134 so replace with "#include" and circumvent some header problem |
|
135 related to the non-standard "__private_extern__" attribute. |
|
136 |
|
137 Index: hints/darwin.sh |
|
138 --- hints/darwin.sh.orig 2007-12-18 11:47:07 +0100 |
|
139 +++ hints/darwin.sh 2008-03-28 15:23:47 +0100 |
|
140 @@ -120,9 +120,6 @@ |
|
141 *-2147483648) ccflags="${ccflags} -DINT32_MIN_BROKEN -DINT64_MIN_BROKEN" ;; |
|
142 esac |
|
143 |
|
144 -# Avoid Apple's cpp precompiler, better for extensions |
|
145 -cppflags="${cppflags} -no-cpp-precomp" |
|
146 - |
|
147 # This is necessary because perl's build system doesn't |
|
148 # apply cppflags to cc compile lines as it should. |
|
149 ccflags="${ccflags} ${cppflags}" |
|
150 @@ -182,8 +179,7 @@ |
|
151 esac |
|
152 ldlibpthname='DYLD_LIBRARY_PATH'; |
|
153 |
|
154 -# useshrplib=true results in much slower startup times. |
|
155 -# 'false' is the default value. Use Configure -Duseshrplib to override. |
|
156 +useshrplib='true' |
|
157 |
|
158 cat > UU/archname.cbu <<'EOCBU' |
|
159 # This script UU/archname.cbu will get 'called-back' by Configure |
|
160 Index: perlio.c |
|
161 --- perlio.c.orig 2007-12-18 11:47:08 +0100 |
|
162 +++ perlio.c 2008-03-28 15:23:47 +0100 |
|
163 @@ -472,7 +472,14 @@ |
|
164 #include <unistd.h> |
|
165 #endif |
|
166 #ifdef HAS_MMAP |
|
167 +#ifdef PERL_DARWIN |
|
168 +#define environ_safe environ |
|
169 +#undef environ |
|
170 #include <sys/mman.h> |
|
171 +#define environ environ_safe |
|
172 +#else |
|
173 +#include <sys/mman.h> |
|
174 +#endif |
|
175 #endif |
|
176 |
|
177 void |
|
178 Index: ext/DynaLoader/dl_dyld.xs |
|
179 --- ext/DynaLoader/dl_dyld.xs.orig 2007-12-18 11:47:07 +0100 |
|
180 +++ ext/DynaLoader/dl_dyld.xs 2008-03-28 15:23:47 +0100 |
|
181 @@ -45,7 +45,13 @@ |
|
182 |
|
183 #undef environ |
|
184 #undef bool |
|
185 +#ifdef PERL_DARWIN |
|
186 +#define __private_extern__ extern |
|
187 +#include <mach-o/dyld.h> |
|
188 +#undef __private_extern__ |
|
189 +#else |
|
190 #import <mach-o/dyld.h> |
|
191 +#endif |
|
192 |
|
193 static char *dlerror() |
|
194 { |
|
195 |
|
196 ----------------------------------------------------------------------------- |
|
197 |
|
198 Port to Tru64 5.1: |
|
199 |
|
200 Under Tru64 our gcc has to be built without binutils and the system |
|
201 ld(1) does not accept a "-O" option, so remove the whole passing of |
|
202 optimization flags to ld(1). Under a brain-dead platform like Tru64 we |
|
203 really don't need any more optimization because we are already happy if |
|
204 it works at all. |
|
205 |
|
206 Index: hints/dec_osf.sh |
|
207 --- hints/dec_osf.sh.orig 2007-12-18 11:47:07 +0100 |
|
208 +++ hints/dec_osf.sh 2008-03-28 15:23:47 +0100 |
|
209 @@ -73,15 +73,6 @@ |
|
210 *) if $test "X$optimize" = "X$undef"; then |
|
211 lddlflags="$lddlflags -msym" |
|
212 else |
|
213 - case "$myosvers" in |
|
214 - *4.0D*) |
|
215 - # QAR 56761: -O4 + .so may produce broken code, |
|
216 - # fixed in 4.0E or better. |
|
217 - ;; |
|
218 - *) |
|
219 - lddlflags="$lddlflags $optimize" |
|
220 - ;; |
|
221 - esac |
|
222 # -msym: If using a sufficiently recent /sbin/loader, |
|
223 # keep the module symbols with the modules. |
|
224 lddlflags="$lddlflags -msym $_lddlflags_strict_ansi" |
|
225 |
|
226 ----------------------------------------------------------------------------- |
|
227 |
|
228 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0976 |
|
229 Multiple scripts in the perl package in Trustix Secure Linux 1.5 |
|
230 through 2.1, and possibly other operating systems, allows local |
|
231 users to overwrite files via a symlink attack on temporary files. |
|
232 |
|
233 Index: lib/CGI/Cookie.pm |
|
234 --- lib/CGI/Cookie.pm.orig 2007-12-18 11:47:07 +0100 |
|
235 +++ lib/CGI/Cookie.pm 2008-03-28 15:23:47 +0100 |
|
236 @@ -470,7 +470,7 @@ |
|
237 You may also retrieve cookies that were stored in some external |
|
238 form using the parse() class method: |
|
239 |
|
240 - $COOKIES = `cat /usr/tmp/Cookie_stash`; |
|
241 + $COOKIES = `cat /var/run/www/Cookie_stash`; |
|
242 %cookies = parse CGI::Cookie($COOKIES); |
|
243 |
|
244 If you are in a mod_perl environment, you can save some overhead by |
|
245 Index: lib/Shell.pm |
|
246 --- lib/Shell.pm.orig 2007-12-18 11:47:07 +0100 |
|
247 +++ lib/Shell.pm 2008-03-28 15:23:47 +0100 |
|
248 @@ -151,7 +151,7 @@ |
|
249 use Shell qw(cat ps cp); |
|
250 $passwd = cat('</etc/passwd'); |
|
251 @pslines = ps('-ww'), |
|
252 - cp("/etc/passwd", "/tmp/passwd"); |
|
253 + cp("/etc/passwd", "/etc/passwd.orig"); |
|
254 |
|
255 # object oriented |
|
256 my $sh = Shell->new; |
|
257 |
|
258 ----------------------------------------------------------------------------- |
|
259 |
|
260 Index: Configure |
|
261 --- Configure.orig 2007-12-18 11:47:07 +0100 |
|
262 +++ Configure 2008-03-28 15:23:47 +0100 |
|
263 @@ -7871,7 +7871,7 @@ |
|
264 ;; |
|
265 linux|irix*|gnu*) dflt="-shared $optimize" ;; |
|
266 next) dflt='none' ;; |
|
267 - solaris) dflt='-G' ;; |
|
268 + solaris) dflt='-shared' ;; |
|
269 sunos) dflt='-assert nodefinitions' ;; |
|
270 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;; |
|
271 *) dflt='none' ;; |
|
272 |
|
273 ----------------------------------------------------------------------------- |
|
274 |
|
275 Security Fix (CVE-2005-3962, OpenPKG-SA-2005.025-perl) |
|
276 |
|
277 Index: sv.c |
|
278 --- sv.c.orig 2007-12-18 11:47:08 +0100 |
|
279 +++ sv.c 2008-03-28 15:23:47 +0100 |
|
280 @@ -8667,7 +8667,10 @@ |
|
281 if ( (width = expect_number(&q)) ) { |
|
282 if (*q == '$') { |
|
283 ++q; |
|
284 - efix = width; |
|
285 + if (width > PERL_INT_MAX) |
|
286 + efix = PERL_INT_MAX; |
|
287 + else |
|
288 + efix = width; |
|
289 } else { |
|
290 goto gotwidth; |
|
291 } |
|
292 |
|
293 ----------------------------------------------------------------------------- |
|
294 |
|
295 Detect NetBSD 5.x as well |
|
296 |
|
297 Index: hints/netbsd.sh |
|
298 --- hints/netbsd.sh.orig 2007-12-18 11:47:07.000000000 +0100 |
|
299 +++ hints/netbsd.sh 2008-12-24 10:51:08.000000000 +0100 |
|
300 @@ -79,7 +79,7 @@ |
|
301 ;; |
|
302 esac |
|
303 case "$osvers" in |
|
304 -0.9*|1.*|2.*|3.*|4.*) |
|
305 +0.9*|1.*|2.*|3.*|4.*|5.*) |
|
306 d_getprotoent_r="$undef" |
|
307 d_getprotobyname_r="$undef" |
|
308 d_getprotobynumber_r="$undef" |
|
309 |