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 [email protected]