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);

Reply via email to