diff --git a/perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch b/perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch index 00cda19..9037596 100644 --- a/perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch +++ b/perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch @@ -1,18 +1,25 @@ -From 6b8383472e2f75b4bbbfe8d80f036c8a3ee6b439 Mon Sep 17 00:00:00 2001 +From 3bea78d24634e630b610f59957e7a019205a67b2 Mon Sep 17 00:00:00 2001 From: Tony Cook -Date: Thu, 12 Feb 2015 14:10:36 +1100 +Date: Mon, 16 Feb 2015 15:57:00 +1100 Subject: [PATCH 2/2] h2ph: correct handling of hex constants for the preamble MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Previously they were treated as identifiers resulting in code +generated like C< &0xFFF >. + +We also try to prevent compile-time warnings from large hex integers, +the user isn't responsible for the generated code, so we delay those +warnings to run-time. + Signed-off-by: Petr Písař --- - utils/h2ph.PL | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + utils/h2ph.PL | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index 9a8b14d..c46d423 100644 +index 9a8b14d..d082f22 100644 --- a/utils/h2ph.PL +++ b/utils/h2ph.PL @@ -769,7 +769,7 @@ sub inc_dirs @@ -24,24 +31,37 @@ index 9a8b14d..c46d423 100644 my $preamble = "$Dest_dir/_h2ph_pre.ph"; # Can we skip building the preamble file? -@@ -788,6 +788,8 @@ sub build_preamble_if_necessary +@@ -788,6 +788,11 @@ sub build_preamble_if_necessary open PREAMBLE, ">$preamble" or die "Cannot open $preamble: $!"; print PREAMBLE "# This file was created by h2ph version $VERSION\n"; -+ # prevent large hex constants from warning ++ # Prevent non-portable hex constants from warning. ++ # ++ # We still produce an overflow warning if we can't represent ++ # a hex constant as an integer. + print PREAMBLE "no warnings qw(portable);\n"; foreach (sort keys %define) { if ($opt_D) { -@@ -810,7 +812,7 @@ DEFINE - # float: - print PREAMBLE - "unless (defined &$_) { sub $_() { $1 } }\n\n"; -- } elsif ($define{$_} =~ /^([+-]?\d+)U?L{0,2}$/i) { -+ } elsif ($define{$_} =~ /^([+-]?\d+|0x[\da-f]+)U?L{0,2}$/i) { +@@ -814,6 +819,18 @@ DEFINE # integer: print PREAMBLE "unless (defined &$_) { sub $_() { $1 } }\n\n"; ++ } elsif ($define{$_} =~ /^([+-]?0x[\da-f]+)U?L{0,2}$/i) { ++ # hex integer ++ # Special cased, since perl warns on hex integers ++ # that can't be represented in a UV. ++ # ++ # This way we get the warning at time of use, so the user ++ # only gets the warning if they happen to use this ++ # platform-specific definition. ++ my $code = $1; ++ $code = "hex('$code')" if length $code > 10; ++ print PREAMBLE ++ "unless (defined &$_) { sub $_() { $code } }\n\n"; + } elsif ($define{$_} =~ /^\w+$/) { + my $def = $define{$_}; + if ($isatype{$def}) { -- -1.9.3 +2.1.0 diff --git a/perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch b/perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch new file mode 100644 index 0000000..33c3406 --- /dev/null +++ b/perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch @@ -0,0 +1,39 @@ +From ae54661bfad51c56e0d5c01bace60d44513a77e2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 17 Feb 2015 13:11:00 +0100 +Subject: [PATCH] lib/h2ph.t to test generated t/_h2ph_pre.ph instead of the + system one +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The lib/h2ph.t test executes a t/lib/h2ph.pht which requires +'_h2ph_pre.ph'. This should find and exercise generated t/_h2ph_pre.ph +file. However, it found a loaded _h2ph_pre.ph from system because the +interpreter has the './' directory after the system paths in the @INC by +default. + +This patch adds '-I./' to the runperl() invocation to prefer the +_h2ph_pre.ph generated at build time. + +Signed-off-by: Petr Písař +--- + lib/h2ph.t | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/h2ph.t b/lib/h2ph.t +index 2b58f6a..64d9dc0 100644 +--- a/lib/h2ph.t ++++ b/lib/h2ph.t +@@ -48,7 +48,7 @@ $result = runperl( progfile => '_h2ph_pre.ph', + stderr => 1 ); + like( $result, qr/syntax OK$/, "preamble compiles"); + +-$result = runperl( switches => ["-w"], ++$result = runperl( switches => ['-I.', "-w"], + stderr => 1, + prog => <<'PROG' ); + $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); +-- +2.1.0 + diff --git a/perl.spec b/perl.spec index 689611a..05d155d 100644 --- a/perl.spec +++ b/perl.spec @@ -30,7 +30,7 @@ Name: perl Version: %{perl_version} # release number must be even higher, because dual-lived modules will be broken otherwise -Release: 318%{?dist} +Release: 319%{?dist} Epoch: %{perl_epoch} Summary: Practical Extraction and Report Language Group: Development/Languages @@ -101,12 +101,15 @@ Patch27: perl-5.21.6-Report-inaccesible-file-on-failed-require.patch # RT#123338, in upstream after 5.21.6 Patch28: perl-5.21.6-t-op-taint.t-Perform-SHA-256-algorithm-by-crypt-if-d.patch -# Fix Errno.pm generation for GCC 5.0, RT#123784 +# Fix Errno.pm generation for GCC 5.0, RT#123784, in upstream after 5.21.8 Patch29: perl-5.20.1-Fix-Errno.pm-generation-for-gcc-5.0.patch -# Handle hexadecimal constants by h2ph, RT#123784 +# Handle hexadecimal constants by h2ph, RT#123784, in upstream after 5.21.8 Patch30: perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch +# Do not use -_h2ph_pre.ph from system at tests, RT#123784 +Patch31: perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch + # Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048 Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch @@ -2021,6 +2024,7 @@ tarball from perl.org. %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 %patch200 -p1 %patch201 -p1 @@ -2044,6 +2048,7 @@ perl -x patchlevel.h \ 'Fedora Patch28: Use stronger algorithm needed for FIPS in t/op/taint.t (RT#123338)' \ 'Fedora Patch29: Fix Errno.pm generation for GCC 5.0 (RT#123784)' \ 'Fedora Patch30: Handle hexadecimal constants by h2ph (RT#123784)' \ + 'Fedora Patch31: Do not use -_h2ph_pre.ph from system at tests (RT#123784)' \ 'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \ 'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \ %{nil} @@ -3848,6 +3853,9 @@ sed \ # Old changelog entries are preserved in CVS. %changelog +* Mon Feb 16 2015 Petr Pisar - 4:5.20.1-319 +- Improve h2ph fix for GCC 5.0 + * Thu Feb 12 2015 Petr Pisar - 4:5.20.1-318 - Fix regressions with GCC 5.0