Remove unused patches
This commit is contained in:
parent
e13ed901d5
commit
6e4f5623cd
@ -1,71 +0,0 @@
|
||||
commit 6ad76e39ed152a180816212ff7b4f798b1ab9bf0
|
||||
Author: Jirka Hruška <jirka@fud.cz>
|
||||
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 <jirka@fud.cz>
|
||||
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 <meyering@asic.sc.ti.com>
|
||||
Jim Miner <jfm@winternet.com>
|
||||
Jim Richardson
|
||||
Jim Schneider <jschneid@netilla.com>
|
||||
+Jirka Hruška <jirka@fud.cz>
|
||||
Joachim Huober
|
||||
Jochen Wiedmann <joe@ispsoft.de>
|
||||
Jody Belka <dev-perl@pimb.org>
|
||||
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);
|
@ -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 <<DEFINE;
|
||||
+unless (defined &$macro) { sub $macro(\$) { my (\$$arg) = \@_; \"$def\" } }
|
||||
+
|
||||
+DEFINE
|
||||
+ } elsif
|
||||
+ ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
|
||||
# float:
|
||||
print PREAMBLE
|
||||
"unless (defined &$_) { sub $_() { $1 } }\n\n";
|
||||
@@ -807,8 +820,14 @@ sub build_preamble_if_necessary
|
||||
print PREAMBLE
|
||||
"unless (defined &$_) { sub $_() { $1 } }\n\n";
|
||||
} elsif ($define{$_} =~ /^\w+$/) {
|
||||
- print PREAMBLE
|
||||
- "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n";
|
||||
+ my $def = $define{$_};
|
||||
+ if ($isatype{$def}) {
|
||||
+ print PREAMBLE
|
||||
+ "unless (defined &$_) { sub $_() { \"$def\" } }\n\n";
|
||||
+ } else {
|
||||
+ print PREAMBLE
|
||||
+ "unless (defined &$_) { sub $_() { &$def } }\n\n";
|
||||
+ }
|
||||
} else {
|
||||
print PREAMBLE
|
||||
"unless (defined &$_) { sub $_() { \"",
|
@ -1,13 +0,0 @@
|
||||
diff -up a/x2p/find2perl.PL b/x2p/find2perl.PL
|
||||
--- a/x2p/find2perl.PL 2010-12-30 03:07:17.000000000 +0100
|
||||
+++ b/x2p/find2perl.PL 2012-05-29 10:18:11.697683643 +0200
|
||||
@@ -681,7 +681,8 @@ sub tab () {
|
||||
sub fileglob_to_re ($) {
|
||||
my $x = shift;
|
||||
$x =~ s#([./^\$()+])#\\$1#g;
|
||||
- $x =~ s#([?*])#.$1#g;
|
||||
+ $x =~ s#\*#.*#g;
|
||||
+ $x =~ s#\?#.#g;
|
||||
"^$x\\z";
|
||||
}
|
||||
|
@ -1,191 +0,0 @@
|
||||
From 9b9923c633797a232ac871903c3c14833036aa28 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
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=<name> --infile=<name> --outfile=<name>
|
||||
+ pod2html --help --htmldir=<name> --htmlroot=<URL>
|
||||
+ --infile=<name> --outfile=<name>
|
||||
--podpath=<name>:...:<name> --podroot=<name>
|
||||
- --recurse --norecurse --verbose
|
||||
- --index --noindex --title=<name>
|
||||
+ --cachedir=<name> --flush --recurse --norecurse
|
||||
+ --quiet --noquiet --verbose --noverbose
|
||||
+ --index --noindex --backlink --nobacklink
|
||||
+ --header --noheader --poderrors --nopoderrors
|
||||
+ --css=<URL> --title=<name>
|
||||
|
||||
=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 <<END_OF_USAGE;
|
||||
-Usage: $0 --help --htmlroot=<name> --infile=<name> --outfile=<name>
|
||||
- --podpath=<name>:...:<name> --podroot=<name> --cachedir=<name>
|
||||
- --recurse --verbose --index --norecurse --noindex
|
||||
+Usage: $0 --help --htmldir=<name> --htmlroot=<URL>
|
||||
+ --infile=<name> --outfile=<name>
|
||||
+ --podpath=<name>:...:<name> --podroot=<name>
|
||||
+ --cachedir=<name> --flush --recurse --norecurse
|
||||
+ --quiet --noquiet --verbose --noverbose
|
||||
+ --index --noindex --backlink --nobacklink
|
||||
+ --header --noheader --poderrors --nopoderrors
|
||||
+ --css=<URL> --title=<name>
|
||||
|
||||
--[no]backlink - turn =head1 directives into links pointing to the top of
|
||||
the page (off by default).
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -1,43 +0,0 @@
|
||||
From 7fb8bf6b9bd4b199baaa0209061af0ccc11d30d9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
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ř <ppisar@redhat.com>
|
||||
---
|
||||
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
|
||||
|
@ -1,49 +0,0 @@
|
||||
From 56b960b25894b4b1e1f2ce0ff443c187860bdf76 Mon Sep 17 00:00:00 2001
|
||||
From: "Craig A. Berry" <craigberry@mac.com>
|
||||
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ř <ppisar@redhat.com>
|
||||
---
|
||||
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
|
||||
|
@ -1,59 +0,0 @@
|
||||
From a8d0bb2102bc09bfdc7e661fb159d9257474f168 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
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 <h.m.brand@xs4all.nl>
|
||||
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 <h.m.brand@xs4all.nl>
|
||||
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ř <ppisar@redhat.com>
|
||||
---
|
||||
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
|
||||
|
@ -1,38 +0,0 @@
|
||||
From fe89bf70817551c30bcacaef25578ffeb7d71eb1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
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<h2ph [-d destination directory] [-r | -a] [-l] [headerfiles]>
|
||||
+B<h2ph [-d destination directory] [-r | -a] [-l] [-h] [-e] [-D] [-Q]
|
||||
+[headerfiles]>
|
||||
|
||||
=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
|
||||
|
@ -1,31 +0,0 @@
|
||||
From fba93b250c0d566f7ef26442312286310b2b9b46 Mon Sep 17 00:00:00 2001
|
||||
From: Father Chrysostomos <sprout@cpan.org>
|
||||
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
|
||||
|
@ -1,96 +0,0 @@
|
||||
From 2f222bbdd2d6da605708c3ab620ac25c62481179 Mon Sep 17 00:00:00 2001
|
||||
From: Father Chrysostomos <sprout@cpan.org>
|
||||
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
|
||||
|
@ -1,68 +0,0 @@
|
||||
From f5df269c5cef57294662d0b1f80a468b91f13643 Mon Sep 17 00:00:00 2001
|
||||
From: Father Chrysostomos <sprout@cpan.org>
|
||||
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
|
||||
|
@ -1,69 +0,0 @@
|
||||
From cccbbce940ea952c4c236049e98d21a011475cb1 Mon Sep 17 00:00:00 2001
|
||||
From: Philip Boulain <philip.boulain@smoothwall.net>
|
||||
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</^open3:/>. However,
|
||||
C<exec> 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
|
||||
|
@ -1,101 +0,0 @@
|
||||
From 7b58d7c4e3ad14ac3c60f1ea5d1032205a086e71 Mon Sep 17 00:00:00 2001
|
||||
From: Tony Cook <tony@develop-help.com>
|
||||
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ř <ppisar@redhat.com>
|
||||
---
|
||||
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
|
||||
|
@ -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: {
|
@ -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
|
Loading…
Reference in New Issue
Block a user