Hello community, here is the log from the commit of package perl for openSUSE:Factory checked in at 2015-03-05 17:04:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl (Old) and /work/SRC/openSUSE:Factory/.perl.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl" Changes: -------- --- /work/SRC/openSUSE:Factory/perl/perl.changes 2015-02-20 12:00:32.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.perl.new/perl.changes 2015-03-05 18:17:46.000000000 +0100 @@ -1,0 +2,8 @@ +Mon Feb 23 13:13:16 UTC 2015 - [email protected] + +- Add multiple patches for gcc5 support, tracked by RT#123784 + * perl-5.20.2-Fix-Errno.pm-generation-for-gcc-5.0.patch + * perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch + * perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch + +------------------------------------------------------------------- New: ---- perl-5.20.2-Fix-Errno.pm-generation-for-gcc-5.0.patch perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl.spec ++++++ --- /var/tmp/diff_new_pack.uWp8Zo/_old 2015-03-05 18:17:47.000000000 +0100 +++ /var/tmp/diff_new_pack.uWp8Zo/_new 2015-03-05 18:17:47.000000000 +0100 @@ -40,6 +40,9 @@ Patch9: perl-incfix.diff Patch11: perl-5.18.2-overflow.diff Patch12: DataDumper-no-infinite-recursion.diff +Patch13: perl-5.20.2-Fix-Errno.pm-generation-for-gcc-5.0.patch +Patch14: perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch +Patch15: perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: perl-base = %version #PreReq: %fillup_prereq @@ -175,6 +178,9 @@ %patch9 %patch11 %patch12 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 %build cp -a lib savelib ++++++ perl-5.20.2-Fix-Errno.pm-generation-for-gcc-5.0.patch ++++++ >From 93d77ec43f0de26bc9ead97d204a680a902d59e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]> Date: Wed, 11 Feb 2015 15:46:37 +0100 Subject: [PATCH] Fix Errno.pm generation for gcc-5.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gcc-5.0 -E interleaves now line numbers with expended macros, so that the generated errno.c will be preprocessed to EBFONT => [[ 59 ]] which is hard to parse in in line-based reader. So use -P option with gcc >= 5.0. Global -P usage would break makedepend, global -ftrack-macro-expansion=0 would break lib/h2ph.t. RT#123784 Signed-off-by: Petr Písař <[email protected]> --- ext/Errno/Errno_pm.PL | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL index 55ad01a..63b5916 100644 --- a/ext/Errno/Errno_pm.PL +++ b/ext/Errno/Errno_pm.PL @@ -225,20 +225,31 @@ sub write_errno_pm { { # BeOS (support now removed) did not enter this block # invoke CPP and read the output + my $inhibit_linemarkers = ''; + if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { + # GCC 5.0 interleaves expanded macros with line numbers breaking + # each line into multiple lines. RT#123784 + $inhibit_linemarkers = ' -P'; + } + if ($^O eq 'VMS') { - my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; + my $cpp = "$Config{cppstdin} $Config{cppflags}" . + $inhibit_linemarkers . " $Config{cppminus}"; $cpp =~ s/sys\$input//i; open(CPPO,"$cpp errno.c |") or die "Cannot exec $Config{cppstdin}"; } elsif ($IsMSWin32 || $^O eq 'NetWare') { - open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or - die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; + my $cpp = "$Config{cpprun} $Config{cppflags}" . + $inhibit_linemarkers; + open(CPPO,"$cpp errno.c |") or + die "Cannot run '$cpp errno.c'"; } elsif ($IsSymbian) { - my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; + my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . + $inhibit_linemarkers ." -"; open(CPPO,"$cpp < errno.c |") or die "Cannot exec $cpp"; } else { - my $cpp = default_cpp(); + my $cpp = default_cpp() . $inhibit_linemarkers; open(CPPO,"$cpp < errno.c |") or die "Cannot exec $cpp"; } -- 1.9.3 ++++++ perl-5.21.8-h2ph-correct-handling-of-hex-constants-for-the-pream.patch ++++++ >From 3bea78d24634e630b610f59957e7a019205a67b2 Mon Sep 17 00:00:00 2001 From: Tony Cook <[email protected]> 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ř <[email protected]> --- utils/h2ph.PL | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/utils/h2ph.PL b/utils/h2ph.PL index 9a8b14d..d082f22 100644 --- a/utils/h2ph.PL +++ b/utils/h2ph.PL @@ -769,7 +769,7 @@ sub inc_dirs sub build_preamble_if_necessary { # Increment $VERSION every time this function is modified: - my $VERSION = 3; + my $VERSION = 4; my $preamble = "$Dest_dir/_h2ph_pre.ph"; # Can we skip building the preamble file? @@ -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 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) { @@ -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}) { -- 2.1.0 ++++++ perl-5.21.8-lib-h2ph.t-to-test-generated-t-_h2ph_pre.ph-instead-.patch ++++++ >From ae54661bfad51c56e0d5c01bace60d44513a77e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]> 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ř <[email protected]> --- 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 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
