From 6e4f5623cdda685e0d4e576228b361276e9f669d Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Mon, 18 Aug 2014 14:52:02 +0200 Subject: [PATCH] Remove unused patches --- perl-5.12.1-fix_thread_leak.patch | 71 ---- perl-5.12.2-h2ph.patch | 82 ---- ...erl-transtate-question-mark-properly.patch | 13 - ...d2html-usage-output-and-its-POD-text.patch | 191 --------- ....0-Suppress-system-Term-ReadLine-Gnu.patch | 43 -- ...p-parser.t-get-the-correct-libraries.patch | 49 --- ...18.2-Pass-fwrapv-to-stricter-GCC-4.9.patch | 59 --- ...nize-h2ph-POD-text-with-usage-output.patch | 38 -- perl-5.19.2-Fix-coreamp.t-s-rand-test.patch | 31 -- perl-5.19.2-Fix-crash-with-glob_copy.patch | 96 ----- ...ng-regexes-with-multiple-code-blocks.patch | 68 --- ...case-where-exception-has-been-thrown.patch | 69 ---- ...d-using-2-handles-to-write-to-the-de.patch | 101 ----- ...-first-fail-to-taint-the-returned-st.patch | 62 --- perl-ExtUtils-ParseXS-2.2206.patch | 391 ------------------ 15 files changed, 1364 deletions(-) delete mode 100644 perl-5.12.1-fix_thread_leak.patch delete mode 100644 perl-5.12.2-h2ph.patch delete mode 100644 perl-5.14.2-find2perl-transtate-question-mark-properly.patch delete mode 100644 perl-5.16.3-Synchronize-pod2html-usage-output-and-its-POD-text.patch delete mode 100644 perl-5.18.0-Suppress-system-Term-ReadLine-Gnu.patch delete mode 100644 perl-5.18.2-Make-t-comp-parser.t-get-the-correct-libraries.patch delete mode 100644 perl-5.18.2-Pass-fwrapv-to-stricter-GCC-4.9.patch delete mode 100644 perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch delete mode 100644 perl-5.19.2-Fix-coreamp.t-s-rand-test.patch delete mode 100644 perl-5.19.2-Fix-crash-with-glob_copy.patch delete mode 100644 perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch delete mode 100644 perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch delete mode 100644 perl-5.19.7-avoid-using-2-handles-to-write-to-the-de.patch delete mode 100644 perl-87336-lc-uc-first-fail-to-taint-the-returned-st.patch delete mode 100644 perl-ExtUtils-ParseXS-2.2206.patch diff --git a/perl-5.12.1-fix_thread_leak.patch b/perl-5.12.1-fix_thread_leak.patch deleted file mode 100644 index 9e8645d..0000000 --- a/perl-5.12.1-fix_thread_leak.patch +++ /dev/null @@ -1,71 +0,0 @@ -commit 6ad76e39ed152a180816212ff7b4f798b1ab9bf0 -Author: Jirka Hruška -Date: Wed Sep 1 11:18:43 2010 +0100 - - PL_my_cxt_list leaks - - [perl #77352] - - PL_my_cxt_list was never freed - -diff --git a/perl.c b/perl.c -index dfb549d..0acd7ff 100644 ---- a/perl.c -+++ b/perl.c -@@ -1069,6 +1069,10 @@ perl_destruct(pTHXx) - (long)cxstack_ix + 1); - } - -+ /* the entries in this list are allocated via SV PVX's, so get freed -+ * in sv_clean_all */ -+ Safefree(PL_my_cxt_list); -+ - /* Now absolutely destruct everything, somehow or other, loops or no. */ - - /* the 2 is for PL_fdpid and PL_strtab */ - -commit 56d1e8d38e36ab7813af488eb8759b90bc82dd4a -Author: Jirka Hruška -Date: Wed Sep 1 10:59:35 2010 +0100 - - Memory leak cloning PVGVs - - [perl #77352] - - In S_sv_dup_common, Perl_rvpv_dup was called twice on a non-GP PVGV value, - causing the first duped value to be leaked - -diff --git a/AUTHORS b/AUTHORS -index 24ac6c3..7fc93a1 100644 ---- a/AUTHORS -+++ b/AUTHORS -@@ -487,6 +487,7 @@ Jim Meyering - Jim Miner - Jim Richardson - Jim Schneider -+Jirka Hruška - Joachim Huober - Jochen Wiedmann - Jody Belka -diff --git a/sv.c b/sv.c -index b6c03ed..11587d4 100644 ---- a/sv.c -+++ b/sv.c -@@ -11120,6 +11120,7 @@ Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) - else - LvTARG(dstr) = sv_dup_inc(LvTARG(dstr), param); - case SVt_PVGV: -+ /* non-GP case already handled above */ - if(isGV_with_GP(sstr)) { - GvNAME_HEK(dstr) = hek_dup(GvNAME_HEK(dstr), param); - /* Don't call sv_add_backref here as it's going to be -@@ -11143,8 +11144,7 @@ Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param) - } - GvGP(dstr) = gp_dup(GvGP(sstr), param); - (void)GpREFCNT_inc(GvGP(dstr)); -- } else -- Perl_rvpv_dup(aTHX_ dstr, sstr, param); -+ } - break; - case SVt_PVIO: - IoIFP(dstr) = fp_dup(IoIFP(dstr), IoTYPE(dstr), param); diff --git a/perl-5.12.2-h2ph.patch b/perl-5.12.2-h2ph.patch deleted file mode 100644 index 477004b..0000000 --- a/perl-5.12.2-h2ph.patch +++ /dev/null @@ -1,82 +0,0 @@ -diff -up perl-5.12.2/lib/h2ph.t.bug perl-5.12.2/lib/h2ph.t ---- perl-5.12.2/lib/h2ph.t.bug 2010-09-07 01:30:32.000000000 +0200 -+++ perl-5.12.2/lib/h2ph.t 2010-10-20 16:52:07.000000000 +0200 -@@ -41,9 +41,16 @@ $result = runperl( progfile => 'lib/h2ph - stderr => 1 ); - like( $result, qr/syntax OK$/, "output compiles"); - -+$result = runperl( progfile => '_h2ph_pre.ph', -+ switches => ['-c'], -+ stderr => 1 ); -+like( $result, qr/syntax OK$/, "preamble compiles"); -+ - $result = runperl( switches => ["-w"], -- prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);'); --is( $result, '', "output free of warnings" ); -+ stderr => 1, -+ prog => <<'PROG' ); -+$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); -+PROG - - # cleanup - END { -diff -up perl-5.12.2/utils/h2ph.PL.bug perl-5.12.2/utils/h2ph.PL ---- perl-5.12.2/utils/h2ph.PL.bug 2010-09-07 01:30:32.000000000 +0200 -+++ perl-5.12.2/utils/h2ph.PL 2010-10-20 16:49:33.000000000 +0200 -@@ -401,7 +401,11 @@ if ($opt_e && (scalar(keys %bad_file) > - exit $Exit; - - sub expr { -- $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out. -+ if (/\b__asm__\b/) { # freak out -+ $new = '"(assembly code)"'; -+ return -+ } -+ - my $joined_args; - if(keys(%curargs)) { - $joined_args = join('|', keys(%curargs)); -@@ -770,7 +774,7 @@ sub inc_dirs - sub build_preamble_if_necessary - { - # Increment $VERSION every time this function is modified: -- my $VERSION = 2; -+ my $VERSION = 3; - my $preamble = "$Dest_dir/_h2ph_pre.ph"; - - # Can we skip building the preamble file? -@@ -798,7 +802,16 @@ sub build_preamble_if_necessary - # parenthesized value: d=(v) - $define{$_} = $1; - } -- if ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) { -+ if (/^(\w+)\((\w)\)$/) { -+ my($macro, $arg) = ($1, $2); -+ my $def = $define{$_}; -+ $def =~ s/$arg/\$\{$arg\}/g; -+ print PREAMBLE < -Date: Sun, 9 Jun 2013 14:14:24 -0400 -Subject: [PATCH] Synchronize pod2html usage output and its POD text - - -Petr Pisar: Port to perl-5.16.3. - -diff --git a/ext/Pod-Html/bin/pod2html b/ext/Pod-Html/bin/pod2html -index c422ebf..b022859 100644 ---- a/ext/Pod-Html/bin/pod2html -+++ b/ext/Pod-Html/bin/pod2html -@@ -6,10 +6,14 @@ pod2html - convert .pod files to .html files - - =head1 SYNOPSIS - -- pod2html --help --htmlroot= --infile= --outfile= -+ pod2html --help --htmldir= --htmlroot= -+ --infile= --outfile= - --podpath=:...: --podroot= -- --recurse --norecurse --verbose -- --index --noindex --title= -+ --cachedir= --flush --recurse --norecurse -+ --quiet --noquiet --verbose --noverbose -+ --index --noindex --backlink --nobacklink -+ --header --noheader --poderrors --nopoderrors -+ --css= --title= - - =head1 DESCRIPTION - -@@ -27,12 +31,27 @@ pod2html takes the following arguments: - - Displays the usage message. - -+=item htmldir -+ -+ --htmldir=name -+ -+Sets the directory to which all cross references in the resulting HTML file -+will be relative. Not passing this causes all links to be absolute since this -+is the value that tells Pod::Html the root of the documentation tree. -+ -+Do not use this and --htmlroot in the same call to pod2html; they are mutually -+exclusive. -+ - =item htmlroot - -- --htmlroot=name -+ --htmlroot=URL -+ -+Sets the base URL for the HTML files. When cross-references are made, the -+HTML root is prepended to the URL. -+ -+Do not use this if relative links are desired: use --htmldir instead. - --Sets the base URL for the HTML files. When cross-references are made, --the HTML root is prepended to the URL. -+Do not pass both this and --htmldir to pod2html; they are mutually exclusive. - - =item infile - -@@ -61,6 +80,59 @@ Specify the base directory for finding library pods. - Specify which subdirectories of the podroot contain pod files whose - HTML converted forms can be linked-to in cross-references. - -+=item cachedir -+ -+ --cachedir=name -+ -+Specify which directory is used for storing cache. Default directory is the -+current working directory. -+ -+=item flush -+ -+ --flush -+ -+Flush the cache. -+ -+=item backlink -+ -+ --backlink -+ -+Turn =head1 directives into links pointing to the top of the HTML file. -+ -+=item nobacklink -+ -+ --nobacklink -+ -+Do not turn =head1 directives into links pointing to the top of the HTML file -+(default behaviour). -+ -+=item header -+ -+ --header -+ -+Create header and footer blocks containing the text of the "NAME" section. -+ -+=item noheader -+ -+ --noheader -+ -+Do not create header and footer blocks containing the text of the "NAME" -+section (default behaviour). -+ -+=item poderrors -+ -+ --poderrors -+ -+Include a "POD ERRORS" section in the outfile if there were any POD errors in -+the infile (default behaviour). -+ -+=item nopoderrors -+ -+ --nopoderrors -+ -+Do not include a "POD ERRORS" section in the outfile if there were any POD -+errors in the infile. -+ - =item index - - --index -@@ -86,18 +158,44 @@ Recurse into subdirectories specified in podpath (default behaviour). - - Do not recurse into subdirectories specified in podpath. - -+=item css -+ -+ --css=URL -+ -+Specify the URL of cascading style sheet to link from resulting HTML file. -+Default is none style sheet. -+ - =item title - - --title=title - - Specify the title of the resulting HTML file. - -+=item quiet -+ -+ --quiet -+ -+Don't display mostly harmless warning messages. -+ -+=item noquiet -+ -+ --noquiet -+ -+Display mostly harmless warning messages (default behaviour). But this is not -+the same as "verbose" mode. -+ - =item verbose - - --verbose - - Display progress messages. - -+=item noverbose -+ -+ --noverbose -+ -+Do not display progress messages (default behaviour). -+ - =back - - =head1 AUTHOR -diff --git a/ext/Pod-Html/lib/Pod/Html.pm b/ext/Pod-Html/lib/Pod/Html.pm -index 72b37c2..3feb812 100644 ---- a/ext/Pod-Html/lib/Pod/Html.pm -+++ b/ext/Pod-Html/lib/Pod/Html.pm -@@ -447,9 +447,14 @@ sub usage { - my $podfile = shift; - warn "$0: $podfile: @_\n" if @_; - die < --infile= --outfile= -- --podpath=:...: --podroot= --cachedir= -- --recurse --verbose --index --norecurse --noindex -+Usage: $0 --help --htmldir= --htmlroot= -+ --infile= --outfile= -+ --podpath=:...: --podroot= -+ --cachedir= --flush --recurse --norecurse -+ --quiet --noquiet --verbose --noverbose -+ --index --noindex --backlink --nobacklink -+ --header --noheader --poderrors --nopoderrors -+ --css= --title= - - --[no]backlink - turn =head1 directives into links pointing to the top of - the page (off by default). --- -1.8.1.4 - diff --git a/perl-5.18.0-Suppress-system-Term-ReadLine-Gnu.patch b/perl-5.18.0-Suppress-system-Term-ReadLine-Gnu.patch deleted file mode 100644 index e55c795..0000000 --- a/perl-5.18.0-Suppress-system-Term-ReadLine-Gnu.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 7fb8bf6b9bd4b199baaa0209061af0ccc11d30d9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Mon, 8 Jul 2013 16:10:38 +0200 -Subject: [PATCH] Suppress system Term::ReadLine::Gnu -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -perl5db.t will die in Term::ReadLine if Term::ReadLine::Gnu is installed -in the system. Let's favour core implementation. - -Best solution would be to prune @INC to prevent from loading already -installed modules like this: - -BEGIN { - use Config; - @INC = grep { ! /^\Q$Config{installprefix}\E(\/|\z)/ } @INC; -} - -However that is not possible (now) due to various execs (even without -proper -I) in the harness chain. perl should implement -nostdinc -option. - -Signed-off-by: Petr Písař ---- - lib/perl5db.t | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/perl5db.t b/lib/perl5db.t -index 0e507b2..67cdd24 100644 ---- a/lib/perl5db.t -+++ b/lib/perl5db.t -@@ -26,6 +26,7 @@ BEGIN { - print "1..0 # Skip: \$ENV{PERL5DB} is already set to '$ENV{PERL5DB}'\n"; - exit 0; - } -+ $ENV{PERL_RL} = 'Perl'; # Suppress system Term::ReadLine::Gnu - } - - plan(116); --- -1.8.1.4 - diff --git a/perl-5.18.2-Make-t-comp-parser.t-get-the-correct-libraries.patch b/perl-5.18.2-Make-t-comp-parser.t-get-the-correct-libraries.patch deleted file mode 100644 index df686f6..0000000 --- a/perl-5.18.2-Make-t-comp-parser.t-get-the-correct-libraries.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 56b960b25894b4b1e1f2ce0ff443c187860bdf76 Mon Sep 17 00:00:00 2001 -From: "Craig A. Berry" -Date: Sun, 30 Jun 2013 21:09:21 -0500 -Subject: [PATCH] Make t/comp/parser.t get the correct libraries. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In principle it shouldn't need libraries, but an eval of a utf8 -constant now triggers automatic loading of utf8.pm, and it was -looking for that in the usual @INC locations set at configuration -time. Which just might match an installed perl rather than the -perl being tested. So make sure we get the correct libraries. - -Petr Pisar: Ported to 5.18.2 - -Signed-off-by: Petr Písař ---- - t/comp/parser.t | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/t/comp/parser.t b/t/comp/parser.t -index 4f2da90..f64d5ce 100644 ---- a/t/comp/parser.t -+++ b/t/comp/parser.t -@@ -3,6 +3,11 @@ - # Checks if the parser behaves correctly in edge cases - # (including weird syntax errors) - -+BEGIN { -+ @INC = qw(. ../lib); -+ chdir 't'; -+} -+ - print "1..155\n"; - - sub failed { -@@ -462,7 +467,7 @@ like $@, "^Identifier too long at ", 'ident buffer overflow'; - - # bug #74022: Loop on characters in \p{OtherIDContinue} - # This test hangs if it fails. --eval chr 0x387; -+eval chr 0x387; # forces loading of utf8.pm - is(1,1, '[perl #74022] Parser looping on OtherIDContinue chars'); - - # More awkward tests for #line. Keep these at the end, as they will screw --- -1.9.0 - diff --git a/perl-5.18.2-Pass-fwrapv-to-stricter-GCC-4.9.patch b/perl-5.18.2-Pass-fwrapv-to-stricter-GCC-4.9.patch deleted file mode 100644 index 110ad21..0000000 --- a/perl-5.18.2-Pass-fwrapv-to-stricter-GCC-4.9.patch +++ /dev/null @@ -1,59 +0,0 @@ -From a8d0bb2102bc09bfdc7e661fb159d9257474f168 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Thu, 10 Apr 2014 16:16:31 +0200 -Subject: [PATCH] Pass -fwrapv to stricter GCC 4.9 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This is port to 5.18.2 of the two upstream patches: - -commit 869747506fd0081f6c7eed149ec6f7adbcc4d5b1 -Author: H.Merijn Brand -Date: Wed Apr 9 11:16:55 2014 +0200 - - gcc 4.9 by default does some optimizations that break perl (#121505) - - Patch by Tony Cook - -commit 00051dd553979bd2a1dee100c324b59ee76a49e7 -Author: H.Merijn Brand -Date: Wed Apr 9 12:31:23 2014 +0200 - - -fwrapv is broken prior to gcc-4.3 (googled and patched by Zefram) - -Signed-off-by: Petr Písař ---- - Configure | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/Configure b/Configure -index 37b49c8..47e7b8f 100755 ---- a/Configure -+++ b/Configure -@@ -4520,6 +4520,22 @@ case "$gccversion" in - $rm -f try try.* - esac - -+# gcc 4.9 by default does some optimizations that break perl. -+# see ticket 121505. -+# -+# The -fwrapv disables those optimizations (and probably others,) so -+# for gcc 4.9 (and later, since the optimizations probably won't go -+# away), add -fwrapv unless the user requests -fno-wrapv, which -+# disables -fwrapv, or if the user requests -fsanitize=undefined, -+# which turns the overflows -fwrapv ignores into runtime errors. -+case "$gccversion" in -+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*) -+ case "$ccflags" in -+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;; -+ *) ccflags="$ccflags -fwrapv" ;; -+ esac -+esac -+ - : What should the include directory be ? - echo " " - $echo $n "Hmm... $c" --- -1.9.0 - diff --git a/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch b/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch deleted file mode 100644 index 25d32df..0000000 --- a/perl-5.19.0-Synchronize-h2ph-POD-text-with-usage-output.patch +++ /dev/null @@ -1,38 +0,0 @@ -From fe89bf70817551c30bcacaef25578ffeb7d71eb1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Sun, 9 Jun 2013 14:01:49 -0400 -Subject: [PATCH] Synchronize h2ph POD text with usage output - ---- - utils/h2ph.PL | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/utils/h2ph.PL b/utils/h2ph.PL -index a2d737b..9a8b14d 100644 ---- a/utils/h2ph.PL -+++ b/utils/h2ph.PL -@@ -866,7 +866,8 @@ h2ph - convert .h C header files to .ph Perl header files - - =head1 SYNOPSIS - --B -+B - - =head1 DESCRIPTION - -@@ -932,6 +933,11 @@ you will see the slightly more helpful - - However, the B<.ph> files almost double in size when built using B<-h>. - -+=item -e -+ -+If an error is encountered during conversion, output file will be removed and -+a warning emitted instead of terminating the conversion immediately. -+ - =item -D - - Include the code from the B<.h> file as a comment in the B<.ph> file. --- -1.8.1.4 - diff --git a/perl-5.19.2-Fix-coreamp.t-s-rand-test.patch b/perl-5.19.2-Fix-coreamp.t-s-rand-test.patch deleted file mode 100644 index 5b4e027..0000000 --- a/perl-5.19.2-Fix-coreamp.t-s-rand-test.patch +++ /dev/null @@ -1,31 +0,0 @@ -From fba93b250c0d566f7ef26442312286310b2b9b46 Mon Sep 17 00:00:00 2001 -From: Father Chrysostomos -Date: Sun, 2 Jun 2013 00:36:33 -0700 -Subject: [PATCH] =?UTF-8?q?[perl=20#118237]=20Fix=20coreamp.t=E2=80=99s=20?= - =?UTF-8?q?rand=20test?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -when rand returns something really small that does not -begin with 0, such as 2.90736361456823e-05. ---- - t/op/coreamp.t | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/t/op/coreamp.t b/t/op/coreamp.t -index c1f7181..fe7c741 100644 ---- a/t/op/coreamp.t -+++ b/t/op/coreamp.t -@@ -637,7 +637,7 @@ test_proto 'quotemeta', '$', '\$'; - - test_proto 'rand'; - $tests += 3; --like &CORE::rand, qr/^0[.\d+-e]*\z/, '&rand'; -+like &CORE::rand, qr/^[.\d+-e]*\z/, '&rand'; - unlike join(" ", &CORE::rand), qr/ /, '&rand in list context'; - &cmp_ok(&CORE::rand(78), qw '< 78', '&rand with 1 arg'); - --- -1.8.3.1 - diff --git a/perl-5.19.2-Fix-crash-with-glob_copy.patch b/perl-5.19.2-Fix-crash-with-glob_copy.patch deleted file mode 100644 index 6623f74..0000000 --- a/perl-5.19.2-Fix-crash-with-glob_copy.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 2f222bbdd2d6da605708c3ab620ac25c62481179 Mon Sep 17 00:00:00 2001 -From: Father Chrysostomos -Date: Sun, 28 Jul 2013 12:35:47 -0700 -Subject: [PATCH] [perl #119051] Fix crash with \&$glob_copy - -$ref = *Foo::nosub; -\&$ref; - -The assignment creates a glob copy (coercible glob; one that down- -grades back to a simple scalar when assigned to). - -\&$ref autovivifies a stub in that glob. The CvGV pointer ends up -pointing to $ref, rather than *Foo::nosub. $ref can easily cease -being a glob. So crashes happen. - -Stub autovivification used to stringify the glob, look it up again by -name, and then vivify the stub in the glob. - -In commit 186a5ba82d584 I removed what seemed like a waste of CPU -cycles, but apparently it served some purpose. The lookup caused CvGV -to point to *Foo::nosub, rather than $x. - -This commit restores the stringfy-and-lookup if the glob is coercible -(SvFAKE). It goes a little further and turns off the SvFAKE flag if -the glob just looked up is also FAKE. - -It turns out this bug is old, and has been triggerable via glob copies -in stash elements for a long time. 186a5ba82d584 made it easier to -trigger the bug (so it is a regression from 5.16). ---- - op.c | 8 +++++++- - t/op/gv.t | 16 +++++++++++++++- - 2 files changed, 22 insertions(+), 2 deletions(-) - -diff --git a/op.c b/op.c -index e308d08..7576509 100644 ---- a/op.c -+++ b/op.c -@@ -7918,13 +7918,19 @@ CV * - Perl_newSTUB(pTHX_ GV *gv, bool fake) - { - CV *cv = MUTABLE_CV(newSV_type(SVt_PVCV)); -+ GV *cvgv; - PERL_ARGS_ASSERT_NEWSTUB; - assert(!GvCVu(gv)); - GvCV_set(gv, cv); - GvCVGEN(gv) = 0; - if (!fake && HvENAME_HEK(GvSTASH(gv))) - gv_method_changed(gv); -- CvGV_set(cv, gv); -+ if (SvFAKE(gv)) { -+ cvgv = gv_fetchsv((SV *)gv, GV_ADDMULTI, SVt_PVCV); -+ SvFAKE_off(cvgv); -+ } -+ else cvgv = gv; -+ CvGV_set(cv, cvgv); - CvFILE_set_from_cop(cv, PL_curcop); - CvSTASH_set(cv, PL_curstash); - GvMULTI_on(gv); -diff --git a/t/op/gv.t b/t/op/gv.t -index deb92f3..806a68a 100644 ---- a/t/op/gv.t -+++ b/t/op/gv.t -@@ -12,7 +12,7 @@ BEGIN { - - use warnings; - --plan( tests => 245 ); -+plan( tests => 247 ); - - # type coercion on assignment - $foo = 'foo'; -@@ -959,6 +959,20 @@ package lrcg { - $::{aoeuaoeuaoeaoeu} = __PACKAGE__; # cow - () = *{"aoeuaoeuaoeaoeu"}; - -+$x = *_119051; -+$y = \&$x; -+undef $x; -+eval { &$y }; -+pass "No crash due to CvGV(vivified stub) pointing to flattened glob copy"; -+# Not really supported, but this should not crash either: -+$x = *_119051again; -+delete $::{_119051again}; -+$::{_119051again} = $x; # now we have a fake glob under the right name -+$y = \&$x; # so when this tries to look up the right GV for -+undef $::{_119051again}; # CvGV, it still gets a fake one -+eval { $y->() }; -+pass "No crash due to CvGV pointing to glob copy in the stash"; -+ - __END__ - Perl - Rules --- -1.8.3.1 - diff --git a/perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch b/perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch deleted file mode 100644 index 875abfe..0000000 --- a/perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch +++ /dev/null @@ -1,68 +0,0 @@ -From f5df269c5cef57294662d0b1f80a468b91f13643 Mon Sep 17 00:00:00 2001 -From: Father Chrysostomos -Date: Fri, 5 Jul 2013 23:59:46 -0700 -Subject: [PATCH] [perl #117917] /(?{ m|...| }) (?{ $1 })/ -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -A regular expression invoked inside a regular expression code block -can cause other code blocks in the same outer regular expression to -see the wrong values in $1. - -PL_curpm holds a pointer to the match operator from which $1, $2, etc. -get their values. - -Normally PL_curpm is set at the end of a match. - -When code blocks are embedded inside a regular expression, PL_curpm -is set during a match to point to PL_reg_curpm, which is a dummy op -pointing to the current regular expression. - -S_setup_eval_state is called at the beginning of regexp execution. -It is responsible for setting up PL_regcurpm and making PL_curpm -point to it. - -Code blocks are executed using the multicall API. PUSH_MULTICALL -records the value of PL_curpm and POP_MULTICALL makes sure that the -previous value of PL_curpm is restored. - -Executing a code block can cause PL_curpm to point to something else. -Since we don’t necessarily do POP_MULTICALL between code block calls -within a single regular expression (sometimes we do, depending on -backtracking), PL_curpm may not have been restored when a second code -block fires. So we have to restore it to point to PL_reg_curpm manu- -ally after calling a code block. ---- - regexec.c | 1 + - t/re/re_tests | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/regexec.c b/regexec.c -index 12548d5..6367e2e 100644 ---- a/regexec.c -+++ b/regexec.c -@@ -4991,6 +4991,7 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) - PL_curcop = ocurcop; - PL_regeol = saved_regeol; - S_regcp_restore(aTHX_ rex, runops_cp, &maxopenparen); -+ PL_curpm = PL_reg_curpm; - - if (logical != 2) - break; -diff --git a/t/re/re_tests b/t/re/re_tests -index 9a24360..3921bb7 100644 ---- a/t/re/re_tests -+++ b/t/re/re_tests -@@ -613,6 +613,8 @@ $(?<=^(a)) a y $1 a - ^[^bcd]*(c+) aexycd y $1 c - (?{$a=2})a*aa(?{local$a=$a+1})k*c(?{$b=$a}) yaaxxaaaacd y $b 3 - (?{$a=2})(a(?{local$a=$a+1}))*aak*c(?{$b=$a}) yaaxxaaaacd y $b 4 -+# [perl #117917] -+^(a(?{ "x" =~ m{x}})b)(??{ $1 }) abab y $& abab - (>a+)ab aaab n - - - (?>a+)b aaab y - - - ([[:]+) a:[b]: y $1 :[ --- -1.8.3.1 - diff --git a/perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch b/perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch deleted file mode 100644 index 18ae704..0000000 --- a/perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch +++ /dev/null @@ -1,69 +0,0 @@ -From cccbbce940ea952c4c236049e98d21a011475cb1 Mon Sep 17 00:00:00 2001 -From: Philip Boulain -Date: Mon, 3 Sep 2012 15:16:26 +0100 -Subject: [PATCH] Reap child in case where exception has been thrown - -If open3 throws due to an issue such as an exec failure, the caller -cannot know the child PID to wait for. Therefore it is our -responsibility to reap it. - -Also update POD, since on some platforms exec failures now ARE raised as -exceptions (since perlbug #72016). ---- - ext/IPC-Open3/lib/IPC/Open3.pm | 4 +++- - ext/IPC-Open3/t/IPC-Open3.t | 7 ++++++- - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/ext/IPC-Open3/lib/IPC/Open3.pm b/ext/IPC-Open3/lib/IPC/Open3.pm -index 989c2f6..f50146f 100644 ---- a/ext/IPC-Open3/lib/IPC/Open3.pm -+++ b/ext/IPC-Open3/lib/IPC/Open3.pm -@@ -57,7 +57,8 @@ as file descriptors. - open3() returns the process ID of the child process. It doesn't return on - failure: it just raises an exception matching C. However, - C failures in the child (such as no such file or permission denied), --are just reported to CHLD_ERR, as it is not possible to trap them. -+are just reported to CHLD_ERR under Windows and OS/2, as it is not possible -+to trap them. - - If the child process dies for any reason, the next write to CHLD_IN is - likely to generate a SIGPIPE in the parent, which is fatal by default. -@@ -297,6 +298,7 @@ sub _open3 { - if ($bytes_read) { - (my $bang, $to_read) = unpack('II', $buf); - read($stat_r, my $err = '', $to_read); -+ waitpid $kidpid, 0; # Reap child which should have exited - if ($err) { - utf8::decode $err if $] >= 5.008; - } else { -diff --git a/ext/IPC-Open3/t/IPC-Open3.t b/ext/IPC-Open3/t/IPC-Open3.t -index 7b85b82..6ab519d 100644 ---- a/ext/IPC-Open3/t/IPC-Open3.t -+++ b/ext/IPC-Open3/t/IPC-Open3.t -@@ -14,10 +14,11 @@ BEGIN { - } - - use strict; --use Test::More tests => 37; -+use Test::More tests => 38; - - use IO::Handle; - use IPC::Open3; -+use POSIX ":sys_wait_h"; - - my $perl = $^X; - -@@ -154,6 +155,10 @@ $TB->current_test($test); - isnt($@, '', - 'open3 of a non existent program fails with an exception in the parent') - or do {waitpid $pid, 0}; -+ SKIP: { -+ skip 'open3 returned, our responsibility to reap', 1 unless $@; -+ is(waitpid(-1, WNOHANG), -1, 'failed exec child is reaped'); -+ } - } - - $pid = eval { open3 'WRITE', '', 'ERROR', '/non/existent/program'; }; --- -1.8.3.1 - diff --git a/perl-5.19.7-avoid-using-2-handles-to-write-to-the-de.patch b/perl-5.19.7-avoid-using-2-handles-to-write-to-the-de.patch deleted file mode 100644 index 5726567..0000000 --- a/perl-5.19.7-avoid-using-2-handles-to-write-to-the-de.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 7b58d7c4e3ad14ac3c60f1ea5d1032205a086e71 Mon Sep 17 00:00:00 2001 -From: Tony Cook -Date: Tue, 14 Jan 2014 09:24:40 +1100 -Subject: [PATCH] [perl #118817] avoid using 2 handles to write to the debug - output -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Previously the tests were run with the following config: - - NonStop=0 TTY=db.out LineInfo=db.out - -This meant that the debugger would write the prologue, command prompts -and their results and the epilogue to one handle, and any line trace -information to the second handle. Since those handles didn't share -file a file position, the line trace info would overwrite the -prologue, and the epilogue would overwrite part of the line trace -info. - -When TTY=vt100 on Redhat systems, this made the epilogue just long -enough to overwrite the line trace data that a test matched against, -causing the test to fail. - -To fix this, I avoided setting LineInfo: - - NonStop=0 TTY=db.out - -and since LineInfo defaults to using the TTY handle, both type of -content are written to db.out *without* overwriting each other. - -Unfortunately this broke some other tests, since now the command -prompts which were overwritten by line trace information are mixed in -with the line traces - I've modified the tests that failed to account -for the included command lines. - -Signed-off-by: Petr Písař ---- - lib/perl5db.t | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -diff --git a/lib/perl5db.t b/lib/perl5db.t -index 17fa744..95d2030 100644 ---- a/lib/perl5db.t -+++ b/lib/perl5db.t -@@ -72,7 +72,7 @@ sub _out_contents - rc( - <<'EOF', - --&parse_options("NonStop=0 ReadLine=0 TTY=db.out LineInfo=db.out"); -+&parse_options("NonStop=0 ReadLine=0 TTY=db.out"); - - sub afterinit { - push(@DB::typeahead, -@@ -267,7 +267,7 @@ sub _quote - sub _run { - my $self = shift; - -- my $rc = qq{&parse_options("NonStop=0 TTY=db.out LineInfo=db.out");\n}; -+ my $rc = qq{&parse_options("NonStop=0 TTY=db.out");\n}; - - $rc .= join('', - map { "$_\n"} -@@ -1235,6 +1235,7 @@ DebugWrap->new({ - $wrapper->contents_like( - qr/ - $line_out -+ auto\(-\d+\)\s+DB<\d+>\s+\.\n - $line_out - /msx, - 'Test the "." command', -@@ -2380,6 +2381,10 @@ DebugWrap->new({ - $wrapper->contents_like(qr/ - ^main::\([^:]+:28\):\n - 28:\s+myfunc\(\);\n -+ auto\(-\d+\)\s+DB<1>\s+t\n -+ Trace\ =\ on\n -+ auto\(-\d+\)\s+DB<1>\s+b\ 18\n -+ auto\(-\d+\)\s+DB<2>\s+c\n - main::myfunc\([^:]+:25\):\n - 25:\s+bar\(\);\n - /msx, -@@ -2407,10 +2412,14 @@ DebugWrap->new({ - $wrapper->contents_like(qr/ - ^main::\([^:]+:28\):\n - 28:\s+myfunc\(\);\n -+ auto\(-\d+\)\s+DB<1>\s+o\ AutoTrace\n -+ \s+AutoTrace\s+=\s+'1'\n -+ auto\(-\d+\)\s+DB<2>\s+b\ 18\n -+ auto\(-\d+\)\s+DB<3>\s+c\n - main::myfunc\([^:]+:25\):\n - 25:\s+bar\(\);\n - /msx, -- 'Test the t command with function calls.', -+ 'Test the o AutoTrace command with function calls.', - ); - } - --- -1.8.4.2 - diff --git a/perl-87336-lc-uc-first-fail-to-taint-the-returned-st.patch b/perl-87336-lc-uc-first-fail-to-taint-the-returned-st.patch deleted file mode 100644 index fde16fc..0000000 --- a/perl-87336-lc-uc-first-fail-to-taint-the-returned-st.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff -up perl-5.12.3/pp.c.87 perl-5.12.3/pp.c ---- perl-5.12.3/pp.c.87 2011-01-09 21:20:58.000000000 +0100 -+++ perl-5.12.3/pp.c 2011-04-01 15:06:23.000000000 +0200 -@@ -3949,6 +3949,8 @@ PP(pp_ucfirst) - SvCUR_set(dest, need - 1); - } - } -+ if (dest != source && SvTAINTED(source)) -+ SvTAINT(dest); - SvSETMAGIC(dest); - RETURN; - } -@@ -4008,7 +4010,8 @@ PP(pp_uc) - SvUPGRADE(dest, SVt_PV); - d = (U8*)SvGROW(dest, min); - (void)SvPOK_only(dest); -- -+ if (dest != source && SvTAINTED(source)) -+ SvTAINT(dest); - SETs(dest); - } - -@@ -4433,6 +4436,8 @@ PP(pp_lc) - SvCUR_set(dest, d - (U8*)SvPVX_const(dest)); - } - } -+ if (dest != source && SvTAINTED(source)) -+ SvTAINT(dest); - SvSETMAGIC(dest); - RETURN; - } -diff -up perl-5.12.3/t/op/taint.t.87 perl-5.12.3/t/op/taint.t ---- perl-5.12.3/t/op/taint.t.87 2011-01-09 21:20:58.000000000 +0100 -+++ perl-5.12.3/t/op/taint.t 2011-04-01 15:07:43.000000000 +0200 -@@ -17,7 +17,7 @@ use Config; - use File::Spec::Functions; - - BEGIN { require './test.pl'; } --plan tests => 302; -+plan tests => 306; - - $| = 1; - -@@ -1318,6 +1318,18 @@ foreach my $ord (78, 163, 256) { - unlike($err, qr/^\d+$/, 'tainted $!'); - } - -+{ -+ # [perl #87336] lc/uc(first) failing to taint the returned string -+ my $source = "foo$TAINT"; -+ my $dest = lc $source; -+ test $dest, "lc(tainted) taints its return value"; -+ $dest = lcfirst $source; -+ test $dest, "lcfirst(tainted) taints its return value"; -+ $dest = uc $source; -+ test $dest, "uc(tainted) taints its return value"; -+ $dest = ucfirst $source; -+ test $dest, "ucfirst(tainted) taints its return value"; -+} - - # This may bomb out with the alarm signal so keep it last - SKIP: { diff --git a/perl-ExtUtils-ParseXS-2.2206.patch b/perl-ExtUtils-ParseXS-2.2206.patch deleted file mode 100644 index 98682b6..0000000 --- a/perl-ExtUtils-ParseXS-2.2206.patch +++ /dev/null @@ -1,391 +0,0 @@ -diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/Changes.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/Changes ---- perl-5.12.3/cpan/ExtUtils-ParseXS/Changes.22206 2011-01-09 15:20:53.000000000 -0500 -+++ perl-5.12.3/cpan/ExtUtils-ParseXS/Changes 2011-01-26 16:15:45.072549003 -0500 -@@ -1,5 +1,73 @@ - Revision history for Perl extension ExtUtils::ParseXS. - -+2.2206 - Sun Jul 4 15:43:21 EDT 2010 -+ -+ Bug fixes: -+ -+ - Make xsubpp accept the _ prototype (RT#57157) [Rafael Garcia-Suarez] -+ -+ - INCLUDE_COMMAND portability fixes for VMS (RT#58181) [Craig Berry] -+ -+ - INCLUDE_COMMAND fixes to detect non-zero exit codes (RT#52873) -+ [Steffen Mueller] -+ -+2.2205 - Wed Mar 10 18:15:36 EST 2010 -+ -+ Other: -+ -+ - No longer ships with Build.PL to avoid creating a circular dependency -+ -+2.2204 - Wed Mar 10 14:23:52 EST 2010 -+ -+ Other: -+ -+ - Downgraded warnings on using INCLUDE with a command from "deprecated" -+ to "discouraged" and limited it to the case where the command includes -+ "perl" [Steffen Mueller] -+ -+2.2203 - Thu Feb 11 14:00:51 EST 2010 -+ -+ Bug fixes: -+ -+ - Build.PL was not including ExtUtils/xsubpp for installation. Fixed -+ by subclassing M::B::find_pm_files to include it [David Golden] -+ -+2.2202 - Wed Jan 27 15:04:59 EST 2010 -+ -+ Bug fixes: -+ -+ - The fix to IN/OUT/OUTLIST was itself broken and is now fixed. -+ [Reported by Serdar Dalgic; fix suggested by Rafael Garcia-Suarez] -+ -+ We apologize for the fault in the regex. Those responsible -+ have been sacked. -+ -+2.2201 Mon Jan 25 16:12:05 EST 2010 -+ -+ Bug fixes: -+ -+ - IN/OUT/OUTLIST, etc. were broken due to a bad regexp. [Simon Cozens] -+ -+2.22 - Mon Jan 11 15:00:07 EST 2010 -+ -+ No changes from 2.21_02 -+ -+2.21_02 - Sat Dec 19 10:55:41 EST 2009 -+ -+ Bug fixes: -+ -+ - fixed bugs and added tests for INCLUDE_COMMAND [Steffen Mueller] -+ -+2.21_01 - Sat Dec 19 07:22:44 EST 2009 -+ -+ Enhancements: -+ -+ - New 'INCLUDE_COMMAND' directive [Steffen Mueller] -+ -+ Bug fixes: -+ -+ - Workaround for empty newXS macro found in P5NCI [Goro Fuji] -+ - 2.21 - Mon Oct 5 11:17:53 EDT 2009 - - Bug fixes: -@@ -12,7 +80,7 @@ Revision history for Perl extension ExtU - - Bug fixes: - - Use "char* file" for perl < 5.9, not "char[] file"; fixes mod_perl -- breakage due to prior attempts to fix RT#48104 [David Golden] -+ breakage due to prior attempts to fix RT#48104 [David Golden] - - 2.20_06 - Fri Oct 2 23:45:45 EDT 2009 - -@@ -62,8 +130,8 @@ Revision history for Perl extension ExtU - 2.20_03 - Thu Jul 23 23:14:50 EDT 2009 - - Bug fixes: -- - Fixed "const char *" errors for 5.8.8 (and older) (RT#48104) -- [Vincent Pit] -+ - Fixed "const char *" errors for 5.8.8 (and older) (RT#48104) -+ [Vincent Pit] - - Added newline before a preprocessor directive (RT#30673) - [patch by hjp] - -diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm ---- perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm.22206 2011-01-09 15:20:53.000000000 -0500 -+++ perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm 2011-01-26 16:16:15.366548997 -0500 -@@ -18,7 +18,7 @@ my(@XSStack); # Stack of conditionals an - my($XSS_work_idx, $cpp_next_tmp); - - use vars qw($VERSION); --$VERSION = '2.21'; -+$VERSION = '2.2206'; - $VERSION = eval $VERSION if $VERSION =~ /_/; - - use vars qw(%input_expr %output_expr $ProtoUsed @InitFileCode $FH $proto_re $Overload $errors $Fallback -@@ -74,7 +74,7 @@ sub process_file { - ($XSS_work_idx, $cpp_next_tmp) = (0, "XSubPPtmpAAAA"); - @InitFileCode = (); - $FH = Symbol::gensym(); -- $proto_re = "[" . quotemeta('\$%&*@;[]') . "]" ; -+ $proto_re = "[" . quotemeta('\$%&*@;[]_') . "]" ; - $Overload = 0; - $errors = 0; - $Fallback = '&PL_sv_undef'; -@@ -230,9 +230,10 @@ sub process_file { - - # Match an XS keyword - $BLOCK_re= '\s*(' . join('|', qw( -- REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT -- CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE -- SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK -+ REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE -+ OUTPUT CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE -+ VERSIONCHECK INCLUDE INCLUDE_COMMAND SCOPE INTERFACE -+ INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK - )) . "|$END)\\s*:"; - - -@@ -448,7 +449,7 @@ EOF - $xsreturn = 0; - - $_ = shift(@line); -- while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE|SCOPE")) { -+ while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE(?:_COMMAND)?|SCOPE")) { - &{"${kwd}_handler"}() ; - next PARAGRAPH unless @line ; - $_ = shift(@line); -@@ -520,11 +521,11 @@ EOF - next unless defined($pre) && length($pre); - my $out_type = ''; - my $inout_var; -- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//) { -+ if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//) { - my $type = $1; - $out_type = $type if $type ne 'IN'; -- $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//; -- $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//; -+ $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//; -+ $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//; - } - my $islength; - if ($name =~ /^length\( \s* (\w+) \s* \)\z/x) { -@@ -554,7 +555,7 @@ EOF - } else { - @args = split(/\s*,\s*/, $orig_args); - for (@args) { -- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\s+//) { -+ if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\b\s*//) { - my $out_type = $1; - next if $out_type eq 'IN'; - $only_C_inlist{$_} = 1 if $out_type eq "OUTLIST"; -@@ -934,6 +935,10 @@ EOF - EOF - } - } -+ elsif($newXS eq 'newXS'){ # work around P5NCI's empty newXS macro -+ push(@InitFileCode, -+ " ${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n"); -+ } - else { - push(@InitFileCode, - " (void)${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n"); -@@ -1481,6 +1486,25 @@ sub PROTOTYPES_handler () - - } - -+sub PushXSStack -+ { -+ my %args = @_; -+ # Save the current file context. -+ push(@XSStack, { -+ type => 'file', -+ LastLine => $lastline, -+ LastLineNo => $lastline_no, -+ Line => \@line, -+ LineNo => \@line_no, -+ Filename => $filename, -+ Filepathname => $filepathname, -+ Handle => $FH, -+ IsPipe => scalar($filename =~ /\|\s*$/), -+ %args, -+ }) ; -+ -+ } -+ - sub INCLUDE_handler () - { - # the rest of the current line should contain a valid filename -@@ -1499,17 +1523,16 @@ sub INCLUDE_handler () - - ++ $IncludedFiles{$_} unless /\|\s*$/ ; - -- # Save the current file context. -- push(@XSStack, { -- type => 'file', -- LastLine => $lastline, -- LastLineNo => $lastline_no, -- Line => \@line, -- LineNo => \@line_no, -- Filename => $filename, -- Filepathname => $filepathname, -- Handle => $FH, -- }) ; -+ if (/\|\s*$/ && /^\s*perl\s/) { -+ Warn("The INCLUDE directive with a command is discouraged." . -+ " Use INCLUDE_COMMAND instead! In particular using 'perl'" . -+ " in an 'INCLUDE: ... |' directive is not guaranteed to pick" . -+ " up the correct perl. The INCLUDE_COMMAND directive allows" . -+ " the use of \$^X as the currently running perl, see" . -+ " 'perldoc perlxs' for details."); -+ } -+ -+ PushXSStack(); - - $FH = Symbol::gensym(); - -@@ -1523,7 +1546,7 @@ sub INCLUDE_handler () - EOF - - $filename = $_ ; -- $filepathname = "$dir/$filename"; -+ $filepathname = File::Spec->catfile($dir, $filename); - - # Prime the pump by reading the first - # non-blank line -@@ -1535,7 +1558,64 @@ EOF - - $lastline = $_ ; - $lastline_no = $. ; -+ } -+ -+sub QuoteArgs { -+ my $cmd = shift; -+ my @args = split /\s+/, $cmd; -+ $cmd = shift @args; -+ for (@args) { -+ $_ = q(").$_.q(") if !/^\"/ && length($_) > 0; -+ } -+ return join (' ', ($cmd, @args)); -+ } - -+sub INCLUDE_COMMAND_handler () -+ { -+ # the rest of the current line should contain a valid command -+ -+ TrimWhitespace($_) ; -+ -+ $_ = QuoteArgs($_) if $^O eq 'VMS'; -+ -+ death("INCLUDE_COMMAND: command missing") -+ unless $_ ; -+ -+ death("INCLUDE_COMMAND: pipes are illegal") -+ if /^\s*\|/ or /\|\s*$/ ; -+ -+ PushXSStack( IsPipe => 1 ); -+ -+ $FH = Symbol::gensym(); -+ -+ # If $^X is used in INCLUDE_COMMAND, we know it's supposed to be -+ # the same perl interpreter as we're currently running -+ s/^\s*\$\^X/$^X/; -+ -+ # open the new file -+ open ($FH, "-|", "$_") -+ or death("Cannot run command '$_' to include its output: $!") ; -+ -+ print Q(<<"EOF"); -+# -+#/* INCLUDE_COMMAND: Including output of '$_' from '$filename' */ -+# -+EOF -+ -+ $filename = $_ ; -+ $filepathname = $filename; -+ $filepathname =~ s/\"/\\"/g; -+ -+ # Prime the pump by reading the first -+ # non-blank line -+ -+ # skip leading blank lines -+ while (<$FH>) { -+ last unless /^\s*$/ ; -+ } -+ -+ $lastline = $_ ; -+ $lastline_no = $. ; - } - - sub PopFile() -@@ -1544,7 +1624,7 @@ sub PopFile() - - my $data = pop @XSStack ; - my $ThisFile = $filename ; -- my $isPipe = ($filename =~ /\|\s*$/) ; -+ my $isPipe = $data->{IsPipe}; - - -- $IncludedFiles{$filename} - unless $isPipe ; -diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp -diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t ---- perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t.22206 2011-01-09 15:20:53.000000000 -0500 -+++ perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t 2011-01-26 16:17:03.000549001 -0500 -@@ -8,7 +8,7 @@ use ExtUtils::CBuilder; - use attributes; - use overload; - --plan tests => 24; -+plan tests => 25; - - my ($source_file, $obj_file, $lib_file); - -@@ -42,7 +42,7 @@ SKIP: { - } - - SKIP: { -- skip "no dynamic loading", 5 -+ skip "no dynamic loading", 6 - if !$b->have_compiler || !$Config{usedl}; - my $module = 'XSMore'; - $lib_file = $b->link( objects => $obj_file, module_name => $module ); -@@ -88,6 +88,8 @@ SKIP: { - - is XSMore::len("foo"), 3, 'the length keyword'; - -+ is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive'; -+ - # Win32 needs to close the DLL before it can unlink it, but unfortunately - # dl_unload_file was missing on Win32 prior to perl change #24679! - if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) { -diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs ---- perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs.22206 2011-01-09 15:20:53.000000000 -0500 -+++ perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs 2011-01-26 16:17:22.844549001 -0500 -@@ -106,6 +106,8 @@ outlist(OUTLIST int a, OUTLIST int b) - int - len(char* s, int length(s)) - -+INCLUDE_COMMAND: $^X -Ilib -It/lib -MIncludeTester -e IncludeTester::print_xs -+ - #if 1 - - INCLUDE: XSInclude.xsh -diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm ---- perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm.22206 2011-01-26 16:38:04.432549002 -0500 -+++ perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm 2011-01-26 16:37:49.862549001 -0500 -@@ -0,0 +1,20 @@ -+package IncludeTester; -+use strict; -+ -+sub print_xs { -+ print <<'HERE'; -+ -+int -+sum(a, b) -+ int a -+ int b -+ CODE: -+ RETVAL = a + b; -+ OUTPUT: -+ RETVAL -+ -+HERE -+} -+ -+1; -+ -diff -up perl-5.12.3/MANIFEST.22206 perl-5.12.3/MANIFEST ---- perl-5.12.3/MANIFEST.22206 2011-01-26 16:36:42.933549001 -0500 -+++ perl-5.12.3/MANIFEST 2011-01-26 16:50:52.762549003 -0500 -@@ -1044,6 +1044,7 @@ cpan/ExtUtils-ParseXS/Changes ExtUtils - cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm converts Perl XS code into C code - cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp External subroutine preprocessor - cpan/ExtUtils-ParseXS/t/basic.t See if ExtUtils::ParseXS works -+cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm - cpan/ExtUtils-ParseXS/t/more.t Extended ExtUtils::ParseXS testing - cpan/ExtUtils-ParseXS/t/typemap Standard typemap for controlled testing - cpan/ExtUtils-ParseXS/t/usage.t ExtUtils::ParseXS tests