]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
perl: Fix Errno.pm generation for GCC >= 5
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 1 May 2017 15:04:37 +0000 (17:04 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 18 May 2017 11:08:48 +0000 (12:08 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
lfs/perl
src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch [new file with mode: 0644]

index c4ddc8e7604e5157e5de4126288daeb87e7e78cf..9ab8efae4e4bcb96ccd9266162beb8d4c24ddbee 100644 (file)
--- a/lfs/perl
+++ b/lfs/perl
@@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch
 ifneq "$(ROOT)" ""
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-libc-2.patch
 endif
diff --git a/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch b/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch
new file mode 100644 (file)
index 0000000..1f6e80a
--- /dev/null
@@ -0,0 +1,66 @@
+From 96bcd6ed97ff05f5b421005f23973279dbfcafbf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Wed, 11 Feb 2015 15:46:37 +0100
+Subject: [PATCH 1/2] Fix Errno.pm generation for gcc-5.0
+
+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
+---
+ 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 3dadfce..c6bfa06 100644
+--- a/ext/Errno/Errno_pm.PL
++++ b/ext/Errno/Errno_pm.PL
+@@ -215,20 +215,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";
+       }
+-- 
+2.3.0
+