In perl.git, the branch maint-5.10 has been updated <http://perl5.git.perl.org/perl.git/commitdiff/9ee340c0a4d7fafbd35da28a7dbf9a64a3228de2?hp=11f90d967f869ebd6935c2ebee7eaff41ce9f53a>
- Log ----------------------------------------------------------------- commit 9ee340c0a4d7fafbd35da28a7dbf9a64a3228de2 Author: Robin Barker <[email protected]> Date: Tue Jun 23 14:51:45 2009 +0200 Fix for RT #52552. This patch only taints for pack('a'/'A') which was the original bug. I guess the previous behaviour (pre-5.10.0) tainted on all tainted input. That more general behaviour may be recoverable - not sure what we want. (cherry picked from commit 3c4fb04a912b266806354630dd98a7e36a830fbe) M pp_pack.c M t/op/taint.t commit 745eb3745e5d792c2b727c759ba3e8abf42bbc22 Author: David Mitchell <[email protected]> Date: Fri Jun 26 17:10:34 2009 +0100 cherry-picking of 8267ab25ca messed up taint.t (chunk was inserted in wrong place) M t/op/taint.t commit d2f7f004345151099ecda55ac3646964abcb9af1 Author: U-Adam-PC\Adam <a...@adam-pc.(none)> Date: Mon Jun 22 14:00:53 2009 -0400 Added new required fields to makesis.pl (cherry picked from commit d2651550eafa22e7c4873d82394cbe163ac2dd50) M symbian/makesis.pl commit 7264b0b13b213cc9df54bd3568efd7abe706d5e6 Author: Steve Peters <[email protected]> Date: Mon Jun 22 23:15:22 2009 -0500 Add Porting/release_managers_guide.pod to MANIFEST (cherry picked from commit 68f62fdf7fe6ca672ef9024c62410f5e18575b94) M MANIFEST commit b0185c19e226419541204933a59fd9aab648020d Author: Nicholas Clark <[email protected]> Date: Sat Jun 13 21:43:30 2009 +0100 Bring the joy of strict (and warnings) to perlmodlib.PL. Tweak some indenting. (cherry picked from commit 5b5041827ebfe6db62c72e5b64d221d66772b47a) M pod/perlmodlib.PL commit 39c32c9e6bfe77954d3d8834ae29def20c16886b Author: Gabor Szabo <[email protected]> Date: Mon Jun 22 15:55:29 2009 +0300 typos, link to thread with ideas about testing stability of perl and CPAN (cherry picked from commit 1aff535472d727d11eb5c79d9c8b04646b6ce63a) M Porting/release_managers_guide.pod commit 7976a3fe5e34bf58dff680193c6968c7bf303106 Author: Gabor Szabo <[email protected]> Date: Mon Jun 22 15:20:20 2009 +0300 add release_managers_guide.pod (cherry picked from commit 7277a900f7ff66c9fa1da7237a80422fc315eeff) A Porting/release_managers_guide.pod commit b4782b164474ebfc559e3a2a535c8a66a1cce783 Author: Jim Cromie <[email protected]> Date: Fri Jun 12 15:27:11 2009 -0600 point illguts at perl.org (cherry picked from commit de10be12cd3b4d2e91c136c495230f49b31a4511) M pod/perlhack.pod ----------------------------------------------------------------------- Summary of changes: MANIFEST | 1 + Porting/release_managers_guide.pod | 173 ++++++++++++++++++++++++++++++++++++ pod/perlhack.pod | 10 ++- pod/perlmodlib.PL | 77 ++++++++-------- pp_pack.c | 1 + symbian/makesis.pl | 5 +- t/op/taint.t | 39 ++++++--- 7 files changed, 250 insertions(+), 56 deletions(-) create mode 100644 Porting/release_managers_guide.pod diff --git a/MANIFEST b/MANIFEST index 54f78d8..97c0dd9 100755 --- a/MANIFEST +++ b/MANIFEST @@ -3730,6 +3730,7 @@ Porting/podtidy Reformat pod using Pod::Tidy Porting/pumpkin.pod Guidelines and hints for Perl maintainers Porting/README.y2038 Perl notes for the 2038 fix Porting/regcharclass.pl Generate regcharclass.h from inline data +Porting/release_managers_guide.pod Release Manager's Guide Porting/sort_perldiag.pl Keep our diagnostics orderly Porting/testall.atom Cumulative profile with Third Degree Porting/thirdclean Cleanup Third Degree reports diff --git a/Porting/release_managers_guide.pod b/Porting/release_managers_guide.pod new file mode 100644 index 0000000..30c28e3 --- /dev/null +++ b/Porting/release_managers_guide.pod @@ -0,0 +1,173 @@ + +=head1 NAME + +release_managers_guide - Releasing a new version of perl 5.x + +=head1 SYNOPSIS + +The release process is primarily executed by the current pumpking. + +This document both helps as a check-list for the pumpking and is +a base for ideas on how the various tasks could be automated or +distributed. + +The process has two major parts. In the first part +the pumpking needs to determine if the current head revision in Git +is ready for shipment. The second part is the actual release +and packaging process. + +=head1 DETAILS + +=head2 Is it ready? + +In this step we need to make sure that: + +=over 4 + +=item 1 + +perl passes its own test suite and + +=item 2 + +CPAN works + + +which comes down to: + + for each module that fails its regression tests on $current + did it fail identically on $previous? + if yes, "SEP" (Somebody Else's Problem) + else work out why it failed (a bisect is useful for this) + + attempt to group failure causes + + for each failure cause + is that a regression? + if yes, figure out how to fix it + (more code? revert the code that broke it) + else + (presumably) it's relying on something un-or-under-documented + should the existing behaviour stay? + yes - goto "regression" + no - note it in perldelta as a significant bugfix + (also, try to inform the module's author) + +( TBD based on http://www.nntp.perl.org/group/perl.perl5.porters/2009/05/msg146680.html ) + +=back + + +=head2 The Actual release process + +The set of tasks that can be "scripted" for Perl 5 + +=over 4 + +=item 0 + +so you think you have a source control in a state that won't break CPAN, +at least not in "surprising" ways. + +=item 1 + +As there are no regular smokes (yet - please fix?) find out about the state +of VMS. If it's bad, think again. + +=item 2 + +Re-read the perldelta to try to find any embarrassing typos + +=item 3 + +Run Porting/makemeta + +=item 4 + +[used to be run autodoc.pl, but I eliminated that] + +=item 5 + +[used to be run pod/buildtoc, but I eliminated that] + +=item 6 + +update module corelist, but we need to fix that + +[it has been holding perforce revisions for releases, but we can't know +hashes in advance for git. We need to agree a plan to move to git tags] + +=item 7 + +[update changes, but Dave has eliminated that] + +=item 8 + +update patchlevel.h to remove all local patches + +=item 9 + +make tarball with Porting/makerel + +=item 10 + +copy tarball to some other machine x 2 [or more - IRC is good for this] + +=item 11 + +check that ./Configure -des && make all test works in one place + +=item 12 + +check that ./Configure ... && make all test_harness install works + + +=item 13 + +bootstrap the CPAN client on the clean install + +=item 14 + +install CPANPLUS + +=item 15 + +bootstrap the CPANPLUS client + +=item 16 + +install an XS module + +=item 17 + +if this is good, commit this. +sit, and wait. + +=item 18 + +do the smoke tests pass (particularly Win32) + +=item 19 + +if yes, upload it to PAUSE. This is the point of no return + +=item 20 + +mail p5p to announce it, with a quote I prepared earlier + +=item 21 + +wait 24 hours or so + +=item 22 + +post the announcement to use.perl.org + +=back + +=head1 SOURCE + +Based on http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html + +=cut + diff --git a/pod/perlhack.pod b/pod/perlhack.pod index 72c2fc0..a0e9e02 100644 --- a/pod/perlhack.pod +++ b/pod/perlhack.pod @@ -321,10 +321,12 @@ might start to make sense - don't worry if it doesn't yet, because the best way to study it is to read it in conjunction with poking at Perl source, and we'll do that later on. -You might also want to look at Gisle Aas's illustrated perlguts - -there's no guarantee that this will be absolutely up-to-date with the -latest documentation in the Perl core, but the fundamentals will be -right. ( http://gisle.aas.no/perl/illguts/ ) +Gisle Aas's illustrated perlguts (aka: illguts) is wonderful, although +a little out of date wrt some size details; the various SV structures +have since been reworked for smaller memory footprint. The +fundamentals are right however, and the pictures are very helpful. + +http://www.perl.org/tpc/1998/Perl_Language_and_Modules/Perl%20Illustrated/ =item L<perlxstut> and L<perlxs> diff --git a/pod/perlmodlib.PL b/pod/perlmodlib.PL index 99fca65..a013d26 100644 --- a/pod/perlmodlib.PL +++ b/pod/perlmodlib.PL @@ -1,5 +1,8 @@ #!../miniperl +use strict; +use warnings; + $ENV{LC_ALL} = 'C'; use FindBin; @@ -34,46 +37,44 @@ for my $filename (@files) { next; } + my ($name, $thing); + my $foundit = 0; + { + local $/ = ""; + while (<MOD>) { + next unless /^=head1 NAME/; + $foundit++; + last; + } + } + unless ($foundit) { + warn "$filename missing =head1 NAME (OK if respective .pod exists)\n" + unless $Quiet; + next; + } + my $title = <MOD>; + chomp $title; + close MOD; - my ($name, $thing); - my $foundit=0; - { - local $/=""; - while (<MOD>) { - next unless /^=head1 NAME/; - $foundit++; - last; - } - } - unless ($foundit) { - warn "$filename missing =head1 NAME (OK if respective .pod exists)\n" - unless $Quiet; - next; - } - my $title = <MOD>; - chomp($title); - close MOD; - - ($name, $thing) = split / --? /, $title, 2; - - unless ($name and $thing) { - warn "$filename missing name\n" unless $name; - warn "$filename missing thing\n" unless $thing or $Quiet; - next; - } - - $name =~ s/[^A-Za-z0-9_:\$<>].*//; - $name = $exceptions{$name} || $name; - $thing =~ s/^perl pragma to //i; - $thing = ucfirst($thing); - $title = "=item $name\n\n$thing\n\n"; - - if ($name =~ /[A-Z]/) { - push @mod, $title; - } else { - push @pragma, $title; - } + ($name, $thing) = split / --? /, $title, 2; + unless ($name and $thing) { + warn "$filename missing name\n" unless $name; + warn "$filename missing thing\n" unless $thing or $Quiet; + next; + } + + $name =~ s/[^A-Za-z0-9_:\$<>].*//; + $name = $exceptions{$name} || $name; + $thing =~ s/^perl pragma to //i; + $thing = ucfirst $thing; + $title = "=item $name\n\n$thing\n\n"; + + if ($name =~ /[A-Z]/) { + push @mod, $title; + } else { + push @pragma, $title; + } } # Much easier to special case it like this than special case the depending on diff --git a/pp_pack.c b/pp_pack.c index 0895c9b..d5fe13b 100644 --- a/pp_pack.c +++ b/pp_pack.c @@ -2812,6 +2812,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist ) } memset(cur, datumtype == 'A' ? ' ' : '\0', len); cur += len; + SvTAINT(cat); break; } case 'B': diff --git a/symbian/makesis.pl b/symbian/makesis.pl index 377a7c7..270f6b4 100644 --- a/symbian/makesis.pl +++ b/symbian/makesis.pl @@ -16,7 +16,7 @@ my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) = my $UID = do "uid.pl" or die $@; my %PORT = %{ do "port.pl" or die $@ }; -my $ARM = 'thumb'; # TODO +my $ARM = 'armv5';#'thumb'; # TODO my $S60SDK = $ENV{S60SDK}; # from sdk.pl my $S80SDK = $ENV{S80SDK}; # from sdk.pl my $S90SDK = $ENV{S90SDK}; # from sdk.pl @@ -176,6 +176,9 @@ qq[;Supports Series 90 v1.1\n(0x101FBE05), 0, 0, 0, {"Series90ProductID"}\n] : ; #{"\u$target"},($uid),$MAJOR,$MINOR,$PATCH ; +;Localised Vendor name +%{"Vendor-EN"} +; ; Private key and certificate (unused) ; ;* "\u$target.key", "\u$target.cer" diff --git a/t/op/taint.t b/t/op/taint.t index e459bb5..0ac02a6 100644 --- a/t/op/taint.t +++ b/t/op/taint.t @@ -17,7 +17,7 @@ use Config; use File::Spec::Functions; BEGIN { require './test.pl'; } -plan tests => 298; +plan tests => 301; $| = 1; @@ -1253,6 +1253,21 @@ foreach my $ord (78, 163, 256) { } { + # 59998 + sub cr { my $x = crypt($_[0], $_[1]); $x } + sub co { my $x = ~$_[0]; $x } + my ($a, $b); + $a = cr('hello', 'foo' . $TAINT); + $b = cr('hello', 'foo'); + ok(tainted($a), "tainted crypt"); + ok(!tainted($b), "untainted crypt"); + $a = co('foo' . $TAINT); + $b = co('foo'); + ok(tainted($a), "tainted complement"); + ok(!tainted($b), "untainted complement"); +} + +{ my @data = qw(bonk zam zlonk qunckkk); # Clearly some sort of usenet bang-path my $string = $TAINT . join "!", @data; @@ -1288,19 +1303,17 @@ foreach my $ord (78, 163, 256) { } } +# Bug RT #52552 - broken by change at git commit id f337b08 { - # 59998 - sub cr { my $x = crypt($_[0], $_[1]); $x } - sub co { my $x = ~$_[0]; $x } - my ($a, $b); - $a = cr('hello', 'foo' . $TAINT); - $b = cr('hello', 'foo'); - ok(tainted($a), "tainted crypt"); - ok(!tainted($b), "untainted crypt"); - $a = co('foo' . $TAINT); - $b = co('foo'); - ok(tainted($a), "tainted complement"); - ok(!tainted($b), "untainted complement"); + my $x = $TAINT. q{print "Hello world\n"}; + my $y = pack "a*", $x; + ok(tainted($y), "pack a* preserves tainting"); + + my $z = pack "A*", q{print "Hello world\n"}.$TAINT; + ok(tainted($z), "pack A* preserves tainting"); + + my $zz = pack "a*a*", q{print "Hello world\n"}, $TAINT; + ok(tainted($zz), "pack a*a* preserves tainting"); } # This may bomb out with the alarm signal so keep it last -- Perl5 Master Repository
