Date: Thursday, June 19, 2014 @ 21:22:10 Author: bluewind Revision: 215309
upgpkg: perl 5.20.0-5 fix 'Invalid version format' errors, FS#40718 Added: perl/trunk/perl-vutil-revert.patch Modified: perl/trunk/PKGBUILD -------------------------+ PKGBUILD | 8 +++++-- perl-vutil-revert.patch | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-06-19 18:40:07 UTC (rev 215308) +++ PKGBUILD 2014-06-19 19:22:10 UTC (rev 215309) @@ -7,7 +7,7 @@ pkgname=perl pkgver=5.20.0 -pkgrel=4 +pkgrel=5 pkgdesc="A highly capable, feature-rich programming language" arch=(i686 x86_64) license=('GPL' 'PerlArtistic') @@ -138,15 +138,19 @@ # Add your own provides here provides=(${provides[@]}) source=(http://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2 + perl-vutil-revert.patch perlbin.sh perlbin.csh) options=('makeflags' '!purge') md5sums=('20cbecd4e9e880ee7a50a136c8b1484e' + '2a1e2849722b2b5be33bd5c50a69e77a' '5ed2542fdb9a60682f215bd33701e61a' - '1f0cbbee783e8a6d32f01be5118e0d5e') + '1f0cbbee783e8a6d32f01be5118e0d5e') prepare() { cd ${srcdir}/${pkgname}-${pkgver} + patch -p1 -i "$srcdir/perl-vutil-revert.patch" + sed -i 's#version vutil.c .*#version vutil.c f1c7e4778fcf78c04141f562b80183b91cbbf6c9#' t/porting/customized.dat } build() { Added: perl-vutil-revert.patch =================================================================== --- perl-vutil-revert.patch (rev 0) +++ perl-vutil-revert.patch 2014-06-19 19:22:10 UTC (rev 215309) @@ -0,0 +1,50 @@ +--- perl-5.20.0/vutil.c 2014-05-26 09:34:21.000000000 -0400 ++++ perl-5.20.0-patched/vutil.c 2014-06-19 09:25:19.024409700 -0400 +@@ -585,11 +585,29 @@ + { + STRLEN len; + ++#ifdef USE_LOCALE_NUMERIC ++ char *loc = setlocale(LC_NUMERIC, NULL); ++ if (loc) { ++ /* setlocale returns NULL on error */ ++ if (loc[0] == 'C' && loc[1] == '\0') { ++ /* LC_NUMERIC is already C, nothing to do */ ++ loc = NULL; ++ } ++ else { ++ loc = savepv(loc); ++ if (!setlocale(LC_NUMERIC, "C")) { ++ /* error! do not restore locale later */ ++ Safefree(loc); ++ loc = NULL; ++ } ++ } ++ } ++#endif ++ + /* may get too much accuracy */ + char tbuf[64]; + SV *sv = SvNVX(ver) > 10e50 ? newSV(64) : 0; + char *buf; +- STORE_NUMERIC_LOCAL_SET_STANDARD(); + if (sv) { + Perl_sv_catpvf(aTHX_ sv, "%.9"NVff, SvNVX(ver)); + len = SvCUR(sv); +@@ -599,7 +617,15 @@ + len = my_snprintf(tbuf, sizeof(tbuf), "%.9"NVff, SvNVX(ver)); + buf = tbuf; + } +- RESTORE_NUMERIC_LOCAL(); ++ ++#ifdef USE_LOCALE_NUMERIC ++ if (loc) { ++ /* restore locale */ ++ setlocale(LC_NUMERIC, loc); ++ Safefree(loc); ++ } ++#endif ++ + while (buf[len-1] == '0' && len > 0) len--; + if ( buf[len-1] == '.' ) len--; /* eat the trailing decimal */ + version = savepvn(buf, len);