OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 19-Aug-2006 10:21:10 Branch: HEAD Handle: 2006081909211000 Added files: openpkg-src/perl59 perl59.patch perl59.spec Log: new package: perl59 5.9.4 (Practical Extraction and Reporting Language) Summary: Revision Changes Path 1.1 +292 -0 openpkg-src/perl59/perl59.patch 1.1 +189 -0 openpkg-src/perl59/perl59.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/perl59/perl59.patch ============================================================================ $ cvs diff -u -r0 -r1.1 perl59.patch --- /dev/null 2006-08-19 10:16:05 +0200 +++ perl59.patch 2006-08-19 10:21:10 +0200 @@ -0,0 +1,292 @@ +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 2006-08-15 14:37:41 +0200 ++++ installperl 2006-08-18 21:05:05 +0200 +@@ -211,6 +211,8 @@ + my $installarchlib = "$destdir$Config{installarchlib}"; + my $installsitelib = "$destdir$Config{installsitelib}"; + my $installsitearch = "$destdir$Config{installsitearch}"; ++my $installvendorlib = "$destdir$Config{installvendorlib}"; ++my $installvendorarch = "$destdir$Config{installvendorarch}"; + my $installman1dir = "$destdir$Config{installman1dir}"; + my $man1ext = $Config{man1ext}; + my $libperl = $Config{libperl}; +@@ -403,6 +405,8 @@ + mkpath($installarchlib, $verbose, 0777); + mkpath($installsitelib, $verbose, 0777) if ($installsitelib); + mkpath($installsitearch, $verbose, 0777) if ($installsitearch); ++mkpath($installvendorlib, $verbose, 0777) if ($installvendorlib); ++mkpath($installvendorarch, $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 2006-08-15 14:37:41 +0200 ++++ perl.c 2006-08-18 21:08:14 +0200 +@@ -4749,39 +4749,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 */ +@@ -4824,6 +4791,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 2006-08-15 14:37:41 +0200 ++++ hints/darwin.sh 2006-08-18 21:05:05 +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: perlio.c +--- perlio.c.orig 2006-08-15 14:37:41 +0200 ++++ perlio.c 2006-08-18 21:05:05 +0200 +@@ -461,7 +461,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 +Index: ext/DynaLoader/dl_dyld.xs +--- ext/DynaLoader/dl_dyld.xs.orig 2006-08-15 14:37:40 +0200 ++++ ext/DynaLoader/dl_dyld.xs 2006-08-18 21:05:05 +0200 +@@ -45,7 +45,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() + { + +----------------------------------------------------------------------------- + +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 2006-08-15 14:37:41 +0200 ++++ hints/dec_osf.sh 2006-08-18 21:05:05 +0200 +@@ -296,15 +296,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 2006-08-15 14:37:41 +0200 ++++ lib/CGI/Cookie.pm 2006-08-18 21:05:05 +0200 +@@ -444,7 +444,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 2006-08-15 14:37:41 +0200 ++++ lib/Shell.pm 2006-08-18 21:05:05 +0200 +@@ -154,7 +154,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; + +----------------------------------------------------------------------------- + +Index: Configure +--- Configure.orig 2006-08-15 14:37:40 +0200 ++++ Configure 2006-08-18 21:05:05 +0200 +@@ -7787,7 +7787,7 @@ + ;; + linux|irix*|gnu*) dflt='-shared' ;; + 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 2006-08-15 14:37:41 +0200 ++++ sv.c 2006-08-18 21:05:05 +0200 +@@ -8595,7 +8595,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; + } + @@ . patch -p0 <<'@@ .' Index: openpkg-src/perl59/perl59.spec ============================================================================ $ cvs diff -u -r0 -r1.1 perl59.spec --- /dev/null 2006-08-19 10:16:05 +0200 +++ perl59.spec 2006-08-19 10:21:10 +0200 @@ -0,0 +1,189 @@ +## +## perl59.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2006 OpenPKG Foundation e.V. <http://openpkg.net/> +## Copyright (c) 2000-2006 Ralf S. Engelschall <http://engelschall.com/> +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: perl59 +Summary: Practical Extraction and Reporting Language +URL: http://www.perl.com/ +Vendor: The Perl Project +Packager: OpenPKG +Distribution: OpenPKG +Class: CORE +Group: Language +License: GPL/Artistic +Version: 5.9.4 +Release: 20060819 + +# package options +%option with_perl no + +# list of sources +Source0: ftp://ftp.cpan.org/pub/CPAN/src/perl-%{version}.tar.gz +Patch0: perl59.patch + +# build information +Prefix: %{l_prefix} +BuildRoot: %{l_buildroot} +BuildPreReq: OpenPKG, openpkg >= 20040130, gcc +PreReq: OpenPKG, openpkg >= 20040130 +AutoReq: no +AutoReqProv: no +%if "%{with_perl}" == "yes" +Provides: perl = %{version}-%{release} +%endif + +%description + Perl ("Practical Reporting and Extraction Language") is a very + sophisticated and flexible (but this way also complex) programming + language. This is the original implementation of the Perl 5 + interpreter from Larry Wall and his community. + + ATTENTION: THIS IS THE DEVELOPMENT SERIES OF PERL 5! + IT IS NOT INTENDED FOR PRODUCTION USE. USE IT ON YOUR OWN RISK. + +%track + prog perl = { + version = %{version} + url = ftp://ftp.cpan.org/pub/CPAN/src/ + regex = perl-(5\.9\.\d+)\.tar\.gz + } + +%prep + %setup -q -n perl-%{version} + %patch -p0 + chmod -R u+w . + +%build + # configure the Perl package + %{l_shtool} subst \ + -e 's;\(.*for thislib in $libswanted.*\);libswanted=`echo " $libswanted " | sed -e "s/ bind / /g" -e "s/ db / /g" -e "s/ gdbm / /g" -e "s/ iconv / /g"`\; \1;' \ + -e 's;package=perl5;package=perl;' \ + Configure + %{l_shtool} subst \ + -e 's; */usr/local/lib;;' \ + hints/freebsd.sh hints/netbsd.sh + case "%{l_platform -t}" in + amd64-* ) optimize="%{l_cflags}" ;; + *-aix* ) optimize="%{l_cflags}" ;; + *-* ) optimize="%{l_cflags -O}" ;; + esac + ./Configure \ + -d -e -s \ + -Dprefix=%{l_prefix} \ + -Dvendorprefix=%{l_prefix} \ + -Dinstallprefix=%{l_prefix} \ + -Dinstallstyle="lib/perl5" \ + -Dman1dir=%{l_prefix}/man/man1 \ + -Dman3dir=%{l_prefix}/man/man3 \ + -Dcc="%{l_cc}" -Doptimize="$optimize" \ + -Dlocincpth="%{l_prefix}/include" \ + -Dloclibpth="%{l_prefix}/lib" \ + -Dldflags="%{l_ldflags}" \ + -Dlibpth="%{l_prefix}/lib /lib /usr/lib /usr/ccs/lib" \ + -Dglibpth="%{l_prefix}/lib /lib /usr/lib /usr/ccs/lib" \ + -Dscriptdir="%{l_prefix}/bin" \ + -Uinstallusrbinperl \ + -Ui_malloc -Ui_iconv -Ui_db \ + -Dusedevel + + # build the Perl package + %{l_make} %{l_mflags} -f Makefile + +%install + rm -rf $RPM_BUILD_ROOT + + # install the Perl package via standard procedure + %{l_make} %{l_mflags} -f Makefile install DESTDIR=$RPM_BUILD_ROOT + + # install Perl versions of system header files + ( case "%{l_platform -t}" in + *-darwin* ) export DYLD_LIBRARY_PATH="`pwd`" ;; + esac + cd /usr/include + PERL5LIB=$RPM_BUILD_ROOT%{l_prefix}/lib/perl + export PERL5LIB + eval `$RPM_BUILD_ROOT%{l_prefix}/bin/perl -V:installarchlib` + echo *.h sys/*.h |\ + xargs $RPM_BUILD_ROOT%{l_prefix}/bin/perl%{version} \ + $RPM_BUILD_ROOT%{l_prefix}/bin/h2ph%{version} -h -d $RPM_BUILD_ROOT$installarchlib + ) || exit $? + + # post-adjustments to installation tree + rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man3 + for name in \ + libnetcfg perlaix perlamiga perlapollo \ + perlbeos perlbs2000 perlcygwin perldgux perlepoc perlfreebsd perlhpux \ + perlhurd perlirix perlmachten perlmacos perlmacosx perlmint perlmpeix \ + perlnetware perlos2 perlos390 perlos400 perlplan9 perlqnx perlsolaris \ + perlvmesa perlvms perlvos perlwin32; do + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/$name.1 + done + + # re-adjust configuration as mentioned in Perl's INSTALL document + ( case "%{l_platform -t}" in + *-darwin* ) export DYLD_LIBRARY_PATH="`pwd`" ;; + esac + $RPM_BUILD_ROOT%{l_prefix}/bin/perl%{version} -pi.orig \ + -e "s:$RPM_BUILD_ROOT%{l_prefix}:%{l_prefix}:g" \ + $RPM_BUILD_ROOT%{l_prefix}/lib/perl/%{version}/*/Config.pm \ + `find $RPM_BUILD_ROOT%{l_prefix}/lib/perl/%{version}/ \ + -type f -name ".packlist" -print` + find $RPM_BUILD_ROOT%{l_prefix}/lib/perl/ \ + -name "*.orig" -print | xargs rm -f + ) || exit $? + + # strip binary files + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* 2>/dev/null || true + + # resolve file conflicts (with perl-locale) + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/enc2xs \ + $RPM_BUILD_ROOT%{l_prefix}/bin/piconv + + # resolve filename conflicts +%if "%{with_perl}" == "yes" + ( cd $RPM_BUILD_ROOT%{l_prefix}/bin + for file in *; do + [ ".$file" = ".*" ] && continue + mv ${file} `echo ${file} | sed -e 's;%{version}$;;'` + done + ) || exit $? +%else + ln $RPM_BUILD_ROOT%{l_prefix}/bin/perl%{version} \ + $RPM_BUILD_ROOT%{l_prefix}/bin/perl59 + ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1 + for file in *; do + [ ".$file" = ".*" ] && continue + mv ${file} `echo ${file} | sed -e 's;^\([^.]*\)\(\..*\)$;\1%{version}\2;'` + done + ) || exit $? +%endif + + # determine installed files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean + rm -rf $RPM_BUILD_ROOT + @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org