[arch-commits] Commit in perl/repos (36 files)
Florian Pritz
bluewind at archlinux.org
Sun Jan 15 13:58:09 UTC 2017
Date: Sunday, January 15, 2017 @ 13:58:09
Author: bluewind
Revision: 286486
archrelease: copy trunk to testing-i686, testing-x86_64
Added:
perl/repos/testing-i686/CVE-2016-2381_duplicate_env.diff
(from rev 286485, perl/trunk/CVE-2016-2381_duplicate_env.diff)
perl/repos/testing-i686/PKGBUILD
(from rev 286485, perl/trunk/PKGBUILD)
perl/repos/testing-i686/generate-rebuild-list.sh
(from rev 286485, perl/trunk/generate-rebuild-list.sh)
perl/repos/testing-i686/patchprov
(from rev 286485, perl/trunk/patchprov)
perl/repos/testing-i686/perl-binary-module-dependency-1.template
(from rev 286485, perl/trunk/perl-binary-module-dependency-1.template)
perl/repos/testing-i686/perlbin.csh
(from rev 286485, perl/trunk/perlbin.csh)
perl/repos/testing-i686/perlbin.fish
(from rev 286485, perl/trunk/perlbin.fish)
perl/repos/testing-i686/perlbin.sh
(from rev 286485, perl/trunk/perlbin.sh)
perl/repos/testing-i686/upgpkg
(from rev 286485, perl/trunk/upgpkg)
perl/repos/testing-x86_64/CVE-2016-2381_duplicate_env.diff
(from rev 286485, perl/trunk/CVE-2016-2381_duplicate_env.diff)
perl/repos/testing-x86_64/PKGBUILD
(from rev 286485, perl/trunk/PKGBUILD)
perl/repos/testing-x86_64/generate-rebuild-list.sh
(from rev 286485, perl/trunk/generate-rebuild-list.sh)
perl/repos/testing-x86_64/patchprov
(from rev 286485, perl/trunk/patchprov)
perl/repos/testing-x86_64/perl-binary-module-dependency-1.template
(from rev 286485, perl/trunk/perl-binary-module-dependency-1.template)
perl/repos/testing-x86_64/perlbin.csh
(from rev 286485, perl/trunk/perlbin.csh)
perl/repos/testing-x86_64/perlbin.fish
(from rev 286485, perl/trunk/perlbin.fish)
perl/repos/testing-x86_64/perlbin.sh
(from rev 286485, perl/trunk/perlbin.sh)
perl/repos/testing-x86_64/upgpkg
(from rev 286485, perl/trunk/upgpkg)
Deleted:
perl/repos/testing-i686/CVE-2016-2381_duplicate_env.diff
perl/repos/testing-i686/PKGBUILD
perl/repos/testing-i686/generate-rebuild-list.sh
perl/repos/testing-i686/patchprov
perl/repos/testing-i686/perl-binary-module-dependency-1.template
perl/repos/testing-i686/perlbin.csh
perl/repos/testing-i686/perlbin.fish
perl/repos/testing-i686/perlbin.sh
perl/repos/testing-i686/upgpkg
perl/repos/testing-x86_64/CVE-2016-2381_duplicate_env.diff
perl/repos/testing-x86_64/PKGBUILD
perl/repos/testing-x86_64/generate-rebuild-list.sh
perl/repos/testing-x86_64/patchprov
perl/repos/testing-x86_64/perl-binary-module-dependency-1.template
perl/repos/testing-x86_64/perlbin.csh
perl/repos/testing-x86_64/perlbin.fish
perl/repos/testing-x86_64/perlbin.sh
perl/repos/testing-x86_64/upgpkg
---------------------------------------------------------+
/CVE-2016-2381_duplicate_env.diff | 208 +++++
/PKGBUILD | 464 ++++++++++++
/generate-rebuild-list.sh | 8
/patchprov | 518 ++++++++++++++
/perl-binary-module-dependency-1.template | 10
/perlbin.csh | 30
/perlbin.fish | 20
/perlbin.sh | 36
/upgpkg | 8
testing-i686/CVE-2016-2381_duplicate_env.diff | 104 --
testing-i686/PKGBUILD | 232 ------
testing-i686/generate-rebuild-list.sh | 4
testing-i686/patchprov | 259 -------
testing-i686/perl-binary-module-dependency-1.template | 5
testing-i686/perlbin.csh | 15
testing-i686/perlbin.fish | 10
testing-i686/perlbin.sh | 18
testing-i686/upgpkg | 4
testing-x86_64/CVE-2016-2381_duplicate_env.diff | 104 --
testing-x86_64/PKGBUILD | 232 ------
testing-x86_64/generate-rebuild-list.sh | 4
testing-x86_64/patchprov | 259 -------
testing-x86_64/perl-binary-module-dependency-1.template | 5
testing-x86_64/perlbin.csh | 15
testing-x86_64/perlbin.fish | 10
testing-x86_64/perlbin.sh | 18
testing-x86_64/upgpkg | 4
27 files changed, 1302 insertions(+), 1302 deletions(-)
Deleted: testing-i686/CVE-2016-2381_duplicate_env.diff
===================================================================
--- testing-i686/CVE-2016-2381_duplicate_env.diff 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/CVE-2016-2381_duplicate_env.diff 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,104 +0,0 @@
-From 83e7ebed7afa79a2f50eca6b6330eae7c3a02d36 Mon Sep 17 00:00:00 2001
-From: Tony Cook <tony at develop-help.com>
-Date: Wed, 27 Jan 2016 11:52:15 +1100
-Subject: remove duplicate environment variables from environ
-
-If we see duplicate environment variables while iterating over
-environ[]:
-
-a) make sure we use the same value in %ENV that getenv() returns.
-
-Previously on a duplicate, %ENV would have the last entry for the name
-from environ[], but a typical getenv() would return the first entry.
-
-Rather than assuming all getenv() implementations return the first entry
-explicitly call getenv() to ensure they agree.
-
-b) remove duplicate entries from environ
-
-Previously if there was a duplicate definition for a name in environ[]
-setting that name in %ENV could result in an unsafe value being passed
-to a child process, so ensure environ[] has no duplicates.
-
-Patch-Name: fixes/CVE-2016-2381_duplicate_env.diff
----
- perl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 49 insertions(+), 2 deletions(-)
-
-diff --git a/perl.c b/perl.c
-index 80a76c2..ed25429 100644
---- a/perl.c
-+++ b/perl.c
-@@ -4303,23 +4303,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env)
- }
- if (env) {
- char *s, *old_var;
-+ STRLEN nlen;
- SV *sv;
-+ HV *dups = newHV();
-+
- for (; *env; env++) {
- old_var = *env;
-
- if (!(s = strchr(old_var,'=')) || s == old_var)
- continue;
-+ nlen = s - old_var;
-
- #if defined(MSDOS) && !defined(DJGPP)
- *s = '\0';
- (void)strupr(old_var);
- *s = '=';
- #endif
-- sv = newSVpv(s+1, 0);
-- (void)hv_store(hv, old_var, s - old_var, sv, 0);
-+ if (hv_exists(hv, old_var, nlen)) {
-+ const char *name = savepvn(old_var, nlen);
-+
-+ /* make sure we use the same value as getenv(), otherwise code that
-+ uses getenv() (like setlocale()) might see a different value to %ENV
-+ */
-+ sv = newSVpv(PerlEnv_getenv(name), 0);
-+
-+ /* keep a count of the dups of this name so we can de-dup environ later */
-+ if (hv_exists(dups, name, nlen))
-+ ++SvIVX(*hv_fetch(dups, name, nlen, 0));
-+ else
-+ (void)hv_store(dups, name, nlen, newSViv(1), 0);
-+
-+ Safefree(name);
-+ }
-+ else {
-+ sv = newSVpv(s+1, 0);
-+ }
-+ (void)hv_store(hv, old_var, nlen, sv, 0);
- if (env_is_not_environ)
- mg_set(sv);
- }
-+ if (HvKEYS(dups)) {
-+ /* environ has some duplicate definitions, remove them */
-+ HE *entry;
-+ hv_iterinit(dups);
-+ while ((entry = hv_iternext_flags(dups, 0))) {
-+ STRLEN nlen;
-+ const char *name = HePV(entry, nlen);
-+ IV count = SvIV(HeVAL(entry));
-+ IV i;
-+ SV **valp = hv_fetch(hv, name, nlen, 0);
-+
-+ assert(valp);
-+
-+ /* try to remove any duplicate names, depending on the
-+ * implementation used in my_setenv() the iteration might
-+ * not be necessary, but let's be safe.
-+ */
-+ for (i = 0; i < count; ++i)
-+ my_setenv(name, 0);
-+
-+ /* and set it back to the value we set $ENV{name} to */
-+ my_setenv(name, SvPV_nolen(*valp));
-+ }
-+ }
-+ SvREFCNT_dec_NN(dups);
- }
- #endif /* USE_ENVIRON_ARRAY */
- #endif /* !PERL_MICRO */
Copied: perl/repos/testing-i686/CVE-2016-2381_duplicate_env.diff (from rev 286485, perl/trunk/CVE-2016-2381_duplicate_env.diff)
===================================================================
--- testing-i686/CVE-2016-2381_duplicate_env.diff (rev 0)
+++ testing-i686/CVE-2016-2381_duplicate_env.diff 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,104 @@
+From 83e7ebed7afa79a2f50eca6b6330eae7c3a02d36 Mon Sep 17 00:00:00 2001
+From: Tony Cook <tony at develop-help.com>
+Date: Wed, 27 Jan 2016 11:52:15 +1100
+Subject: remove duplicate environment variables from environ
+
+If we see duplicate environment variables while iterating over
+environ[]:
+
+a) make sure we use the same value in %ENV that getenv() returns.
+
+Previously on a duplicate, %ENV would have the last entry for the name
+from environ[], but a typical getenv() would return the first entry.
+
+Rather than assuming all getenv() implementations return the first entry
+explicitly call getenv() to ensure they agree.
+
+b) remove duplicate entries from environ
+
+Previously if there was a duplicate definition for a name in environ[]
+setting that name in %ENV could result in an unsafe value being passed
+to a child process, so ensure environ[] has no duplicates.
+
+Patch-Name: fixes/CVE-2016-2381_duplicate_env.diff
+---
+ perl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 49 insertions(+), 2 deletions(-)
+
+diff --git a/perl.c b/perl.c
+index 80a76c2..ed25429 100644
+--- a/perl.c
++++ b/perl.c
+@@ -4303,23 +4303,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env)
+ }
+ if (env) {
+ char *s, *old_var;
++ STRLEN nlen;
+ SV *sv;
++ HV *dups = newHV();
++
+ for (; *env; env++) {
+ old_var = *env;
+
+ if (!(s = strchr(old_var,'=')) || s == old_var)
+ continue;
++ nlen = s - old_var;
+
+ #if defined(MSDOS) && !defined(DJGPP)
+ *s = '\0';
+ (void)strupr(old_var);
+ *s = '=';
+ #endif
+- sv = newSVpv(s+1, 0);
+- (void)hv_store(hv, old_var, s - old_var, sv, 0);
++ if (hv_exists(hv, old_var, nlen)) {
++ const char *name = savepvn(old_var, nlen);
++
++ /* make sure we use the same value as getenv(), otherwise code that
++ uses getenv() (like setlocale()) might see a different value to %ENV
++ */
++ sv = newSVpv(PerlEnv_getenv(name), 0);
++
++ /* keep a count of the dups of this name so we can de-dup environ later */
++ if (hv_exists(dups, name, nlen))
++ ++SvIVX(*hv_fetch(dups, name, nlen, 0));
++ else
++ (void)hv_store(dups, name, nlen, newSViv(1), 0);
++
++ Safefree(name);
++ }
++ else {
++ sv = newSVpv(s+1, 0);
++ }
++ (void)hv_store(hv, old_var, nlen, sv, 0);
+ if (env_is_not_environ)
+ mg_set(sv);
+ }
++ if (HvKEYS(dups)) {
++ /* environ has some duplicate definitions, remove them */
++ HE *entry;
++ hv_iterinit(dups);
++ while ((entry = hv_iternext_flags(dups, 0))) {
++ STRLEN nlen;
++ const char *name = HePV(entry, nlen);
++ IV count = SvIV(HeVAL(entry));
++ IV i;
++ SV **valp = hv_fetch(hv, name, nlen, 0);
++
++ assert(valp);
++
++ /* try to remove any duplicate names, depending on the
++ * implementation used in my_setenv() the iteration might
++ * not be necessary, but let's be safe.
++ */
++ for (i = 0; i < count; ++i)
++ my_setenv(name, 0);
++
++ /* and set it back to the value we set $ENV{name} to */
++ my_setenv(name, SvPV_nolen(*valp));
++ }
++ }
++ SvREFCNT_dec_NN(dups);
+ }
+ #endif /* USE_ENVIRON_ARRAY */
+ #endif /* !PERL_MICRO */
Deleted: testing-i686/PKGBUILD
===================================================================
--- testing-i686/PKGBUILD 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/PKGBUILD 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,232 +0,0 @@
-# $Id$
-# Maintainer: Florian Pritz <bluewind at xinu.at>
-# Contributor: Angel Velasquez <angvp at archlinux.org>
-# Contributor: kevin <kevin.archlinux.org>
-# Contributor: judd <jvinet.zeroflux.org>
-# Contributor: francois <francois.archlinux.org>
-
-pkgname=perl
-pkgver=5.24.0
-pkgrel=3
-pkgdesc="A highly capable, feature-rich programming language"
-arch=(i686 x86_64)
-license=('GPL' 'PerlArtistic')
-url="http://www.perl.org"
-groups=('base')
-depends=('gdbm' 'db' 'glibc')
-# NOTE: This array is automatically generated by `./patchprov`.
-# If you want to add entries, do so in the next array.
-provides=('perl-archive-tar=2.04'
- 'perl-attribute-handlers=0.99'
- 'perl-autodie=2.29'
- 'perl-autoloader=5.74'
- 'perl-autouse=1.11'
- 'perl-b-debug=1.23'
- 'perl-base=2.23'
- 'perl-bignum=0.42'
- 'perl-carp=1.40'
- 'perl-compress-raw-bzip2=2.069'
- 'perl-compress-raw-zlib=2.069'
- 'perl-config-perl-v=0.25'
- 'perl-constant=1.33'
- 'perl-cpan-meta-requirements=2.140'
- 'perl-cpan-meta-yaml=0.018'
- 'perl-cpan-meta=2.150005'
- 'perl-cpan=2.11'
- 'perl-data-dumper=2.160'
- 'perl-db_file=1.835'
- 'perl-devel-ppport=3.32'
- 'perl-devel-selfstubber=1.05'
- 'perl-digest-md5=2.54'
- 'perl-digest-sha=5.95'
- 'perl-digest=1.17'
- 'perl-dumpvalue=1.18'
- 'perl-encode=2.80'
- 'perl-encoding-warnings=0.12'
- 'perl-env=1.04'
- 'perl-experimental=0.016'
- 'perl-exporter=5.72'
- 'perl-extutils-cbuilder=0.280225'
- 'perl-extutils-constant=0.23'
- 'perl-extutils-install=2.04'
- 'perl-extutils-makemaker=7.10_01'
- 'perl-extutils-manifest=1.70'
- 'perl-extutils-parsexs=3.31'
- 'perl-file-fetch=0.48'
- 'perl-file-path=2.12_01'
- 'perl-file-temp=0.2304'
- 'perl-filter-simple=0.92'
- 'perl-filter-util-call=1.55'
- 'perl-getopt-long=2.48'
- 'perl-http-tiny=0.056'
- 'perl-i18n-collate=1.02'
- 'perl-i18n-langtags=0.40'
- 'perl-if=0.0606'
- 'perl-io-compress=2.069'
- 'perl-io-socket-ip=0.37'
- 'perl-io-zlib=1.10'
- 'perl-io=1.36'
- 'perl-ipc-cmd=0.92'
- 'perl-ipc-sysv=2.06_01'
- 'perl-json-pp=2.27300'
- 'perl-lib=0.63'
- 'perl-libnet=3.08'
- 'perl-locale-codes=3.37'
- 'perl-locale-maketext-simple=0.21'
- 'perl-locale-maketext=1.26'
- 'perl-math-bigint-fastcalc=0.40'
- 'perl-math-bigint=1.999715'
- 'perl-math-bigrat=0.260802'
- 'perl-math-complex=1.59'
- 'perl-memoize=1.03'
- 'perl-mime-base64=3.15'
- 'perl-module-corelist=5.20160506'
- 'perl-module-load-conditional=0.64'
- 'perl-module-load=0.32'
- 'perl-module-loaded=0.08'
- 'perl-module-metadata=1.000031'
- 'perl-net-ping=2.43'
- 'perl-params-check=0.38'
- 'perl-parent=0.234'
- 'perl-parse-cpan-meta=1.4417'
- 'perl-pathtools=3.63'
- 'perl-perl-ostype=1.009'
- 'perl-perlfaq=5.021010'
- 'perl-perlio-via-quotedprint=0.08'
- 'perl-pod-checker=1.60'
- 'perl-pod-escapes=1.07'
- 'perl-pod-parser=1.63'
- 'perl-pod-perldoc=3.25_02'
- 'perl-pod-simple=3.32'
- 'perl-pod-usage=1.68'
- 'perl-podlators=5.006'
- 'perl-safe=2.39'
- 'perl-scalar-list-utils=1.42_02'
- 'perl-search-dict=1.07'
- 'perl-selfloader=1.23'
- 'perl-socket=2.020_03'
- 'perl-storable=2.56'
- 'perl-sys-syslog=0.33'
- 'perl-term-ansicolor=4.04'
- 'perl-term-cap=1.17'
- 'perl-term-complete=1.403'
- 'perl-term-readline=1.15'
- 'perl-test-harness=3.36'
- 'perl-test-simple=1.001014'
- 'perl-test=1.28'
- 'perl-text-abbrev=1.02'
- 'perl-text-balanced=2.03'
- 'perl-text-parsewords=3.30'
- 'perl-text-tabs=2013.0523'
- 'perl-thread-queue=3.09'
- 'perl-thread-semaphore=2.12'
- 'perl-threads-shared=1.51'
- 'perl-threads=2.07'
- 'perl-tie-file=1.02'
- 'perl-tie-refhash=1.39'
- 'perl-time-hires=1.9733'
- 'perl-time-local=1.2300'
- 'perl-time-piece=1.31'
- 'perl-unicode-collate=1.14'
- 'perl-unicode-normalize=1.25'
- 'perl-version=0.9916'
- 'perl-xsloader=0.21')
-# Add your own provides here
-provides=(${provides[@]})
-source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2
- perlbin.sh
- perlbin.csh
- perlbin.fish
- perl-binary-module-dependency-1.template)
-options=('makeflags' '!purge' 'emptydirs')
-md5sums=('99f39abe614b50719d9915431e54fc1e'
- 'f2a1ee55a05e84652cb10cab17a4c546'
- 'd8153ad4a43bb4142d1bdeaa9fcdd95b'
- '626605dc8beef956cbaf46f031c7e894'
- '2a366dfc783c460764cde0caf88a23af')
-
-prepare() {
- cd ${srcdir}/${pkgname}-${pkgver}
-
-}
-
-build() {
- cd ${srcdir}/${pkgname}-${pkgver}
-
- if [ "${CARCH}" = "x86_64" ]; then
- # for x86_64
- arch_opts="-Dcccdlflags='-fPIC'"
- else
- # for i686
- arch_opts=""
- fi
-
- ./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
- -Dprefix=/usr -Dvendorprefix=/usr \
- -Dprivlib=/usr/share/perl5/core_perl \
- -Darchlib=/usr/lib/perl5/core_perl \
- -Dsitelib=/usr/share/perl5/site_perl \
- -Dsitearch=/usr/lib/perl5/site_perl \
- -Dvendorlib=/usr/share/perl5/vendor_perl \
- -Dvendorarch=/usr/lib/perl5/vendor_perl \
- -Dscriptdir=/usr/bin/core_perl \
- -Dsitescript=/usr/bin/site_perl \
- -Dvendorscript=/usr/bin/vendor_perl \
- -Dinc_version_list=none \
- -Dman1ext=1perl -Dman3ext=3perl ${arch_opts} \
- -Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}"
- make
-}
-
-check() {
- cd ${srcdir}/${pkgname}-${pkgver}
- TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
-# make test
-}
-
-package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR="$pkgdir" install
-
- for template in "$srcdir/"*.template; do
- install -Dm644 "$template" "$pkgdir/usr/share/makepkg-template/${template##*/}"
- done
- ln -s perl-binary-module-dependency-1.template "$pkgdir/usr/share/makepkg-template/"perl-binary-module-dependency.template
-
- ### Perl Settings ###
- # Change man page extensions for site and vendor module builds.
- # Set no mail address since bug reports should go to the bug tracker
- # and not someone's email.
- sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
- -e "/^cf_email=/ s/'.*'/''/" \
- -e "/^perladmin=/ s/'.*'/''/" \
- -i ${pkgdir}/usr/lib/perl5/core_perl/Config_heavy.pl
-
- ### CPAN Settings ###
- # Set CPAN default config to use the site directories.
- sed -e '/(makepl_arg =>/ s/""/"INSTALLDIRS=site"/' \
- -e '/(mbuildpl_arg =>/ s/""/"installdirs=site"/' \
- -i ${pkgdir}/usr/share/perl5/core_perl/CPAN/FirstTime.pm
-
- # Profile script to set paths to perl scripts.
- install -D -m755 ${srcdir}/perlbin.sh \
- ${pkgdir}/etc/profile.d/perlbin.sh
- # Profile script to set paths to perl scripts on csh. (FS#22441)
- install -D -m755 ${srcdir}/perlbin.csh \
- ${pkgdir}/etc/profile.d/perlbin.csh
- # Profile script to set paths to perl scripts on fish. (FS#51191)
- install -D -m 755 "$srcdir/perlbin.fish" \
- "$pkgdir/usr/share/fish/vendor_conf.d/perlbin.fish"
-
- # Add the dirs so new installs will already have them in PATH once they
- # install their first perl programm
- install -d -m755 "$pkgdir/usr/bin/vendor_perl"
- install -d -m755 "$pkgdir/usr/bin/site_perl"
-
- #(cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
- rm "$pkgdir/usr/bin/perl$pkgver"
- (cd ${pkgdir}/usr/bin/core_perl; ln -sf c2ph pstruct;)
-
- find $pkgdir -name perllocal.pod -delete
- find $pkgdir -name .packlist -delete
-}
Copied: perl/repos/testing-i686/PKGBUILD (from rev 286485, perl/trunk/PKGBUILD)
===================================================================
--- testing-i686/PKGBUILD (rev 0)
+++ testing-i686/PKGBUILD 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,232 @@
+# $Id$
+# Maintainer: Florian Pritz <bluewind at xinu.at>
+# Contributor: Angel Velasquez <angvp at archlinux.org>
+# Contributor: kevin <kevin.archlinux.org>
+# Contributor: judd <jvinet.zeroflux.org>
+# Contributor: francois <francois.archlinux.org>
+
+pkgname=perl
+pkgver=5.24.1
+pkgrel=1
+pkgdesc="A highly capable, feature-rich programming language"
+arch=(i686 x86_64)
+license=('GPL' 'PerlArtistic')
+url="http://www.perl.org"
+groups=('base')
+depends=('gdbm' 'db' 'glibc')
+# NOTE: This array is automatically generated by `./patchprov`.
+# If you want to add entries, do so in the next array.
+provides=('perl-archive-tar=2.04_01'
+ 'perl-attribute-handlers=0.99'
+ 'perl-autodie=2.29'
+ 'perl-autoloader=5.74'
+ 'perl-autouse=1.11'
+ 'perl-b-debug=1.23'
+ 'perl-base=2.23'
+ 'perl-bignum=0.42_01'
+ 'perl-carp=1.40'
+ 'perl-compress-raw-bzip2=2.069'
+ 'perl-compress-raw-zlib=2.069'
+ 'perl-config-perl-v=0.25'
+ 'perl-constant=1.33'
+ 'perl-cpan-meta-requirements=2.140'
+ 'perl-cpan-meta-yaml=0.018'
+ 'perl-cpan-meta=2.150005'
+ 'perl-cpan=2.11_01'
+ 'perl-data-dumper=2.160'
+ 'perl-db_file=1.835'
+ 'perl-devel-ppport=3.32'
+ 'perl-devel-selfstubber=1.05'
+ 'perl-digest-md5=2.54'
+ 'perl-digest-sha=5.95_01'
+ 'perl-digest=1.17_01'
+ 'perl-dumpvalue=1.18'
+ 'perl-encode=2.80_01'
+ 'perl-encoding-warnings=0.12'
+ 'perl-env=1.04'
+ 'perl-experimental=0.016'
+ 'perl-exporter=5.72'
+ 'perl-extutils-cbuilder=0.280225'
+ 'perl-extutils-constant=0.23'
+ 'perl-extutils-install=2.04'
+ 'perl-extutils-makemaker=7.10_02'
+ 'perl-extutils-manifest=1.70'
+ 'perl-extutils-parsexs=3.31'
+ 'perl-file-fetch=0.48_01'
+ 'perl-file-path=2.12_01'
+ 'perl-file-temp=0.2304'
+ 'perl-filter-simple=0.92'
+ 'perl-filter-util-call=1.55'
+ 'perl-getopt-long=2.48'
+ 'perl-http-tiny=0.056_001'
+ 'perl-i18n-collate=1.02'
+ 'perl-i18n-langtags=0.40'
+ 'perl-if=0.0606'
+ 'perl-io-compress=2.069_001'
+ 'perl-io-socket-ip=0.37'
+ 'perl-io-zlib=1.10'
+ 'perl-io=1.36_01'
+ 'perl-ipc-cmd=0.92_01'
+ 'perl-ipc-sysv=2.06_01'
+ 'perl-json-pp=2.27300_01'
+ 'perl-lib=0.63'
+ 'perl-libnet=3.08'
+ 'perl-locale-codes=3.37'
+ 'perl-locale-maketext-simple=0.21_01'
+ 'perl-locale-maketext=1.26_01'
+ 'perl-math-bigint-fastcalc=0.40'
+ 'perl-math-bigint=1.999715'
+ 'perl-math-bigrat=0.260802'
+ 'perl-math-complex=1.59'
+ 'perl-memoize=1.03_01'
+ 'perl-mime-base64=3.15'
+ 'perl-module-corelist=5.20170114_24'
+ 'perl-module-load-conditional=0.64'
+ 'perl-module-load=0.32'
+ 'perl-module-loaded=0.08'
+ 'perl-module-metadata=1.000031'
+ 'perl-net-ping=2.43_01'
+ 'perl-params-check=0.38'
+ 'perl-parent=0.234'
+ 'perl-parse-cpan-meta=1.4417_001'
+ 'perl-pathtools=3.63_01'
+ 'perl-perl-ostype=1.009'
+ 'perl-perlfaq=5.021010'
+ 'perl-perlio-via-quotedprint=0.08'
+ 'perl-pod-checker=1.60'
+ 'perl-pod-escapes=1.07'
+ 'perl-pod-parser=1.63'
+ 'perl-pod-perldoc=3.25_03'
+ 'perl-pod-simple=3.32'
+ 'perl-pod-usage=1.68'
+ 'perl-podlators=5.006'
+ 'perl-safe=2.39'
+ 'perl-scalar-list-utils=1.42_02'
+ 'perl-search-dict=1.07'
+ 'perl-selfloader=1.23'
+ 'perl-socket=2.020_03'
+ 'perl-storable=2.56_01'
+ 'perl-sys-syslog=0.33_01'
+ 'perl-term-ansicolor=4.04'
+ 'perl-term-cap=1.17'
+ 'perl-term-complete=1.403'
+ 'perl-term-readline=1.15'
+ 'perl-test-harness=3.36_01'
+ 'perl-test-simple=1.001014'
+ 'perl-test=1.28_01'
+ 'perl-text-abbrev=1.02'
+ 'perl-text-balanced=2.03'
+ 'perl-text-parsewords=3.30'
+ 'perl-text-tabs=2013.0523'
+ 'perl-thread-queue=3.09'
+ 'perl-thread-semaphore=2.12'
+ 'perl-threads-shared=1.51'
+ 'perl-threads=2.07'
+ 'perl-tie-file=1.02'
+ 'perl-tie-refhash=1.39'
+ 'perl-time-hires=1.9733'
+ 'perl-time-local=1.2300'
+ 'perl-time-piece=1.31'
+ 'perl-unicode-collate=1.14'
+ 'perl-unicode-normalize=1.25'
+ 'perl-version=0.9916'
+ 'perl-xsloader=0.22')
+# Add your own provides here
+provides=(${provides[@]})
+source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2
+ perlbin.sh
+ perlbin.csh
+ perlbin.fish
+ perl-binary-module-dependency-1.template)
+options=('makeflags' '!purge' 'emptydirs')
+md5sums=('178ee0e8fa544dbc76d99cf041e2c9f0'
+ 'f2a1ee55a05e84652cb10cab17a4c546'
+ 'd8153ad4a43bb4142d1bdeaa9fcdd95b'
+ '626605dc8beef956cbaf46f031c7e894'
+ '2a366dfc783c460764cde0caf88a23af')
+
+prepare() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+}
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ # for x86_64
+ arch_opts="-Dcccdlflags='-fPIC'"
+ else
+ # for i686
+ arch_opts=""
+ fi
+
+ ./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
+ -Dprefix=/usr -Dvendorprefix=/usr \
+ -Dprivlib=/usr/share/perl5/core_perl \
+ -Darchlib=/usr/lib/perl5/core_perl \
+ -Dsitelib=/usr/share/perl5/site_perl \
+ -Dsitearch=/usr/lib/perl5/site_perl \
+ -Dvendorlib=/usr/share/perl5/vendor_perl \
+ -Dvendorarch=/usr/lib/perl5/vendor_perl \
+ -Dscriptdir=/usr/bin/core_perl \
+ -Dsitescript=/usr/bin/site_perl \
+ -Dvendorscript=/usr/bin/vendor_perl \
+ -Dinc_version_list=none \
+ -Dman1ext=1perl -Dman3ext=3perl ${arch_opts} \
+ -Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}"
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
+# make test
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="$pkgdir" install
+
+ for template in "$srcdir/"*.template; do
+ install -Dm644 "$template" "$pkgdir/usr/share/makepkg-template/${template##*/}"
+ done
+ ln -s perl-binary-module-dependency-1.template "$pkgdir/usr/share/makepkg-template/"perl-binary-module-dependency.template
+
+ ### Perl Settings ###
+ # Change man page extensions for site and vendor module builds.
+ # Set no mail address since bug reports should go to the bug tracker
+ # and not someone's email.
+ sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
+ -e "/^cf_email=/ s/'.*'/''/" \
+ -e "/^perladmin=/ s/'.*'/''/" \
+ -i ${pkgdir}/usr/lib/perl5/core_perl/Config_heavy.pl
+
+ ### CPAN Settings ###
+ # Set CPAN default config to use the site directories.
+ sed -e '/(makepl_arg =>/ s/""/"INSTALLDIRS=site"/' \
+ -e '/(mbuildpl_arg =>/ s/""/"installdirs=site"/' \
+ -i ${pkgdir}/usr/share/perl5/core_perl/CPAN/FirstTime.pm
+
+ # Profile script to set paths to perl scripts.
+ install -D -m755 ${srcdir}/perlbin.sh \
+ ${pkgdir}/etc/profile.d/perlbin.sh
+ # Profile script to set paths to perl scripts on csh. (FS#22441)
+ install -D -m755 ${srcdir}/perlbin.csh \
+ ${pkgdir}/etc/profile.d/perlbin.csh
+ # Profile script to set paths to perl scripts on fish. (FS#51191)
+ install -D -m 755 "$srcdir/perlbin.fish" \
+ "$pkgdir/usr/share/fish/vendor_conf.d/perlbin.fish"
+
+ # Add the dirs so new installs will already have them in PATH once they
+ # install their first perl programm
+ install -d -m755 "$pkgdir/usr/bin/vendor_perl"
+ install -d -m755 "$pkgdir/usr/bin/site_perl"
+
+ #(cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
+ rm "$pkgdir/usr/bin/perl$pkgver"
+ (cd ${pkgdir}/usr/bin/core_perl; ln -sf c2ph pstruct;)
+
+ find $pkgdir -name perllocal.pod -delete
+ find $pkgdir -name .packlist -delete
+}
Deleted: testing-i686/generate-rebuild-list.sh
===================================================================
--- testing-i686/generate-rebuild-list.sh 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/generate-rebuild-list.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-pkgfile -r "^/usr/lib/perl5/vendor_perl/auto/.*\.so$" | sed 's#^.*/##' | sort -u
-ssh celestia PATH=/usr/local/bin:\$PATH\; /home/bluewind/bin/sogrep-all libperl.so
Copied: perl/repos/testing-i686/generate-rebuild-list.sh (from rev 286485, perl/trunk/generate-rebuild-list.sh)
===================================================================
--- testing-i686/generate-rebuild-list.sh (rev 0)
+++ testing-i686/generate-rebuild-list.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+pkgfile -r "^/usr/lib/perl5/vendor_perl/auto/.*\.so$" | sed 's#^.*/##' | sort -u
+ssh celestia PATH=/usr/local/bin:\$PATH\; /home/bluewind/bin/sogrep-all libperl.so
Deleted: testing-i686/patchprov
===================================================================
--- testing-i686/patchprov 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/patchprov 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,259 +0,0 @@
-#!/usr/bin/perl
-##
-## Name:
-## patchprov
-##
-## Description:
-## Patch the provides list in the perl package PKGBUILD. Scan the appropriate
-## directories under the perl source tree for directories containing dists
-## similar to CPAN dists. Search the files in the distributions for VERSION
-## strings, which are perl expressions. Filters these version strings through
-## the perl interpreter, then transform the dist. names and versions into
-## package names and versions. Finally, we cut out the "provides" array from the
-## PKGBUILD and replace it with the newer version.
-##
-## Usage:
-## patchprov [path to perl source tree] [path to PKGBUILD]
-##
-## Caveats:
-## The path code is not platform independent and will only work in POSIX.
-##
-## Changelog:
-## 06/10/14 JD Rewrite from scratch for perl 5.20.0 and ArchLinux.
-##
-## Authors:
-## Justin "juster" Davis <jrcd83 at gmail.com>
-##
-
-use warnings;
-use strict;
-
-sub err
-{
- print STDERR "patchprov: error: @_\n";
- exit 1;
-}
-
-## Extract the dist. name from its containing directory.
-sub path_dist
-{
- my($path) = @_;
- $path =~ s{^.*/}{};
- return $path;
-}
-
-## Create a path like $path/lib/Foo/Bar.pm for Foo::Bar.
-sub lib_modpath
-{
- my($path, $modname) = @_;
- $modname =~ s{::}{/}g;
- return "$path/lib/$modname.pm";
-}
-
-## Create a path to a file in the containing directory, named after
-## the last segment of the module name, with suffix attached.
-sub dumb_modpath
-{
- my($path, $modname, $suffix) = @_;
- $modname =~ s{^.*::}{};
- return "$path/$modname$suffix";
-}
-
-## Find a source file contained in the directory that we can scrape the
-## perl versions string from.
-my %distmods = (
- 'PathTools' => 'Cwd',
- 'Scalar-List-Utils' => 'List::Util',
- 'IO-Compress' => 'IO::Compress::Gzip',
-);
-sub dist_srcpath
-{
- my($path) = @_;
- my $distname = path_dist($path);
- my $modname;
- if(exists $distmods{$distname}){
- $modname = $distmods{$distname};
- }else{
- $modname = $distname;
- $modname =~ s/-/::/g;
- }
- my @srcpaths = (
- lib_modpath($path, $modname),
- dumb_modpath($path, $modname, '.pm'),
- dumb_modpath($path, $modname, '_pm.PL'),
- "$path/VERSION", # for podlators
- );
- for my $src (@srcpaths){
- return $src if(-f $src);
- }
- return undef;
-}
-
-## Scrape the version string for the module file or Makefile.PL.
-sub scrape_verln
-{
- my($srcpath) = @_;
- open my $fh, '<', $srcpath or die "open: $!";
- while(my $ln = <$fh>){
- if($ln =~ s/^.*VERSION *=>? *//){
- close $fh;
- return $ln;
- }
- }
- close $fh;
- err("failed to find VERSION in $srcpath");
-}
-
-## Scrape the version string from the module source file.
-sub scrape_modver
-{
- my($srcpath) = @_;
- return scrape_verln($srcpath);
-}
-
-## Scrape the version string from the Makefile.PL. (for libnet)
-sub scrape_mkplver
-{
- my($srcpath) = @_;
- my $verln = scrape_verln($srcpath);
- $verln =~ s/,/;/;
- return $verln;
-}
-
-## Scrape the version string from a file inside the dist dir.
-sub distpath_ver
-{
- my($distpath) = @_;
- my $srcpath = dist_srcpath($distpath);
- my $mkplpath = "$distpath/Makefile.PL";
- if(defined $srcpath){
- return scrape_modver($srcpath);
- }elsif(-f $mkplpath){
- return scrape_mkplver($mkplpath);
- }else{
- err("failed to scrape version from $distpath");
- }
-}
-
-## Search the base path for the dist dirs and extract their respective
-## version strings.
-sub find_distvers
-{
- my($basepath) = @_;
- opendir my $dh, $basepath or die "opendir: $!";
- my @dirs = grep { -d $_ } map { "$basepath/$_" } grep { !/^[.]/ } readdir $dh;
- closedir $dh;
-
- my @distvers;
- for my $dpath (@dirs){
- push @distvers, [ path_dist($dpath), distpath_ver($dpath) ];
- }
- return @distvers;
-}
-
-## Maps an aref of dist name/perl version strings (perl expressions) to
-## a package name and version string suitable for a PKGBUILD.
-sub pkgspec
-{
- my($dist, $ver) = @$_;
- $dist =~ tr/A-Z/a-z/;
- $ver = eval $ver;
- return "perl-$dist=$ver";
-}
-
-## Searches the perl source dir provided for a list of packages which
-## correspond to the core distributions bundled within in.
-sub perlcorepkgs
-{
- my($perlpath) = @_;
- my @dirs = ("$perlpath/cpan", "$perlpath/dist");
- my @provs;
- for my $d (@dirs){
- if(!-d $d){
- err("$d is not a valid directory");
- }
- push @provs, map pkgspec, find_distvers($d);
- }
- return @provs;
-}
-
-## Formats the provided lines into a neatly formatted bash array. The first arg
-## is the name of the bash variable to assign it to.
-sub basharray
-{
- my $vname = shift;
-
- ## Sort entries and surround with quotes.
- my @lns = sort map { qq{'$_'} } @_;
- $lns[0] = "$vname=($lns[0]";
-
- ## Indent lines for OCD geeks.
- if(@lns > 1){
- my $ind = length($vname) + 2;
- splice @lns, 1, @lns-1,
- map { (' ' x $ind) . $_ } @lns[1 .. $#lns];
- }
-
- $lns[$#lns] .= ')';
- return map { "$_\n" } @lns;
-}
-
-## Patch the PKGBUILD at the given path with a new provides array, overwriting
-## the old one.
-sub patchpb
-{
- my $pbpath = shift;
- open my $fh, '<', $pbpath or die "open: $!";
- my @lines = <$fh>;
- close $fh;
-
- my($i, $j);
- for($i = 0; $i < @lines; $i++){
- last if($lines[$i] =~ /^provides=/);
- }
- if($i == @lines){
- err("failed to find provides array in PKGBUILD");
- }
- for($j = $i; $j < @lines; $j++){
- last if($lines[$j] =~ /[)]/);
- }
- if($j == @lines){
- err("failed to find end of provides array");
- }
-
- splice @lines, $i, $j-$i+1,
- basharray('provides', grep { !/win32|next/ } @_);
-
- ## Avoid corrupting the existing PKGBUILD in case of a crash, etc.
- if(-f "$pbpath.$$"){
- err("pbpath.$$ temporary file already exists, please remove it.");
- }
- open $fh, '>', "$pbpath.$$" or die "open: $!";
- print $fh @lines;
- close $fh or die "close: $!";
- rename "$pbpath.$$", "$pbpath" or die "rename: $!";
-
- return;
-}
-
-## Program entrypoint.
-sub main
-{
- if(@_ < 2){
- print STDERR "usage: $0 [perl source path] [PKGBUILD path]\n";
- exit 2;
- }
- my($perlpath, $pbpath) = @_;
- if(!-f $pbpath){
- err("$pbpath is not a valid file.");
- }elsif(!-d $perlpath){
- err("$perlpath is not a valid directory.");
- }else{
- patchpb($pbpath, perlcorepkgs($perlpath));
- }
- exit 0;
-}
-
-main(@ARGV);
-
-# EOF
Copied: perl/repos/testing-i686/patchprov (from rev 286485, perl/trunk/patchprov)
===================================================================
--- testing-i686/patchprov (rev 0)
+++ testing-i686/patchprov 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,259 @@
+#!/usr/bin/perl
+##
+## Name:
+## patchprov
+##
+## Description:
+## Patch the provides list in the perl package PKGBUILD. Scan the appropriate
+## directories under the perl source tree for directories containing dists
+## similar to CPAN dists. Search the files in the distributions for VERSION
+## strings, which are perl expressions. Filters these version strings through
+## the perl interpreter, then transform the dist. names and versions into
+## package names and versions. Finally, we cut out the "provides" array from the
+## PKGBUILD and replace it with the newer version.
+##
+## Usage:
+## patchprov [path to perl source tree] [path to PKGBUILD]
+##
+## Caveats:
+## The path code is not platform independent and will only work in POSIX.
+##
+## Changelog:
+## 06/10/14 JD Rewrite from scratch for perl 5.20.0 and ArchLinux.
+##
+## Authors:
+## Justin "juster" Davis <jrcd83 at gmail.com>
+##
+
+use warnings;
+use strict;
+
+sub err
+{
+ print STDERR "patchprov: error: @_\n";
+ exit 1;
+}
+
+## Extract the dist. name from its containing directory.
+sub path_dist
+{
+ my($path) = @_;
+ $path =~ s{^.*/}{};
+ return $path;
+}
+
+## Create a path like $path/lib/Foo/Bar.pm for Foo::Bar.
+sub lib_modpath
+{
+ my($path, $modname) = @_;
+ $modname =~ s{::}{/}g;
+ return "$path/lib/$modname.pm";
+}
+
+## Create a path to a file in the containing directory, named after
+## the last segment of the module name, with suffix attached.
+sub dumb_modpath
+{
+ my($path, $modname, $suffix) = @_;
+ $modname =~ s{^.*::}{};
+ return "$path/$modname$suffix";
+}
+
+## Find a source file contained in the directory that we can scrape the
+## perl versions string from.
+my %distmods = (
+ 'PathTools' => 'Cwd',
+ 'Scalar-List-Utils' => 'List::Util',
+ 'IO-Compress' => 'IO::Compress::Gzip',
+);
+sub dist_srcpath
+{
+ my($path) = @_;
+ my $distname = path_dist($path);
+ my $modname;
+ if(exists $distmods{$distname}){
+ $modname = $distmods{$distname};
+ }else{
+ $modname = $distname;
+ $modname =~ s/-/::/g;
+ }
+ my @srcpaths = (
+ lib_modpath($path, $modname),
+ dumb_modpath($path, $modname, '.pm'),
+ dumb_modpath($path, $modname, '_pm.PL'),
+ "$path/VERSION", # for podlators
+ );
+ for my $src (@srcpaths){
+ return $src if(-f $src);
+ }
+ return undef;
+}
+
+## Scrape the version string for the module file or Makefile.PL.
+sub scrape_verln
+{
+ my($srcpath) = @_;
+ open my $fh, '<', $srcpath or die "open: $!";
+ while(my $ln = <$fh>){
+ if($ln =~ s/^.*VERSION *=>? *//){
+ close $fh;
+ return $ln;
+ }
+ }
+ close $fh;
+ err("failed to find VERSION in $srcpath");
+}
+
+## Scrape the version string from the module source file.
+sub scrape_modver
+{
+ my($srcpath) = @_;
+ return scrape_verln($srcpath);
+}
+
+## Scrape the version string from the Makefile.PL. (for libnet)
+sub scrape_mkplver
+{
+ my($srcpath) = @_;
+ my $verln = scrape_verln($srcpath);
+ $verln =~ s/,/;/;
+ return $verln;
+}
+
+## Scrape the version string from a file inside the dist dir.
+sub distpath_ver
+{
+ my($distpath) = @_;
+ my $srcpath = dist_srcpath($distpath);
+ my $mkplpath = "$distpath/Makefile.PL";
+ if(defined $srcpath){
+ return scrape_modver($srcpath);
+ }elsif(-f $mkplpath){
+ return scrape_mkplver($mkplpath);
+ }else{
+ err("failed to scrape version from $distpath");
+ }
+}
+
+## Search the base path for the dist dirs and extract their respective
+## version strings.
+sub find_distvers
+{
+ my($basepath) = @_;
+ opendir my $dh, $basepath or die "opendir: $!";
+ my @dirs = grep { -d $_ } map { "$basepath/$_" } grep { !/^[.]/ } readdir $dh;
+ closedir $dh;
+
+ my @distvers;
+ for my $dpath (@dirs){
+ push @distvers, [ path_dist($dpath), distpath_ver($dpath) ];
+ }
+ return @distvers;
+}
+
+## Maps an aref of dist name/perl version strings (perl expressions) to
+## a package name and version string suitable for a PKGBUILD.
+sub pkgspec
+{
+ my($dist, $ver) = @$_;
+ $dist =~ tr/A-Z/a-z/;
+ $ver = eval $ver;
+ return "perl-$dist=$ver";
+}
+
+## Searches the perl source dir provided for a list of packages which
+## correspond to the core distributions bundled within in.
+sub perlcorepkgs
+{
+ my($perlpath) = @_;
+ my @dirs = ("$perlpath/cpan", "$perlpath/dist");
+ my @provs;
+ for my $d (@dirs){
+ if(!-d $d){
+ err("$d is not a valid directory");
+ }
+ push @provs, map pkgspec, find_distvers($d);
+ }
+ return @provs;
+}
+
+## Formats the provided lines into a neatly formatted bash array. The first arg
+## is the name of the bash variable to assign it to.
+sub basharray
+{
+ my $vname = shift;
+
+ ## Sort entries and surround with quotes.
+ my @lns = sort map { qq{'$_'} } @_;
+ $lns[0] = "$vname=($lns[0]";
+
+ ## Indent lines for OCD geeks.
+ if(@lns > 1){
+ my $ind = length($vname) + 2;
+ splice @lns, 1, @lns-1,
+ map { (' ' x $ind) . $_ } @lns[1 .. $#lns];
+ }
+
+ $lns[$#lns] .= ')';
+ return map { "$_\n" } @lns;
+}
+
+## Patch the PKGBUILD at the given path with a new provides array, overwriting
+## the old one.
+sub patchpb
+{
+ my $pbpath = shift;
+ open my $fh, '<', $pbpath or die "open: $!";
+ my @lines = <$fh>;
+ close $fh;
+
+ my($i, $j);
+ for($i = 0; $i < @lines; $i++){
+ last if($lines[$i] =~ /^provides=/);
+ }
+ if($i == @lines){
+ err("failed to find provides array in PKGBUILD");
+ }
+ for($j = $i; $j < @lines; $j++){
+ last if($lines[$j] =~ /[)]/);
+ }
+ if($j == @lines){
+ err("failed to find end of provides array");
+ }
+
+ splice @lines, $i, $j-$i+1,
+ basharray('provides', grep { !/win32|next/ } @_);
+
+ ## Avoid corrupting the existing PKGBUILD in case of a crash, etc.
+ if(-f "$pbpath.$$"){
+ err("pbpath.$$ temporary file already exists, please remove it.");
+ }
+ open $fh, '>', "$pbpath.$$" or die "open: $!";
+ print $fh @lines;
+ close $fh or die "close: $!";
+ rename "$pbpath.$$", "$pbpath" or die "rename: $!";
+
+ return;
+}
+
+## Program entrypoint.
+sub main
+{
+ if(@_ < 2){
+ print STDERR "usage: $0 [perl source path] [PKGBUILD path]\n";
+ exit 2;
+ }
+ my($perlpath, $pbpath) = @_;
+ if(!-f $pbpath){
+ err("$pbpath is not a valid file.");
+ }elsif(!-d $perlpath){
+ err("$perlpath is not a valid directory.");
+ }else{
+ patchpb($pbpath, perlcorepkgs($perlpath));
+ }
+ exit 0;
+}
+
+main(@ARGV);
+
+# EOF
Deleted: testing-i686/perl-binary-module-dependency-1.template
===================================================================
--- testing-i686/perl-binary-module-dependency-1.template 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/perl-binary-module-dependency-1.template 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,5 +0,0 @@
-if [[ $(find "$pkgdir/usr/lib/perl5/" -name "*.so") ]]; then
- _perlver_min=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]);')
- _perlver_max=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]+1);')
- depends+=("perl>=$_perlver_min" "perl<$_perlver_max")
-fi
Copied: perl/repos/testing-i686/perl-binary-module-dependency-1.template (from rev 286485, perl/trunk/perl-binary-module-dependency-1.template)
===================================================================
--- testing-i686/perl-binary-module-dependency-1.template (rev 0)
+++ testing-i686/perl-binary-module-dependency-1.template 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,5 @@
+if [[ $(find "$pkgdir/usr/lib/perl5/" -name "*.so") ]]; then
+ _perlver_min=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]);')
+ _perlver_max=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]+1);')
+ depends+=("perl>=$_perlver_min" "perl<$_perlver_max")
+fi
Deleted: testing-i686/perlbin.csh
===================================================================
--- testing-i686/perlbin.csh 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/perlbin.csh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,15 +0,0 @@
-# Set path to perl scriptdirs if they exist
-# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
-# Added /usr/bin/*_perl dirs for scripts
-# Remove /usr/lib/perl5/*_perl/bin in next release
-
-[ -d /usr/bin/site_perl ] && setenv PATH ${PATH}:/usr/bin/site_perl
-[ -d /usr/lib/perl5/site_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/site_perl/bin
-
-[ -d /usr/bin/vendor_perl ] && setenv PATH ${PATH}:/usr/bin/vendor_perl
-[ -d /usr/lib/perl5/vendor_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/vendor_perl/bin
-
-[ -d /usr/bin/core_perl ] && setenv PATH ${PATH}:/usr/bin/core_perl
-
-# If you have modules in non-standard directories you can add them here.
-#export PERLLIB=dir1:dir2
Copied: perl/repos/testing-i686/perlbin.csh (from rev 286485, perl/trunk/perlbin.csh)
===================================================================
--- testing-i686/perlbin.csh (rev 0)
+++ testing-i686/perlbin.csh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,15 @@
+# Set path to perl scriptdirs if they exist
+# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
+# Added /usr/bin/*_perl dirs for scripts
+# Remove /usr/lib/perl5/*_perl/bin in next release
+
+[ -d /usr/bin/site_perl ] && setenv PATH ${PATH}:/usr/bin/site_perl
+[ -d /usr/lib/perl5/site_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/site_perl/bin
+
+[ -d /usr/bin/vendor_perl ] && setenv PATH ${PATH}:/usr/bin/vendor_perl
+[ -d /usr/lib/perl5/vendor_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/vendor_perl/bin
+
+[ -d /usr/bin/core_perl ] && setenv PATH ${PATH}:/usr/bin/core_perl
+
+# If you have modules in non-standard directories you can add them here.
+#export PERLLIB=dir1:dir2
Deleted: testing-i686/perlbin.fish
===================================================================
--- testing-i686/perlbin.fish 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/perlbin.fish 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,10 +0,0 @@
-# Set path to perl scriptdirs if they exist
-# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
-
-if status --is-login
- for perldir in /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl
- if test -d $perldir
- set PATH $PATH $perldir
- end
- end
-end
Copied: perl/repos/testing-i686/perlbin.fish (from rev 286485, perl/trunk/perlbin.fish)
===================================================================
--- testing-i686/perlbin.fish (rev 0)
+++ testing-i686/perlbin.fish 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,10 @@
+# Set path to perl scriptdirs if they exist
+# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
+
+if status --is-login
+ for perldir in /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl
+ if test -d $perldir
+ set PATH $PATH $perldir
+ end
+ end
+end
Deleted: testing-i686/perlbin.sh
===================================================================
--- testing-i686/perlbin.sh 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/perlbin.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,18 +0,0 @@
-# Set path to perl scriptdirs if they exist
-# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
-# Added /usr/bin/*_perl dirs for scripts
-# Remove /usr/lib/perl5/*_perl/bin in next release
-
-[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
-[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin
-
-[ -d /usr/bin/vendor_perl ] && PATH=$PATH:/usr/bin/vendor_perl
-[ -d /usr/lib/perl5/vendor_perl/bin ] && PATH=$PATH:/usr/lib/perl5/vendor_perl/bin
-
-[ -d /usr/bin/core_perl ] && PATH=$PATH:/usr/bin/core_perl
-
-export PATH
-
-# If you have modules in non-standard directories you can add them here.
-#export PERLLIB=dir1:dir2
-
Copied: perl/repos/testing-i686/perlbin.sh (from rev 286485, perl/trunk/perlbin.sh)
===================================================================
--- testing-i686/perlbin.sh (rev 0)
+++ testing-i686/perlbin.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,18 @@
+# Set path to perl scriptdirs if they exist
+# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
+# Added /usr/bin/*_perl dirs for scripts
+# Remove /usr/lib/perl5/*_perl/bin in next release
+
+[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
+[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin
+
+[ -d /usr/bin/vendor_perl ] && PATH=$PATH:/usr/bin/vendor_perl
+[ -d /usr/lib/perl5/vendor_perl/bin ] && PATH=$PATH:/usr/lib/perl5/vendor_perl/bin
+
+[ -d /usr/bin/core_perl ] && PATH=$PATH:/usr/bin/core_perl
+
+export PATH
+
+# If you have modules in non-standard directories you can add them here.
+#export PERLLIB=dir1:dir2
+
Deleted: testing-i686/upgpkg
===================================================================
--- testing-i686/upgpkg 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-i686/upgpkg 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,4 +0,0 @@
-upgpkg_build() {
- makepkg -o
- ./patchprov src/perl-$pkgver PKGBUILD
-}
Copied: perl/repos/testing-i686/upgpkg (from rev 286485, perl/trunk/upgpkg)
===================================================================
--- testing-i686/upgpkg (rev 0)
+++ testing-i686/upgpkg 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,4 @@
+upgpkg_build() {
+ makepkg -o
+ ./patchprov src/perl-$pkgver PKGBUILD
+}
Deleted: testing-x86_64/CVE-2016-2381_duplicate_env.diff
===================================================================
--- testing-x86_64/CVE-2016-2381_duplicate_env.diff 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/CVE-2016-2381_duplicate_env.diff 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,104 +0,0 @@
-From 83e7ebed7afa79a2f50eca6b6330eae7c3a02d36 Mon Sep 17 00:00:00 2001
-From: Tony Cook <tony at develop-help.com>
-Date: Wed, 27 Jan 2016 11:52:15 +1100
-Subject: remove duplicate environment variables from environ
-
-If we see duplicate environment variables while iterating over
-environ[]:
-
-a) make sure we use the same value in %ENV that getenv() returns.
-
-Previously on a duplicate, %ENV would have the last entry for the name
-from environ[], but a typical getenv() would return the first entry.
-
-Rather than assuming all getenv() implementations return the first entry
-explicitly call getenv() to ensure they agree.
-
-b) remove duplicate entries from environ
-
-Previously if there was a duplicate definition for a name in environ[]
-setting that name in %ENV could result in an unsafe value being passed
-to a child process, so ensure environ[] has no duplicates.
-
-Patch-Name: fixes/CVE-2016-2381_duplicate_env.diff
----
- perl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 49 insertions(+), 2 deletions(-)
-
-diff --git a/perl.c b/perl.c
-index 80a76c2..ed25429 100644
---- a/perl.c
-+++ b/perl.c
-@@ -4303,23 +4303,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env)
- }
- if (env) {
- char *s, *old_var;
-+ STRLEN nlen;
- SV *sv;
-+ HV *dups = newHV();
-+
- for (; *env; env++) {
- old_var = *env;
-
- if (!(s = strchr(old_var,'=')) || s == old_var)
- continue;
-+ nlen = s - old_var;
-
- #if defined(MSDOS) && !defined(DJGPP)
- *s = '\0';
- (void)strupr(old_var);
- *s = '=';
- #endif
-- sv = newSVpv(s+1, 0);
-- (void)hv_store(hv, old_var, s - old_var, sv, 0);
-+ if (hv_exists(hv, old_var, nlen)) {
-+ const char *name = savepvn(old_var, nlen);
-+
-+ /* make sure we use the same value as getenv(), otherwise code that
-+ uses getenv() (like setlocale()) might see a different value to %ENV
-+ */
-+ sv = newSVpv(PerlEnv_getenv(name), 0);
-+
-+ /* keep a count of the dups of this name so we can de-dup environ later */
-+ if (hv_exists(dups, name, nlen))
-+ ++SvIVX(*hv_fetch(dups, name, nlen, 0));
-+ else
-+ (void)hv_store(dups, name, nlen, newSViv(1), 0);
-+
-+ Safefree(name);
-+ }
-+ else {
-+ sv = newSVpv(s+1, 0);
-+ }
-+ (void)hv_store(hv, old_var, nlen, sv, 0);
- if (env_is_not_environ)
- mg_set(sv);
- }
-+ if (HvKEYS(dups)) {
-+ /* environ has some duplicate definitions, remove them */
-+ HE *entry;
-+ hv_iterinit(dups);
-+ while ((entry = hv_iternext_flags(dups, 0))) {
-+ STRLEN nlen;
-+ const char *name = HePV(entry, nlen);
-+ IV count = SvIV(HeVAL(entry));
-+ IV i;
-+ SV **valp = hv_fetch(hv, name, nlen, 0);
-+
-+ assert(valp);
-+
-+ /* try to remove any duplicate names, depending on the
-+ * implementation used in my_setenv() the iteration might
-+ * not be necessary, but let's be safe.
-+ */
-+ for (i = 0; i < count; ++i)
-+ my_setenv(name, 0);
-+
-+ /* and set it back to the value we set $ENV{name} to */
-+ my_setenv(name, SvPV_nolen(*valp));
-+ }
-+ }
-+ SvREFCNT_dec_NN(dups);
- }
- #endif /* USE_ENVIRON_ARRAY */
- #endif /* !PERL_MICRO */
Copied: perl/repos/testing-x86_64/CVE-2016-2381_duplicate_env.diff (from rev 286485, perl/trunk/CVE-2016-2381_duplicate_env.diff)
===================================================================
--- testing-x86_64/CVE-2016-2381_duplicate_env.diff (rev 0)
+++ testing-x86_64/CVE-2016-2381_duplicate_env.diff 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,104 @@
+From 83e7ebed7afa79a2f50eca6b6330eae7c3a02d36 Mon Sep 17 00:00:00 2001
+From: Tony Cook <tony at develop-help.com>
+Date: Wed, 27 Jan 2016 11:52:15 +1100
+Subject: remove duplicate environment variables from environ
+
+If we see duplicate environment variables while iterating over
+environ[]:
+
+a) make sure we use the same value in %ENV that getenv() returns.
+
+Previously on a duplicate, %ENV would have the last entry for the name
+from environ[], but a typical getenv() would return the first entry.
+
+Rather than assuming all getenv() implementations return the first entry
+explicitly call getenv() to ensure they agree.
+
+b) remove duplicate entries from environ
+
+Previously if there was a duplicate definition for a name in environ[]
+setting that name in %ENV could result in an unsafe value being passed
+to a child process, so ensure environ[] has no duplicates.
+
+Patch-Name: fixes/CVE-2016-2381_duplicate_env.diff
+---
+ perl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 49 insertions(+), 2 deletions(-)
+
+diff --git a/perl.c b/perl.c
+index 80a76c2..ed25429 100644
+--- a/perl.c
++++ b/perl.c
+@@ -4303,23 +4303,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env)
+ }
+ if (env) {
+ char *s, *old_var;
++ STRLEN nlen;
+ SV *sv;
++ HV *dups = newHV();
++
+ for (; *env; env++) {
+ old_var = *env;
+
+ if (!(s = strchr(old_var,'=')) || s == old_var)
+ continue;
++ nlen = s - old_var;
+
+ #if defined(MSDOS) && !defined(DJGPP)
+ *s = '\0';
+ (void)strupr(old_var);
+ *s = '=';
+ #endif
+- sv = newSVpv(s+1, 0);
+- (void)hv_store(hv, old_var, s - old_var, sv, 0);
++ if (hv_exists(hv, old_var, nlen)) {
++ const char *name = savepvn(old_var, nlen);
++
++ /* make sure we use the same value as getenv(), otherwise code that
++ uses getenv() (like setlocale()) might see a different value to %ENV
++ */
++ sv = newSVpv(PerlEnv_getenv(name), 0);
++
++ /* keep a count of the dups of this name so we can de-dup environ later */
++ if (hv_exists(dups, name, nlen))
++ ++SvIVX(*hv_fetch(dups, name, nlen, 0));
++ else
++ (void)hv_store(dups, name, nlen, newSViv(1), 0);
++
++ Safefree(name);
++ }
++ else {
++ sv = newSVpv(s+1, 0);
++ }
++ (void)hv_store(hv, old_var, nlen, sv, 0);
+ if (env_is_not_environ)
+ mg_set(sv);
+ }
++ if (HvKEYS(dups)) {
++ /* environ has some duplicate definitions, remove them */
++ HE *entry;
++ hv_iterinit(dups);
++ while ((entry = hv_iternext_flags(dups, 0))) {
++ STRLEN nlen;
++ const char *name = HePV(entry, nlen);
++ IV count = SvIV(HeVAL(entry));
++ IV i;
++ SV **valp = hv_fetch(hv, name, nlen, 0);
++
++ assert(valp);
++
++ /* try to remove any duplicate names, depending on the
++ * implementation used in my_setenv() the iteration might
++ * not be necessary, but let's be safe.
++ */
++ for (i = 0; i < count; ++i)
++ my_setenv(name, 0);
++
++ /* and set it back to the value we set $ENV{name} to */
++ my_setenv(name, SvPV_nolen(*valp));
++ }
++ }
++ SvREFCNT_dec_NN(dups);
+ }
+ #endif /* USE_ENVIRON_ARRAY */
+ #endif /* !PERL_MICRO */
Deleted: testing-x86_64/PKGBUILD
===================================================================
--- testing-x86_64/PKGBUILD 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/PKGBUILD 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,232 +0,0 @@
-# $Id$
-# Maintainer: Florian Pritz <bluewind at xinu.at>
-# Contributor: Angel Velasquez <angvp at archlinux.org>
-# Contributor: kevin <kevin.archlinux.org>
-# Contributor: judd <jvinet.zeroflux.org>
-# Contributor: francois <francois.archlinux.org>
-
-pkgname=perl
-pkgver=5.24.0
-pkgrel=3
-pkgdesc="A highly capable, feature-rich programming language"
-arch=(i686 x86_64)
-license=('GPL' 'PerlArtistic')
-url="http://www.perl.org"
-groups=('base')
-depends=('gdbm' 'db' 'glibc')
-# NOTE: This array is automatically generated by `./patchprov`.
-# If you want to add entries, do so in the next array.
-provides=('perl-archive-tar=2.04'
- 'perl-attribute-handlers=0.99'
- 'perl-autodie=2.29'
- 'perl-autoloader=5.74'
- 'perl-autouse=1.11'
- 'perl-b-debug=1.23'
- 'perl-base=2.23'
- 'perl-bignum=0.42'
- 'perl-carp=1.40'
- 'perl-compress-raw-bzip2=2.069'
- 'perl-compress-raw-zlib=2.069'
- 'perl-config-perl-v=0.25'
- 'perl-constant=1.33'
- 'perl-cpan-meta-requirements=2.140'
- 'perl-cpan-meta-yaml=0.018'
- 'perl-cpan-meta=2.150005'
- 'perl-cpan=2.11'
- 'perl-data-dumper=2.160'
- 'perl-db_file=1.835'
- 'perl-devel-ppport=3.32'
- 'perl-devel-selfstubber=1.05'
- 'perl-digest-md5=2.54'
- 'perl-digest-sha=5.95'
- 'perl-digest=1.17'
- 'perl-dumpvalue=1.18'
- 'perl-encode=2.80'
- 'perl-encoding-warnings=0.12'
- 'perl-env=1.04'
- 'perl-experimental=0.016'
- 'perl-exporter=5.72'
- 'perl-extutils-cbuilder=0.280225'
- 'perl-extutils-constant=0.23'
- 'perl-extutils-install=2.04'
- 'perl-extutils-makemaker=7.10_01'
- 'perl-extutils-manifest=1.70'
- 'perl-extutils-parsexs=3.31'
- 'perl-file-fetch=0.48'
- 'perl-file-path=2.12_01'
- 'perl-file-temp=0.2304'
- 'perl-filter-simple=0.92'
- 'perl-filter-util-call=1.55'
- 'perl-getopt-long=2.48'
- 'perl-http-tiny=0.056'
- 'perl-i18n-collate=1.02'
- 'perl-i18n-langtags=0.40'
- 'perl-if=0.0606'
- 'perl-io-compress=2.069'
- 'perl-io-socket-ip=0.37'
- 'perl-io-zlib=1.10'
- 'perl-io=1.36'
- 'perl-ipc-cmd=0.92'
- 'perl-ipc-sysv=2.06_01'
- 'perl-json-pp=2.27300'
- 'perl-lib=0.63'
- 'perl-libnet=3.08'
- 'perl-locale-codes=3.37'
- 'perl-locale-maketext-simple=0.21'
- 'perl-locale-maketext=1.26'
- 'perl-math-bigint-fastcalc=0.40'
- 'perl-math-bigint=1.999715'
- 'perl-math-bigrat=0.260802'
- 'perl-math-complex=1.59'
- 'perl-memoize=1.03'
- 'perl-mime-base64=3.15'
- 'perl-module-corelist=5.20160506'
- 'perl-module-load-conditional=0.64'
- 'perl-module-load=0.32'
- 'perl-module-loaded=0.08'
- 'perl-module-metadata=1.000031'
- 'perl-net-ping=2.43'
- 'perl-params-check=0.38'
- 'perl-parent=0.234'
- 'perl-parse-cpan-meta=1.4417'
- 'perl-pathtools=3.63'
- 'perl-perl-ostype=1.009'
- 'perl-perlfaq=5.021010'
- 'perl-perlio-via-quotedprint=0.08'
- 'perl-pod-checker=1.60'
- 'perl-pod-escapes=1.07'
- 'perl-pod-parser=1.63'
- 'perl-pod-perldoc=3.25_02'
- 'perl-pod-simple=3.32'
- 'perl-pod-usage=1.68'
- 'perl-podlators=5.006'
- 'perl-safe=2.39'
- 'perl-scalar-list-utils=1.42_02'
- 'perl-search-dict=1.07'
- 'perl-selfloader=1.23'
- 'perl-socket=2.020_03'
- 'perl-storable=2.56'
- 'perl-sys-syslog=0.33'
- 'perl-term-ansicolor=4.04'
- 'perl-term-cap=1.17'
- 'perl-term-complete=1.403'
- 'perl-term-readline=1.15'
- 'perl-test-harness=3.36'
- 'perl-test-simple=1.001014'
- 'perl-test=1.28'
- 'perl-text-abbrev=1.02'
- 'perl-text-balanced=2.03'
- 'perl-text-parsewords=3.30'
- 'perl-text-tabs=2013.0523'
- 'perl-thread-queue=3.09'
- 'perl-thread-semaphore=2.12'
- 'perl-threads-shared=1.51'
- 'perl-threads=2.07'
- 'perl-tie-file=1.02'
- 'perl-tie-refhash=1.39'
- 'perl-time-hires=1.9733'
- 'perl-time-local=1.2300'
- 'perl-time-piece=1.31'
- 'perl-unicode-collate=1.14'
- 'perl-unicode-normalize=1.25'
- 'perl-version=0.9916'
- 'perl-xsloader=0.21')
-# Add your own provides here
-provides=(${provides[@]})
-source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2
- perlbin.sh
- perlbin.csh
- perlbin.fish
- perl-binary-module-dependency-1.template)
-options=('makeflags' '!purge' 'emptydirs')
-md5sums=('99f39abe614b50719d9915431e54fc1e'
- 'f2a1ee55a05e84652cb10cab17a4c546'
- 'd8153ad4a43bb4142d1bdeaa9fcdd95b'
- '626605dc8beef956cbaf46f031c7e894'
- '2a366dfc783c460764cde0caf88a23af')
-
-prepare() {
- cd ${srcdir}/${pkgname}-${pkgver}
-
-}
-
-build() {
- cd ${srcdir}/${pkgname}-${pkgver}
-
- if [ "${CARCH}" = "x86_64" ]; then
- # for x86_64
- arch_opts="-Dcccdlflags='-fPIC'"
- else
- # for i686
- arch_opts=""
- fi
-
- ./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
- -Dprefix=/usr -Dvendorprefix=/usr \
- -Dprivlib=/usr/share/perl5/core_perl \
- -Darchlib=/usr/lib/perl5/core_perl \
- -Dsitelib=/usr/share/perl5/site_perl \
- -Dsitearch=/usr/lib/perl5/site_perl \
- -Dvendorlib=/usr/share/perl5/vendor_perl \
- -Dvendorarch=/usr/lib/perl5/vendor_perl \
- -Dscriptdir=/usr/bin/core_perl \
- -Dsitescript=/usr/bin/site_perl \
- -Dvendorscript=/usr/bin/vendor_perl \
- -Dinc_version_list=none \
- -Dman1ext=1perl -Dman3ext=3perl ${arch_opts} \
- -Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}"
- make
-}
-
-check() {
- cd ${srcdir}/${pkgname}-${pkgver}
- TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
-# make test
-}
-
-package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR="$pkgdir" install
-
- for template in "$srcdir/"*.template; do
- install -Dm644 "$template" "$pkgdir/usr/share/makepkg-template/${template##*/}"
- done
- ln -s perl-binary-module-dependency-1.template "$pkgdir/usr/share/makepkg-template/"perl-binary-module-dependency.template
-
- ### Perl Settings ###
- # Change man page extensions for site and vendor module builds.
- # Set no mail address since bug reports should go to the bug tracker
- # and not someone's email.
- sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
- -e "/^cf_email=/ s/'.*'/''/" \
- -e "/^perladmin=/ s/'.*'/''/" \
- -i ${pkgdir}/usr/lib/perl5/core_perl/Config_heavy.pl
-
- ### CPAN Settings ###
- # Set CPAN default config to use the site directories.
- sed -e '/(makepl_arg =>/ s/""/"INSTALLDIRS=site"/' \
- -e '/(mbuildpl_arg =>/ s/""/"installdirs=site"/' \
- -i ${pkgdir}/usr/share/perl5/core_perl/CPAN/FirstTime.pm
-
- # Profile script to set paths to perl scripts.
- install -D -m755 ${srcdir}/perlbin.sh \
- ${pkgdir}/etc/profile.d/perlbin.sh
- # Profile script to set paths to perl scripts on csh. (FS#22441)
- install -D -m755 ${srcdir}/perlbin.csh \
- ${pkgdir}/etc/profile.d/perlbin.csh
- # Profile script to set paths to perl scripts on fish. (FS#51191)
- install -D -m 755 "$srcdir/perlbin.fish" \
- "$pkgdir/usr/share/fish/vendor_conf.d/perlbin.fish"
-
- # Add the dirs so new installs will already have them in PATH once they
- # install their first perl programm
- install -d -m755 "$pkgdir/usr/bin/vendor_perl"
- install -d -m755 "$pkgdir/usr/bin/site_perl"
-
- #(cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
- rm "$pkgdir/usr/bin/perl$pkgver"
- (cd ${pkgdir}/usr/bin/core_perl; ln -sf c2ph pstruct;)
-
- find $pkgdir -name perllocal.pod -delete
- find $pkgdir -name .packlist -delete
-}
Copied: perl/repos/testing-x86_64/PKGBUILD (from rev 286485, perl/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD (rev 0)
+++ testing-x86_64/PKGBUILD 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,232 @@
+# $Id$
+# Maintainer: Florian Pritz <bluewind at xinu.at>
+# Contributor: Angel Velasquez <angvp at archlinux.org>
+# Contributor: kevin <kevin.archlinux.org>
+# Contributor: judd <jvinet.zeroflux.org>
+# Contributor: francois <francois.archlinux.org>
+
+pkgname=perl
+pkgver=5.24.1
+pkgrel=1
+pkgdesc="A highly capable, feature-rich programming language"
+arch=(i686 x86_64)
+license=('GPL' 'PerlArtistic')
+url="http://www.perl.org"
+groups=('base')
+depends=('gdbm' 'db' 'glibc')
+# NOTE: This array is automatically generated by `./patchprov`.
+# If you want to add entries, do so in the next array.
+provides=('perl-archive-tar=2.04_01'
+ 'perl-attribute-handlers=0.99'
+ 'perl-autodie=2.29'
+ 'perl-autoloader=5.74'
+ 'perl-autouse=1.11'
+ 'perl-b-debug=1.23'
+ 'perl-base=2.23'
+ 'perl-bignum=0.42_01'
+ 'perl-carp=1.40'
+ 'perl-compress-raw-bzip2=2.069'
+ 'perl-compress-raw-zlib=2.069'
+ 'perl-config-perl-v=0.25'
+ 'perl-constant=1.33'
+ 'perl-cpan-meta-requirements=2.140'
+ 'perl-cpan-meta-yaml=0.018'
+ 'perl-cpan-meta=2.150005'
+ 'perl-cpan=2.11_01'
+ 'perl-data-dumper=2.160'
+ 'perl-db_file=1.835'
+ 'perl-devel-ppport=3.32'
+ 'perl-devel-selfstubber=1.05'
+ 'perl-digest-md5=2.54'
+ 'perl-digest-sha=5.95_01'
+ 'perl-digest=1.17_01'
+ 'perl-dumpvalue=1.18'
+ 'perl-encode=2.80_01'
+ 'perl-encoding-warnings=0.12'
+ 'perl-env=1.04'
+ 'perl-experimental=0.016'
+ 'perl-exporter=5.72'
+ 'perl-extutils-cbuilder=0.280225'
+ 'perl-extutils-constant=0.23'
+ 'perl-extutils-install=2.04'
+ 'perl-extutils-makemaker=7.10_02'
+ 'perl-extutils-manifest=1.70'
+ 'perl-extutils-parsexs=3.31'
+ 'perl-file-fetch=0.48_01'
+ 'perl-file-path=2.12_01'
+ 'perl-file-temp=0.2304'
+ 'perl-filter-simple=0.92'
+ 'perl-filter-util-call=1.55'
+ 'perl-getopt-long=2.48'
+ 'perl-http-tiny=0.056_001'
+ 'perl-i18n-collate=1.02'
+ 'perl-i18n-langtags=0.40'
+ 'perl-if=0.0606'
+ 'perl-io-compress=2.069_001'
+ 'perl-io-socket-ip=0.37'
+ 'perl-io-zlib=1.10'
+ 'perl-io=1.36_01'
+ 'perl-ipc-cmd=0.92_01'
+ 'perl-ipc-sysv=2.06_01'
+ 'perl-json-pp=2.27300_01'
+ 'perl-lib=0.63'
+ 'perl-libnet=3.08'
+ 'perl-locale-codes=3.37'
+ 'perl-locale-maketext-simple=0.21_01'
+ 'perl-locale-maketext=1.26_01'
+ 'perl-math-bigint-fastcalc=0.40'
+ 'perl-math-bigint=1.999715'
+ 'perl-math-bigrat=0.260802'
+ 'perl-math-complex=1.59'
+ 'perl-memoize=1.03_01'
+ 'perl-mime-base64=3.15'
+ 'perl-module-corelist=5.20170114_24'
+ 'perl-module-load-conditional=0.64'
+ 'perl-module-load=0.32'
+ 'perl-module-loaded=0.08'
+ 'perl-module-metadata=1.000031'
+ 'perl-net-ping=2.43_01'
+ 'perl-params-check=0.38'
+ 'perl-parent=0.234'
+ 'perl-parse-cpan-meta=1.4417_001'
+ 'perl-pathtools=3.63_01'
+ 'perl-perl-ostype=1.009'
+ 'perl-perlfaq=5.021010'
+ 'perl-perlio-via-quotedprint=0.08'
+ 'perl-pod-checker=1.60'
+ 'perl-pod-escapes=1.07'
+ 'perl-pod-parser=1.63'
+ 'perl-pod-perldoc=3.25_03'
+ 'perl-pod-simple=3.32'
+ 'perl-pod-usage=1.68'
+ 'perl-podlators=5.006'
+ 'perl-safe=2.39'
+ 'perl-scalar-list-utils=1.42_02'
+ 'perl-search-dict=1.07'
+ 'perl-selfloader=1.23'
+ 'perl-socket=2.020_03'
+ 'perl-storable=2.56_01'
+ 'perl-sys-syslog=0.33_01'
+ 'perl-term-ansicolor=4.04'
+ 'perl-term-cap=1.17'
+ 'perl-term-complete=1.403'
+ 'perl-term-readline=1.15'
+ 'perl-test-harness=3.36_01'
+ 'perl-test-simple=1.001014'
+ 'perl-test=1.28_01'
+ 'perl-text-abbrev=1.02'
+ 'perl-text-balanced=2.03'
+ 'perl-text-parsewords=3.30'
+ 'perl-text-tabs=2013.0523'
+ 'perl-thread-queue=3.09'
+ 'perl-thread-semaphore=2.12'
+ 'perl-threads-shared=1.51'
+ 'perl-threads=2.07'
+ 'perl-tie-file=1.02'
+ 'perl-tie-refhash=1.39'
+ 'perl-time-hires=1.9733'
+ 'perl-time-local=1.2300'
+ 'perl-time-piece=1.31'
+ 'perl-unicode-collate=1.14'
+ 'perl-unicode-normalize=1.25'
+ 'perl-version=0.9916'
+ 'perl-xsloader=0.22')
+# Add your own provides here
+provides=(${provides[@]})
+source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2
+ perlbin.sh
+ perlbin.csh
+ perlbin.fish
+ perl-binary-module-dependency-1.template)
+options=('makeflags' '!purge' 'emptydirs')
+md5sums=('178ee0e8fa544dbc76d99cf041e2c9f0'
+ 'f2a1ee55a05e84652cb10cab17a4c546'
+ 'd8153ad4a43bb4142d1bdeaa9fcdd95b'
+ '626605dc8beef956cbaf46f031c7e894'
+ '2a366dfc783c460764cde0caf88a23af')
+
+prepare() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+}
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ # for x86_64
+ arch_opts="-Dcccdlflags='-fPIC'"
+ else
+ # for i686
+ arch_opts=""
+ fi
+
+ ./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
+ -Dprefix=/usr -Dvendorprefix=/usr \
+ -Dprivlib=/usr/share/perl5/core_perl \
+ -Darchlib=/usr/lib/perl5/core_perl \
+ -Dsitelib=/usr/share/perl5/site_perl \
+ -Dsitearch=/usr/lib/perl5/site_perl \
+ -Dvendorlib=/usr/share/perl5/vendor_perl \
+ -Dvendorarch=/usr/lib/perl5/vendor_perl \
+ -Dscriptdir=/usr/bin/core_perl \
+ -Dsitescript=/usr/bin/site_perl \
+ -Dvendorscript=/usr/bin/vendor_perl \
+ -Dinc_version_list=none \
+ -Dman1ext=1perl -Dman3ext=3perl ${arch_opts} \
+ -Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}"
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
+# make test
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="$pkgdir" install
+
+ for template in "$srcdir/"*.template; do
+ install -Dm644 "$template" "$pkgdir/usr/share/makepkg-template/${template##*/}"
+ done
+ ln -s perl-binary-module-dependency-1.template "$pkgdir/usr/share/makepkg-template/"perl-binary-module-dependency.template
+
+ ### Perl Settings ###
+ # Change man page extensions for site and vendor module builds.
+ # Set no mail address since bug reports should go to the bug tracker
+ # and not someone's email.
+ sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
+ -e "/^cf_email=/ s/'.*'/''/" \
+ -e "/^perladmin=/ s/'.*'/''/" \
+ -i ${pkgdir}/usr/lib/perl5/core_perl/Config_heavy.pl
+
+ ### CPAN Settings ###
+ # Set CPAN default config to use the site directories.
+ sed -e '/(makepl_arg =>/ s/""/"INSTALLDIRS=site"/' \
+ -e '/(mbuildpl_arg =>/ s/""/"installdirs=site"/' \
+ -i ${pkgdir}/usr/share/perl5/core_perl/CPAN/FirstTime.pm
+
+ # Profile script to set paths to perl scripts.
+ install -D -m755 ${srcdir}/perlbin.sh \
+ ${pkgdir}/etc/profile.d/perlbin.sh
+ # Profile script to set paths to perl scripts on csh. (FS#22441)
+ install -D -m755 ${srcdir}/perlbin.csh \
+ ${pkgdir}/etc/profile.d/perlbin.csh
+ # Profile script to set paths to perl scripts on fish. (FS#51191)
+ install -D -m 755 "$srcdir/perlbin.fish" \
+ "$pkgdir/usr/share/fish/vendor_conf.d/perlbin.fish"
+
+ # Add the dirs so new installs will already have them in PATH once they
+ # install their first perl programm
+ install -d -m755 "$pkgdir/usr/bin/vendor_perl"
+ install -d -m755 "$pkgdir/usr/bin/site_perl"
+
+ #(cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
+ rm "$pkgdir/usr/bin/perl$pkgver"
+ (cd ${pkgdir}/usr/bin/core_perl; ln -sf c2ph pstruct;)
+
+ find $pkgdir -name perllocal.pod -delete
+ find $pkgdir -name .packlist -delete
+}
Deleted: testing-x86_64/generate-rebuild-list.sh
===================================================================
--- testing-x86_64/generate-rebuild-list.sh 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/generate-rebuild-list.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-pkgfile -r "^/usr/lib/perl5/vendor_perl/auto/.*\.so$" | sed 's#^.*/##' | sort -u
-ssh celestia PATH=/usr/local/bin:\$PATH\; /home/bluewind/bin/sogrep-all libperl.so
Copied: perl/repos/testing-x86_64/generate-rebuild-list.sh (from rev 286485, perl/trunk/generate-rebuild-list.sh)
===================================================================
--- testing-x86_64/generate-rebuild-list.sh (rev 0)
+++ testing-x86_64/generate-rebuild-list.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+pkgfile -r "^/usr/lib/perl5/vendor_perl/auto/.*\.so$" | sed 's#^.*/##' | sort -u
+ssh celestia PATH=/usr/local/bin:\$PATH\; /home/bluewind/bin/sogrep-all libperl.so
Deleted: testing-x86_64/patchprov
===================================================================
--- testing-x86_64/patchprov 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/patchprov 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,259 +0,0 @@
-#!/usr/bin/perl
-##
-## Name:
-## patchprov
-##
-## Description:
-## Patch the provides list in the perl package PKGBUILD. Scan the appropriate
-## directories under the perl source tree for directories containing dists
-## similar to CPAN dists. Search the files in the distributions for VERSION
-## strings, which are perl expressions. Filters these version strings through
-## the perl interpreter, then transform the dist. names and versions into
-## package names and versions. Finally, we cut out the "provides" array from the
-## PKGBUILD and replace it with the newer version.
-##
-## Usage:
-## patchprov [path to perl source tree] [path to PKGBUILD]
-##
-## Caveats:
-## The path code is not platform independent and will only work in POSIX.
-##
-## Changelog:
-## 06/10/14 JD Rewrite from scratch for perl 5.20.0 and ArchLinux.
-##
-## Authors:
-## Justin "juster" Davis <jrcd83 at gmail.com>
-##
-
-use warnings;
-use strict;
-
-sub err
-{
- print STDERR "patchprov: error: @_\n";
- exit 1;
-}
-
-## Extract the dist. name from its containing directory.
-sub path_dist
-{
- my($path) = @_;
- $path =~ s{^.*/}{};
- return $path;
-}
-
-## Create a path like $path/lib/Foo/Bar.pm for Foo::Bar.
-sub lib_modpath
-{
- my($path, $modname) = @_;
- $modname =~ s{::}{/}g;
- return "$path/lib/$modname.pm";
-}
-
-## Create a path to a file in the containing directory, named after
-## the last segment of the module name, with suffix attached.
-sub dumb_modpath
-{
- my($path, $modname, $suffix) = @_;
- $modname =~ s{^.*::}{};
- return "$path/$modname$suffix";
-}
-
-## Find a source file contained in the directory that we can scrape the
-## perl versions string from.
-my %distmods = (
- 'PathTools' => 'Cwd',
- 'Scalar-List-Utils' => 'List::Util',
- 'IO-Compress' => 'IO::Compress::Gzip',
-);
-sub dist_srcpath
-{
- my($path) = @_;
- my $distname = path_dist($path);
- my $modname;
- if(exists $distmods{$distname}){
- $modname = $distmods{$distname};
- }else{
- $modname = $distname;
- $modname =~ s/-/::/g;
- }
- my @srcpaths = (
- lib_modpath($path, $modname),
- dumb_modpath($path, $modname, '.pm'),
- dumb_modpath($path, $modname, '_pm.PL'),
- "$path/VERSION", # for podlators
- );
- for my $src (@srcpaths){
- return $src if(-f $src);
- }
- return undef;
-}
-
-## Scrape the version string for the module file or Makefile.PL.
-sub scrape_verln
-{
- my($srcpath) = @_;
- open my $fh, '<', $srcpath or die "open: $!";
- while(my $ln = <$fh>){
- if($ln =~ s/^.*VERSION *=>? *//){
- close $fh;
- return $ln;
- }
- }
- close $fh;
- err("failed to find VERSION in $srcpath");
-}
-
-## Scrape the version string from the module source file.
-sub scrape_modver
-{
- my($srcpath) = @_;
- return scrape_verln($srcpath);
-}
-
-## Scrape the version string from the Makefile.PL. (for libnet)
-sub scrape_mkplver
-{
- my($srcpath) = @_;
- my $verln = scrape_verln($srcpath);
- $verln =~ s/,/;/;
- return $verln;
-}
-
-## Scrape the version string from a file inside the dist dir.
-sub distpath_ver
-{
- my($distpath) = @_;
- my $srcpath = dist_srcpath($distpath);
- my $mkplpath = "$distpath/Makefile.PL";
- if(defined $srcpath){
- return scrape_modver($srcpath);
- }elsif(-f $mkplpath){
- return scrape_mkplver($mkplpath);
- }else{
- err("failed to scrape version from $distpath");
- }
-}
-
-## Search the base path for the dist dirs and extract their respective
-## version strings.
-sub find_distvers
-{
- my($basepath) = @_;
- opendir my $dh, $basepath or die "opendir: $!";
- my @dirs = grep { -d $_ } map { "$basepath/$_" } grep { !/^[.]/ } readdir $dh;
- closedir $dh;
-
- my @distvers;
- for my $dpath (@dirs){
- push @distvers, [ path_dist($dpath), distpath_ver($dpath) ];
- }
- return @distvers;
-}
-
-## Maps an aref of dist name/perl version strings (perl expressions) to
-## a package name and version string suitable for a PKGBUILD.
-sub pkgspec
-{
- my($dist, $ver) = @$_;
- $dist =~ tr/A-Z/a-z/;
- $ver = eval $ver;
- return "perl-$dist=$ver";
-}
-
-## Searches the perl source dir provided for a list of packages which
-## correspond to the core distributions bundled within in.
-sub perlcorepkgs
-{
- my($perlpath) = @_;
- my @dirs = ("$perlpath/cpan", "$perlpath/dist");
- my @provs;
- for my $d (@dirs){
- if(!-d $d){
- err("$d is not a valid directory");
- }
- push @provs, map pkgspec, find_distvers($d);
- }
- return @provs;
-}
-
-## Formats the provided lines into a neatly formatted bash array. The first arg
-## is the name of the bash variable to assign it to.
-sub basharray
-{
- my $vname = shift;
-
- ## Sort entries and surround with quotes.
- my @lns = sort map { qq{'$_'} } @_;
- $lns[0] = "$vname=($lns[0]";
-
- ## Indent lines for OCD geeks.
- if(@lns > 1){
- my $ind = length($vname) + 2;
- splice @lns, 1, @lns-1,
- map { (' ' x $ind) . $_ } @lns[1 .. $#lns];
- }
-
- $lns[$#lns] .= ')';
- return map { "$_\n" } @lns;
-}
-
-## Patch the PKGBUILD at the given path with a new provides array, overwriting
-## the old one.
-sub patchpb
-{
- my $pbpath = shift;
- open my $fh, '<', $pbpath or die "open: $!";
- my @lines = <$fh>;
- close $fh;
-
- my($i, $j);
- for($i = 0; $i < @lines; $i++){
- last if($lines[$i] =~ /^provides=/);
- }
- if($i == @lines){
- err("failed to find provides array in PKGBUILD");
- }
- for($j = $i; $j < @lines; $j++){
- last if($lines[$j] =~ /[)]/);
- }
- if($j == @lines){
- err("failed to find end of provides array");
- }
-
- splice @lines, $i, $j-$i+1,
- basharray('provides', grep { !/win32|next/ } @_);
-
- ## Avoid corrupting the existing PKGBUILD in case of a crash, etc.
- if(-f "$pbpath.$$"){
- err("pbpath.$$ temporary file already exists, please remove it.");
- }
- open $fh, '>', "$pbpath.$$" or die "open: $!";
- print $fh @lines;
- close $fh or die "close: $!";
- rename "$pbpath.$$", "$pbpath" or die "rename: $!";
-
- return;
-}
-
-## Program entrypoint.
-sub main
-{
- if(@_ < 2){
- print STDERR "usage: $0 [perl source path] [PKGBUILD path]\n";
- exit 2;
- }
- my($perlpath, $pbpath) = @_;
- if(!-f $pbpath){
- err("$pbpath is not a valid file.");
- }elsif(!-d $perlpath){
- err("$perlpath is not a valid directory.");
- }else{
- patchpb($pbpath, perlcorepkgs($perlpath));
- }
- exit 0;
-}
-
-main(@ARGV);
-
-# EOF
Copied: perl/repos/testing-x86_64/patchprov (from rev 286485, perl/trunk/patchprov)
===================================================================
--- testing-x86_64/patchprov (rev 0)
+++ testing-x86_64/patchprov 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,259 @@
+#!/usr/bin/perl
+##
+## Name:
+## patchprov
+##
+## Description:
+## Patch the provides list in the perl package PKGBUILD. Scan the appropriate
+## directories under the perl source tree for directories containing dists
+## similar to CPAN dists. Search the files in the distributions for VERSION
+## strings, which are perl expressions. Filters these version strings through
+## the perl interpreter, then transform the dist. names and versions into
+## package names and versions. Finally, we cut out the "provides" array from the
+## PKGBUILD and replace it with the newer version.
+##
+## Usage:
+## patchprov [path to perl source tree] [path to PKGBUILD]
+##
+## Caveats:
+## The path code is not platform independent and will only work in POSIX.
+##
+## Changelog:
+## 06/10/14 JD Rewrite from scratch for perl 5.20.0 and ArchLinux.
+##
+## Authors:
+## Justin "juster" Davis <jrcd83 at gmail.com>
+##
+
+use warnings;
+use strict;
+
+sub err
+{
+ print STDERR "patchprov: error: @_\n";
+ exit 1;
+}
+
+## Extract the dist. name from its containing directory.
+sub path_dist
+{
+ my($path) = @_;
+ $path =~ s{^.*/}{};
+ return $path;
+}
+
+## Create a path like $path/lib/Foo/Bar.pm for Foo::Bar.
+sub lib_modpath
+{
+ my($path, $modname) = @_;
+ $modname =~ s{::}{/}g;
+ return "$path/lib/$modname.pm";
+}
+
+## Create a path to a file in the containing directory, named after
+## the last segment of the module name, with suffix attached.
+sub dumb_modpath
+{
+ my($path, $modname, $suffix) = @_;
+ $modname =~ s{^.*::}{};
+ return "$path/$modname$suffix";
+}
+
+## Find a source file contained in the directory that we can scrape the
+## perl versions string from.
+my %distmods = (
+ 'PathTools' => 'Cwd',
+ 'Scalar-List-Utils' => 'List::Util',
+ 'IO-Compress' => 'IO::Compress::Gzip',
+);
+sub dist_srcpath
+{
+ my($path) = @_;
+ my $distname = path_dist($path);
+ my $modname;
+ if(exists $distmods{$distname}){
+ $modname = $distmods{$distname};
+ }else{
+ $modname = $distname;
+ $modname =~ s/-/::/g;
+ }
+ my @srcpaths = (
+ lib_modpath($path, $modname),
+ dumb_modpath($path, $modname, '.pm'),
+ dumb_modpath($path, $modname, '_pm.PL'),
+ "$path/VERSION", # for podlators
+ );
+ for my $src (@srcpaths){
+ return $src if(-f $src);
+ }
+ return undef;
+}
+
+## Scrape the version string for the module file or Makefile.PL.
+sub scrape_verln
+{
+ my($srcpath) = @_;
+ open my $fh, '<', $srcpath or die "open: $!";
+ while(my $ln = <$fh>){
+ if($ln =~ s/^.*VERSION *=>? *//){
+ close $fh;
+ return $ln;
+ }
+ }
+ close $fh;
+ err("failed to find VERSION in $srcpath");
+}
+
+## Scrape the version string from the module source file.
+sub scrape_modver
+{
+ my($srcpath) = @_;
+ return scrape_verln($srcpath);
+}
+
+## Scrape the version string from the Makefile.PL. (for libnet)
+sub scrape_mkplver
+{
+ my($srcpath) = @_;
+ my $verln = scrape_verln($srcpath);
+ $verln =~ s/,/;/;
+ return $verln;
+}
+
+## Scrape the version string from a file inside the dist dir.
+sub distpath_ver
+{
+ my($distpath) = @_;
+ my $srcpath = dist_srcpath($distpath);
+ my $mkplpath = "$distpath/Makefile.PL";
+ if(defined $srcpath){
+ return scrape_modver($srcpath);
+ }elsif(-f $mkplpath){
+ return scrape_mkplver($mkplpath);
+ }else{
+ err("failed to scrape version from $distpath");
+ }
+}
+
+## Search the base path for the dist dirs and extract their respective
+## version strings.
+sub find_distvers
+{
+ my($basepath) = @_;
+ opendir my $dh, $basepath or die "opendir: $!";
+ my @dirs = grep { -d $_ } map { "$basepath/$_" } grep { !/^[.]/ } readdir $dh;
+ closedir $dh;
+
+ my @distvers;
+ for my $dpath (@dirs){
+ push @distvers, [ path_dist($dpath), distpath_ver($dpath) ];
+ }
+ return @distvers;
+}
+
+## Maps an aref of dist name/perl version strings (perl expressions) to
+## a package name and version string suitable for a PKGBUILD.
+sub pkgspec
+{
+ my($dist, $ver) = @$_;
+ $dist =~ tr/A-Z/a-z/;
+ $ver = eval $ver;
+ return "perl-$dist=$ver";
+}
+
+## Searches the perl source dir provided for a list of packages which
+## correspond to the core distributions bundled within in.
+sub perlcorepkgs
+{
+ my($perlpath) = @_;
+ my @dirs = ("$perlpath/cpan", "$perlpath/dist");
+ my @provs;
+ for my $d (@dirs){
+ if(!-d $d){
+ err("$d is not a valid directory");
+ }
+ push @provs, map pkgspec, find_distvers($d);
+ }
+ return @provs;
+}
+
+## Formats the provided lines into a neatly formatted bash array. The first arg
+## is the name of the bash variable to assign it to.
+sub basharray
+{
+ my $vname = shift;
+
+ ## Sort entries and surround with quotes.
+ my @lns = sort map { qq{'$_'} } @_;
+ $lns[0] = "$vname=($lns[0]";
+
+ ## Indent lines for OCD geeks.
+ if(@lns > 1){
+ my $ind = length($vname) + 2;
+ splice @lns, 1, @lns-1,
+ map { (' ' x $ind) . $_ } @lns[1 .. $#lns];
+ }
+
+ $lns[$#lns] .= ')';
+ return map { "$_\n" } @lns;
+}
+
+## Patch the PKGBUILD at the given path with a new provides array, overwriting
+## the old one.
+sub patchpb
+{
+ my $pbpath = shift;
+ open my $fh, '<', $pbpath or die "open: $!";
+ my @lines = <$fh>;
+ close $fh;
+
+ my($i, $j);
+ for($i = 0; $i < @lines; $i++){
+ last if($lines[$i] =~ /^provides=/);
+ }
+ if($i == @lines){
+ err("failed to find provides array in PKGBUILD");
+ }
+ for($j = $i; $j < @lines; $j++){
+ last if($lines[$j] =~ /[)]/);
+ }
+ if($j == @lines){
+ err("failed to find end of provides array");
+ }
+
+ splice @lines, $i, $j-$i+1,
+ basharray('provides', grep { !/win32|next/ } @_);
+
+ ## Avoid corrupting the existing PKGBUILD in case of a crash, etc.
+ if(-f "$pbpath.$$"){
+ err("pbpath.$$ temporary file already exists, please remove it.");
+ }
+ open $fh, '>', "$pbpath.$$" or die "open: $!";
+ print $fh @lines;
+ close $fh or die "close: $!";
+ rename "$pbpath.$$", "$pbpath" or die "rename: $!";
+
+ return;
+}
+
+## Program entrypoint.
+sub main
+{
+ if(@_ < 2){
+ print STDERR "usage: $0 [perl source path] [PKGBUILD path]\n";
+ exit 2;
+ }
+ my($perlpath, $pbpath) = @_;
+ if(!-f $pbpath){
+ err("$pbpath is not a valid file.");
+ }elsif(!-d $perlpath){
+ err("$perlpath is not a valid directory.");
+ }else{
+ patchpb($pbpath, perlcorepkgs($perlpath));
+ }
+ exit 0;
+}
+
+main(@ARGV);
+
+# EOF
Deleted: testing-x86_64/perl-binary-module-dependency-1.template
===================================================================
--- testing-x86_64/perl-binary-module-dependency-1.template 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/perl-binary-module-dependency-1.template 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,5 +0,0 @@
-if [[ $(find "$pkgdir/usr/lib/perl5/" -name "*.so") ]]; then
- _perlver_min=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]);')
- _perlver_max=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]+1);')
- depends+=("perl>=$_perlver_min" "perl<$_perlver_max")
-fi
Copied: perl/repos/testing-x86_64/perl-binary-module-dependency-1.template (from rev 286485, perl/trunk/perl-binary-module-dependency-1.template)
===================================================================
--- testing-x86_64/perl-binary-module-dependency-1.template (rev 0)
+++ testing-x86_64/perl-binary-module-dependency-1.template 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,5 @@
+if [[ $(find "$pkgdir/usr/lib/perl5/" -name "*.so") ]]; then
+ _perlver_min=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]);')
+ _perlver_max=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]+1);')
+ depends+=("perl>=$_perlver_min" "perl<$_perlver_max")
+fi
Deleted: testing-x86_64/perlbin.csh
===================================================================
--- testing-x86_64/perlbin.csh 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/perlbin.csh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,15 +0,0 @@
-# Set path to perl scriptdirs if they exist
-# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
-# Added /usr/bin/*_perl dirs for scripts
-# Remove /usr/lib/perl5/*_perl/bin in next release
-
-[ -d /usr/bin/site_perl ] && setenv PATH ${PATH}:/usr/bin/site_perl
-[ -d /usr/lib/perl5/site_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/site_perl/bin
-
-[ -d /usr/bin/vendor_perl ] && setenv PATH ${PATH}:/usr/bin/vendor_perl
-[ -d /usr/lib/perl5/vendor_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/vendor_perl/bin
-
-[ -d /usr/bin/core_perl ] && setenv PATH ${PATH}:/usr/bin/core_perl
-
-# If you have modules in non-standard directories you can add them here.
-#export PERLLIB=dir1:dir2
Copied: perl/repos/testing-x86_64/perlbin.csh (from rev 286485, perl/trunk/perlbin.csh)
===================================================================
--- testing-x86_64/perlbin.csh (rev 0)
+++ testing-x86_64/perlbin.csh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,15 @@
+# Set path to perl scriptdirs if they exist
+# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
+# Added /usr/bin/*_perl dirs for scripts
+# Remove /usr/lib/perl5/*_perl/bin in next release
+
+[ -d /usr/bin/site_perl ] && setenv PATH ${PATH}:/usr/bin/site_perl
+[ -d /usr/lib/perl5/site_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/site_perl/bin
+
+[ -d /usr/bin/vendor_perl ] && setenv PATH ${PATH}:/usr/bin/vendor_perl
+[ -d /usr/lib/perl5/vendor_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/vendor_perl/bin
+
+[ -d /usr/bin/core_perl ] && setenv PATH ${PATH}:/usr/bin/core_perl
+
+# If you have modules in non-standard directories you can add them here.
+#export PERLLIB=dir1:dir2
Deleted: testing-x86_64/perlbin.fish
===================================================================
--- testing-x86_64/perlbin.fish 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/perlbin.fish 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,10 +0,0 @@
-# Set path to perl scriptdirs if they exist
-# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
-
-if status --is-login
- for perldir in /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl
- if test -d $perldir
- set PATH $PATH $perldir
- end
- end
-end
Copied: perl/repos/testing-x86_64/perlbin.fish (from rev 286485, perl/trunk/perlbin.fish)
===================================================================
--- testing-x86_64/perlbin.fish (rev 0)
+++ testing-x86_64/perlbin.fish 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,10 @@
+# Set path to perl scriptdirs if they exist
+# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
+
+if status --is-login
+ for perldir in /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl
+ if test -d $perldir
+ set PATH $PATH $perldir
+ end
+ end
+end
Deleted: testing-x86_64/perlbin.sh
===================================================================
--- testing-x86_64/perlbin.sh 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/perlbin.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,18 +0,0 @@
-# Set path to perl scriptdirs if they exist
-# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
-# Added /usr/bin/*_perl dirs for scripts
-# Remove /usr/lib/perl5/*_perl/bin in next release
-
-[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
-[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin
-
-[ -d /usr/bin/vendor_perl ] && PATH=$PATH:/usr/bin/vendor_perl
-[ -d /usr/lib/perl5/vendor_perl/bin ] && PATH=$PATH:/usr/lib/perl5/vendor_perl/bin
-
-[ -d /usr/bin/core_perl ] && PATH=$PATH:/usr/bin/core_perl
-
-export PATH
-
-# If you have modules in non-standard directories you can add them here.
-#export PERLLIB=dir1:dir2
-
Copied: perl/repos/testing-x86_64/perlbin.sh (from rev 286485, perl/trunk/perlbin.sh)
===================================================================
--- testing-x86_64/perlbin.sh (rev 0)
+++ testing-x86_64/perlbin.sh 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,18 @@
+# Set path to perl scriptdirs if they exist
+# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
+# Added /usr/bin/*_perl dirs for scripts
+# Remove /usr/lib/perl5/*_perl/bin in next release
+
+[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
+[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin
+
+[ -d /usr/bin/vendor_perl ] && PATH=$PATH:/usr/bin/vendor_perl
+[ -d /usr/lib/perl5/vendor_perl/bin ] && PATH=$PATH:/usr/lib/perl5/vendor_perl/bin
+
+[ -d /usr/bin/core_perl ] && PATH=$PATH:/usr/bin/core_perl
+
+export PATH
+
+# If you have modules in non-standard directories you can add them here.
+#export PERLLIB=dir1:dir2
+
Deleted: testing-x86_64/upgpkg
===================================================================
--- testing-x86_64/upgpkg 2017-01-15 13:57:54 UTC (rev 286485)
+++ testing-x86_64/upgpkg 2017-01-15 13:58:09 UTC (rev 286486)
@@ -1,4 +0,0 @@
-upgpkg_build() {
- makepkg -o
- ./patchprov src/perl-$pkgver PKGBUILD
-}
Copied: perl/repos/testing-x86_64/upgpkg (from rev 286485, perl/trunk/upgpkg)
===================================================================
--- testing-x86_64/upgpkg (rev 0)
+++ testing-x86_64/upgpkg 2017-01-15 13:58:09 UTC (rev 286486)
@@ -0,0 +1,4 @@
+upgpkg_build() {
+ makepkg -o
+ ./patchprov src/perl-$pkgver PKGBUILD
+}
More information about the arch-commits
mailing list