In perl.git, the branch maint-5.10 has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/3ee1d7884d56c52be2350bed7f8307a54b129798?hp=904b7ea029daf2f4cf9f7d0ca639d180fe6f6055>

- Log -----------------------------------------------------------------
commit 3ee1d7884d56c52be2350bed7f8307a54b129798
Author: David Mitchell <[email protected]>
Date:   Mon Aug 3 21:46:19 2009 +0100

    sort MANIFEST

M       MANIFEST

commit 4ecf7a053523af651b0bee55f66e27763a776af6
Author: Jerry D. Hedden <[email protected]>
Date:   Wed Jul 29 20:31:30 2009 -0400

    Sort MANIFEST using Perl
    
    (cherry-picked from commit 4e86fc4bd811aa6c664a88d3cef584224bf7f492)

M       MANIFEST
M       Makefile.SH
A       Porting/manisort
M       t/lib/manifest.t

commit 3f588530a3e9e4fccba74a81d1bb96ec1c50e786
Author: Nicholas Clark <[email protected]>
Date:   Wed Jul 29 22:36:33 2009 +0100

    Avoid shelling out to an external sort to verify that MANIFEST is sorted.
    
    This also lets us report which file(s) are out of order.
    
    (cherry picked from commit 3d967d9abef744c6fe8f4b6b7434a38c59380228)

M       t/lib/manifest.t

commit fa014ec661aff6814a364f09dfb077c388b1831d
Author: Jerry D. Hedden <[email protected]>
Date:   Wed Jul 29 13:47:53 2009 -0400

    Add MANIFEST sort test
    
    (cherry picked from commit b8ca42e11b4c854e920928a9cd8f979bb5972b1c)

M       t/lib/manifest.t

commit 879b11366037ccd098e60b455d8833a41ae043f0
Author: Nicholas Clark <[email protected]>
Date:   Wed Jul 29 19:00:26 2009 +0100

    Sort the MANIFEST.
    
    (cherry picked from commit c372fac7e5ae6cc6782e6e58c1d62221916da784)

M       MANIFEST

commit e0873bf565e08d3bcac8564665e82a82f24cc130
Author: Leon Brocard <[email protected]>
Date:   Wed Jul 29 14:34:23 2009 +0100

    podtidy
    
    (cherry picked from commit 6a7cbfe84d801c67d9433db81b4574dd7859d010)

M       pod/perlrepository.pod

commit c56109fc5652068bbf80774d93d7abb0904f9f97
Author: Ricardo SIGNES <[email protected]>
Date:   Wed Jul 22 22:29:10 2009 -0700

    [rjbs] very minor tweaks to description of maint/blead
    
    (cherry picked from commit 7f4ffa9dba4691a2cd3285cfb3fd76f6f6bd661b)

M       pod/perlrepository.pod

commit 75f402b905e01490913090dc99090ac32f9115ed
Author: Nicholas Clark <[email protected]>
Date:   Wed Jul 29 12:50:51 2009 +0100

    Tabs, not spaces, in MANIFEST.
    (cherry-picked from commit bc35a5dd94a524c65157dbded866914c8d8d2168)

M       MANIFEST

commit 28013f7cd851e86f5bc02ca57c6b4a3502955b34
Author: The Doctor <[email protected]>
Date:   Wed Jul 29 14:25:58 2009 -0400

    hints/bsdos.sh:  Add correct flags for compilation with pthreads
    
    (cherry picked from commit 1d5727c1fd186772fdf2e7e5f94d3656809073d6)

M       hints/bsdos.sh

commit 771d57c036076c5c3a2ccd42c6bda27648e5b20d
Author: Nicholas Clark <[email protected]>
Date:   Wed Jul 29 16:32:56 2009 +0100

    Add a test to verify that the MANIFEST file is well-formed.
    
    (cherry picked from commit 398f002c97feb32fa5d70119ed06988021e19663)

M       MANIFEST
A       t/lib/manifest.t

commit d8d392bcfa2e0c26230e60607dcb2c95d9e8ae18
Author: Jesse Vincent <[email protected]>
Date:   Wed Jul 29 10:04:56 2009 -0400

    bump-perl-version false positives
    
    In the runup to 5.10.1, Dave created bump-perl-version to automate
    the tedious process of incrementing the Perl version number.  Trying
    it out on blead, I found that there are a few files it matches
    which either mention a version of Perl and then say "replace 5.x.y with
    your version of Perl" or which are describing changes in a particular
    version of perl. The attached patch skips those files.
    
    At this point, we're down to 18 files which need to be changed to bump
    the version at release time.
    
    -j
    
    From 0c347ba41fea91bbe36b53841cc150002c8782d5 Mon Sep 17 00:00:00 2001
    From: Jesse Vincent <[email protected]>
    Date: Wed, 29 Jul 2009 10:00:09 -0400
    Subject: [PATCH] Removed some false positives flagged for gratuitious 
changing by the bump-perl-version releng tool
    
    (cherry picked from commit 5bd03515d294382b9bededef5a3bb4cd415656c3)

M       Porting/bump-perl-version

commit 05e675a7ebb38557af601cbde6eed8db71264aad
Author: Jesse Vincent <[email protected]>
Date:   Tue Jul 28 14:43:46 2009 -0400

    A first stab at walking through the release-manager guide Primarily fixing 
bugs and clarifying prose.
    
    (cherry picked from commit 46743ef75efb28381be7cd8b99f7312ccf91904a)

M       Porting/release_managers_guide.pod

commit fabae2c30b8ed6a8dd8a8f194196b1655d54d904
Author: Jesse Vincent <[email protected]>
Date:   Tue Jul 28 14:35:08 2009 -0400

    makerel now tells you _which_ files differ from the MANIFEST and if 
possible gives you sha1 sums of the built distribution
    
    (cherry picked from commit 9b05e874888db731870edce844ef9f3194eafed4)

M       Porting/makerel

commit 01cbbcd9bb750f43c78282dddff9f2ac3d82f5b5
Author: Yves Orton <demer...@gemini.(none)>
Date:   Tue Jul 28 13:04:22 2009 +0200

    dont leave temporary files laying around
    
    (cherry picked from commit 40c539099071b6200af235484f3b33ce7d837dd6)

M       Porting/make_snapshot.pl

commit 0b38ae389afb8cd508b428899a36e8c20fef90d4
Author: Yves Orton <demer...@gemini.(none)>
Date:   Tue Jul 28 13:02:00 2009 +0200

    changes required to Make It Work on the perl gitweb host
    
    (cherry picked from commit fe4f778754e1e2a5e05eddcd123ab68c16b18ab9)

M       Porting/make_snapshot.pl

commit c04726a7844bcf17b4f5d106cc8bbb6ecbdaf4d1
Author: Yves Orton <demer...@gemini.(none)>
Date:   Tue Jul 28 10:51:56 2009 +0200

    Add Porting/make_snapshot.pl
    
    Which should have been included with the corresponding MANIFEST change
    in the previous commit.
    
    (cherry picked from commit a23cb041bc3354bdcb49e0dd42a3683d9850d471)

A       Porting/make_snapshot.pl

commit 8d1562cb93d7d83c3fb6f961628b0722db7031e0
Author: Yves Orton <demer...@gemini.(none)>
Date:   Tue Jul 28 10:40:08 2009 +0200

    update manifest to reflect two new utilities
    
    (cherry picked from commit 09236310cc067b3e1bdd319db9fcf3e18363dff9)

M       MANIFEST

commit a7bbd5fca3f472997af16d3d0776f524ed187bc9
Author: Yves Orton <demer...@gemini.(none)>
Date:   Tue Jul 28 10:38:22 2009 +0200

    add tool to create .tgz snapshot files with .patch file included
    
    (cherry picked from commit 919d72bf3efe392b3483a1392bb7589a998a159f)

M       Porting/make_dot_patch.pl

commit a56848cc53444bd8b00bbcad24bd27af274f38d1
Author: Yves Orton <demer...@gemini.(none)>
Date:   Mon Jul 27 22:10:55 2009 +0200

    add a simple utility to Porting/ which knows how to generate .patch files
    
    (cherry picked from commit 031cefa092a35217a3ac4abe595ffb31b4d6ec81)

A       Porting/make_dot_patch.pl
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                           |   26 +++++++-----
 Makefile.SH                        |    4 +-
 Porting/bump-perl-version          |    4 ++
 Porting/make_dot_patch.pl          |   47 +++++++++++++++++++++
 Porting/make_snapshot.pl           |   79 ++++++++++++++++++++++++++++++++++++
 Porting/makerel                    |   20 ++++++++-
 Porting/manisort                   |   64 +++++++++++++++++++++++++++++
 Porting/release_managers_guide.pod |   49 ++++++++++++++++------
 hints/bsdos.sh                     |    2 +-
 pod/perlrepository.pod             |   34 +++++++++-------
 t/lib/manifest.t                   |   52 +++++++++++++++++++++++
 11 files changed, 336 insertions(+), 45 deletions(-)
 create mode 100755 Porting/make_dot_patch.pl
 create mode 100755 Porting/make_snapshot.pl
 create mode 100644 Porting/manisort
 create mode 100644 t/lib/manifest.t

diff --git a/MANIFEST b/MANIFEST
index ed4c252..1824d11 100755
--- a/MANIFEST
+++ b/MANIFEST
@@ -1784,7 +1784,7 @@ lib/autodie/t/autodie_test_module.pm      autodie - test 
helper
 lib/autodie/t/backcompat.t             autodie - More Fatal backcompat
 lib/autodie/t/basic_exceptions.t       autodie - Basic exception tests
 lib/autodie/t/binmode.t                        autodie - Binmode testing
-lib/autodie/t/blog_hints.t              autodie - Tests fro PJF's blog
+lib/autodie/t/blog_hints.t             autodie - Tests fro PJF's blog
 lib/autodie/t/caller.t                 autodie - Caller diagnostics
 lib/autodie/t/context_lexical.t                autodie - Context clobbering 
lexically
 lib/autodie/t/context.t                        autodie - Context clobbering 
tests
@@ -1818,18 +1818,18 @@ lib/autodie/t/lib/Hints_provider_easy_does_it.pm        
autodie - Hints/easy helper
 lib/autodie/t/lib/Hints_provider_isa.pm        autodie - Hints/inherit helper
 lib/autodie/t/lib/Hints_test.pm                autodie - Hints test helper
 lib/autodie/t/lib/lethal.pm            autodie - with a better name
-lib/autodie/t/lib/my/autodie.pm         autodie - blog_hints.t helper
+lib/autodie/t/lib/my/autodie.pm                autodie - blog_hints.t helper
 lib/autodie/t/lib/OtherTypes.pm                autodie - Format clobberer 
helper.
 lib/autodie/t/lib/pujHa/ghach/Dotlh.pm autodie - With Klingon honour
 lib/autodie/t/lib/pujHa/ghach.pm       autodie - Like a Klingon
-lib/autodie/t/lib/Some/Module.pm        autodie - blog_hints.t helper
+lib/autodie/t/lib/Some/Module.pm       autodie - blog_hints.t helper
 lib/autodie/t/mkdir.t                  autodie - filesystem tests
 lib/autodie/t/open.t                   autodie - Testing open
 lib/autodie/t/recv.t                   autodie - send/recv tests
 lib/autodie/t/repeat.t                 autodie - repeat autodie leak tests
 lib/autodie/t/scope_leak.t             autodie - file scope leak tests
-lib/autodie/t/string-eval-basic.t       autodie - Basic string eval test
-lib/autodie/t/string-eval-leak.t        autodie - String eval leak test
+lib/autodie/t/string-eval-basic.t      autodie - Basic string eval test
+lib/autodie/t/string-eval-leak.t       autodie - String eval leak test
 lib/autodie/t/sysopen.t                        autodie - sysopen tests
 lib/autodie/t/truncate.t               autodie - File truncation tests
 lib/autodie/t/unlink.t                 autodie - Unlink system tests.
@@ -2209,8 +2209,8 @@ lib/ExtUtils/MM_Win95.pm  MakeMaker methods for Win95
 lib/ExtUtils/MY.pm             MakeMaker user override class
 lib/ExtUtils/NOTES             Notes about MakeMaker internals
 lib/ExtUtils/Packlist.pm       Manipulates .packlist files
-lib/ExtUtils/ParseXS.pm                converts Perl XS code into C code
 lib/ExtUtils/ParseXS/Changes   ExtUtils::ParseXS change log
+lib/ExtUtils/ParseXS.pm                converts Perl XS code into C code
 lib/ExtUtils/ParseXS/t/basic.t See if ExtUtils::ParseXS works
 lib/ExtUtils/ParseXS/t/usage.t ExtUtils::ParseXS tests
 lib/ExtUtils/ParseXS/t/XSTest.pm       Test file for ExtUtils::ParseXS tests
@@ -2231,7 +2231,6 @@ lib/ExtUtils/t/Constant.t See if ExtUtils::Constant works
 lib/ExtUtils/t/cp.t            See if ExtUtils::Command works
 lib/ExtUtils/t/dir_target.t    Verify if dir_target() is supported
 lib/ExtUtils/t/Embed.t         See if ExtUtils::Embed and embedding works
-lib/ExtUtils/t/test_boilerplate.t MakeMaker test
 lib/ExtUtils/testlib.pm                Fixes up @INC to use just-built 
extension
 lib/ExtUtils/t/eu_command.t    See if ExtUtils::Command works
 lib/ExtUtils/t/FIRST_MAKEFILE.t                See if FIRST_MAKEFILE works
@@ -2240,7 +2239,7 @@ lib/ExtUtils/t/fix_libs.t Test for ExtUtils::MakeMaker
 lib/ExtUtils/t/hints.t         See if hint files are honored.
 lib/ExtUtils/t/Installapi2.t   See if new api for ExtUtils::Install::install() 
works
 lib/ExtUtils/t/INSTALL_BASE.t  Test INSTALL_BASE in MakeMaker
-lib/ExtUtils/t/installed_file.t Test for ExtUtils::MakeMaker
+lib/ExtUtils/t/installed_file.t        Test for ExtUtils::MakeMaker
 lib/ExtUtils/t/Installed.t     See if ExtUtils::Installed works
 lib/ExtUtils/t/Install.t       See if ExtUtils::Install works
 lib/ExtUtils/t/InstallWithMM.t See if ExtUtils::Install works (related to 
EUMM/t/basic.t)
@@ -2248,14 +2247,14 @@ lib/ExtUtils/t/INST_PREFIX.t    See if MakeMaker can 
apply PREFIXs
 lib/ExtUtils/t/INST.t          Check MakeMaker INST_* macros
 lib/ExtUtils/t/is_of_type.t    Test for ExtUtils::MakeMaker
 lib/ExtUtils/t/Liblist.t       See if ExtUtils::Liblist works
+lib/ExtUtils/t/MakeMaker_Parameters.t  test "MakeMaker Parameters" section
 lib/ExtUtils/t/make.t          See if make detection works
-lib/ExtUtils/t/MakeMaker_Parameters.t  test "MakeMaker Parameters" section
 lib/ExtUtils/t/maketext_filter.t       See if maketext_filter works
 lib/ExtUtils/t/Manifest.t      See if ExtUtils::Manifest works
 lib/ExtUtils/t/metafile_data.t See if META.yml handling works
 lib/ExtUtils/t/metafile_file.t See if META.yml handling works
-lib/ExtUtils/t/min_perl_version.t      Test the MIN_PERL_VERSION argument to 
WriteMakefile.
 lib/ExtUtils/t/miniperl.t      Test MakeMaker with miniperl
+lib/ExtUtils/t/min_perl_version.t      Test the MIN_PERL_VERSION argument to 
WriteMakefile.
 lib/ExtUtils/t/Mkbootstrap.t   See if ExtUtils::Mkbootstrap works
 lib/ExtUtils/t/MM_Any.t                See if ExtUtils::MM_Any works
 lib/ExtUtils/t/MM_BeOS.t       See if ExtUtils::MM_BeOS works
@@ -2282,6 +2281,7 @@ lib/ExtUtils/t/prompt.t           See if E::MM::prompt() 
works
 lib/ExtUtils/t/recurs.t                See if recursive builds work
 lib/ExtUtils/t/revision.t      See if $Revision is correct
 lib/ExtUtils/t/split_command.t See if MM's xargs-like function works
+lib/ExtUtils/t/test_boilerplate.t      MakeMaker test
 lib/ExtUtils/t/testdata/reallylongdirectoryname/arch1/Config.pm                
test data for MakeMaker
 lib/ExtUtils/t/testdata/reallylongdirectoryname/arch2/Config.pm                
test data for MakeMaker
 lib/ExtUtils/t/testlib.t       See if ExtUtils::testlib works
@@ -3777,9 +3777,12 @@ Porting/how_to_write_a_perldelta.pod     Bluffer's guide 
to writing a perldelta.
 Porting/Maintainers    Program to pretty print info in Maintainers.pl
 Porting/Maintainers.pl Information about maintainers
 Porting/Maintainers.pm Library to pretty print info in Maintainers.pl
+Porting/make_dot_patch.pl      Make a .patch file from a git WD
 Porting/makemeta       Create the top-level META.yml
 Porting/makerel                Release making utility
+Porting/make_snapshot.pl       Make a tgz snapshot of our tree with a .patch 
file in it
 Porting/manicheck      Check against MANIFEST
+Porting/manisort       Sort the MANIFEST
 Porting/mergelog       log of merges from bleed to maint
 Porting/mergelog-tool  tool to process mergelog
 Porting/podtidy                Reformat pod using Pod::Tidy
@@ -4037,14 +4040,15 @@ t/lib/h2ph.h                    Test header file for 
h2ph
 t/lib/h2ph.pht                 Generated output from h2ph.h by h2ph, for 
comparison
 t/lib/locale/latin1            Part of locale.t in Latin 1
 t/lib/locale/utf8              Part of locale.t in UTF8
+t/lib/MakeMaker/Test/NoXS.pm           MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/BFD.pm      MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/MPV.pm      MakeMaker test utilities
-t/lib/MakeMaker/Test/NoXS.pm           MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/PL_FILES.pm MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/Problem.pm  MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/Recurs.pm   MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/XS.pm       MakeMaker test utilities
 t/lib/MakeMaker/Test/Utils.pm  MakeMaker test utilities
+t/lib/manifest.t               Test that this MANIFEST file is well formed
 t/lib/Math/BigFloat/Subclass.pm        Empty subclass of BigFloat for test
 t/lib/Math/BigInt/BareCalc.pm  Bigint's simulation of Calc
 t/lib/Math/BigInt/Scalar.pm    Pure Perl module to support Math::BigInt
diff --git a/Makefile.SH b/Makefile.SH
index be12524..12d84ff 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -1160,8 +1160,8 @@ regen_all: regen
 .PHONY:        manisort manicheck
 
 manisort:      FORCE
-       LC_ALL=C sort -fdc MANIFEST || (echo "WARNING: re-sorting MANIFEST"; \
-               LC_ALL=C sort -fdo MANIFEST MANIFEST)
+       @perl Porting/manisort -q || (echo "WARNING: re-sorting MANIFEST"; \
+               perl Porting/manisort -q -o MANIFEST; sh -c true)
 
 manicheck:     FORCE
        perl Porting/manicheck
diff --git a/Porting/bump-perl-version b/Porting/bump-perl-version
index c84d18d..efd4433 100755
--- a/Porting/bump-perl-version
+++ b/Porting/bump-perl-version
@@ -183,10 +183,14 @@ my %SKIP_FILES = map { ($_ => 1) } qw(
     Changes
     MANIFEST
     Porting/how_to_write_a_perldelta.pod
+    Porting/release_managers_guide.pod
     Porting/bump-perl-version
     Porting/mergelog
     Porting/mergelog-tool
     pod.lst
+    pp_ctl.c
+    README.haiku
+    README.vms
 );
 my @SKIP_DIRS = qw(
     ext
diff --git a/Porting/make_dot_patch.pl b/Porting/make_dot_patch.pl
new file mode 100755
index 0000000..6d2767c
--- /dev/null
+++ b/Porting/make_dot_patch.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# This is a quickie script which I wrote to generate the .patch file for
+# an arbitrary commit. It takes on sha1 as an argument, or saving that
+# uses the sha1 associated to HEAD.
+# It tries to find which of our primary branches the sha1 can be found on,
+# and then prints to standard out something similar to what our rsync feed
+# would produce for that situation. The main difference being, in that case
+# we KNOW what branch we are on, and in this one we dont, and in that case
+# the $tstamp field holds the time the snapshot was generated (so that multiple
+# fetches will always have an increasing tstamp field), however in this case
+# we use the commit date of the sha1.
+#
+# This is more or less intended to be used as a utility to generated .patch
+# files for other processes, like gitweb and snapshots.
+#
+# The script assumes it is being run from a git WD.
+#
+# Yves
+
+use POSIX qw(strftime);
+sub isotime { strftime "%Y-%m-%d.%H:%M:%S",gmtime(shift||time) }
+
+my $sha1= shift || `git rev-parse HEAD`;
+chomp($sha1);
+my @branches=(
+          'origin/blead',
+          'origin/maint-5.10',
+          'origin/maint-5.8',
+          'origin/maint-5.8-dor',
+          'origin/maint-5.6',
+          'origin/maint-5.005',
+          'origin/maint-5.004',
+);
+my $branch;
+foreach my $b (@branches) {
+    $branch= $b and last 
+        if `git log --pretty='format:%H' $b | grep $sha1`;
+}
+
+$branch ||= "unknown-branch";
+my $tstamp= isotime(`git log -1 --pretty="format:%ct" $sha1`);
+chomp(my $describe= `git describe`);
+print join(" ", $branch, $tstamp, $sha1, $describe) . "\n";
+
diff --git a/Porting/make_snapshot.pl b/Porting/make_snapshot.pl
new file mode 100755
index 0000000..70a4c3d
--- /dev/null
+++ b/Porting/make_snapshot.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use File::Path;
+use Cwd;
+
+# This is a quick and dirty snapshot generator for the perl5.git.perl.org web 
page
+# to use to generate the snapshot files. Yes it is ugly and contains hard 
coded crap
+# and could use some love. But for this todo I am out of time now. -- Yves
+
+$ENV{PATH}="/usr/local/bin:/bin/";
+
+use POSIX qw(strftime);
+sub isotime { strftime "%Y-%m-%d.%H:%M:%S",gmtime(shift||time) }
+
+my ($abbr,$sha1,$tstamp);
+$sha1= shift || "HEAD";
+my $zip_root= $ENV{PERL_SNAPSHOT_ZIP_ROOT} || "/gitcommon/snapshot/tgz";
+my $gitdir= shift || `git rev-parse --git-dir`
+    or die "Not a git repo!\n";
+chomp( $gitdir,$sha1);
+my $workdir= $gitdir;
+my $is_bare;
+if ( $workdir =~ s!/\.git\z!! ) {
+
+    chdir $workdir
+        or die "Failed to chdir to $workdir\n";
+} else {
+    $is_bare= 1;
+    chdir $workdir
+        or die "Failed to chdir to bare repo $workdir\n";
+}
+#'die $workdir;
+
+($sha1, $abbr,$tstamp)= split /\s+/, `git log --pretty='format:%H %h %ct' -1 
$sha1`
+    or die "Failed to parse '$sha1'\n";
+chomp($sha1,$abbr,$tstamp);
+
+#die "'$sha1','$abbr'\n";
+
+my $path= join "/", $zip_root, substr($sha1,0,2), substr($sha1,0,4);
+my $tar_file= "$sha1.tar.$$";
+my $gz_file= "$sha1.tar.gz";
+my $prefix= "perl-$abbr/";
+
+if (!-e "$path/$gz_file") {
+    mkpath $path if !-d $path;
+
+    system("git archive --format=tar --prefix=$prefix $sha1 > 
$path/$tar_file");
+    my @branches=map { $is_bare ? $_ : "origin/$_" } (
+              'blead',
+              'maint-5.10',
+              'maint-5.8',
+              'maint-5.8-dor',
+              'maint-5.6',
+              'maint-5.005',
+              'maint-5.004',
+    );
+    my $branch;
+    foreach my $b (@branches) {
+        $branch= $b and last
+            if `git log --pretty='format:%H' $b | grep $sha1`;
+    }
+
+    $branch ||= "unknown-branch";
+    chomp(my $describe= `git describe`);
+    chdir $path;
+    {
+        open my $fh,">","$path/$$.patch" or die "Failed to open $$.patch for 
writing\n";
+        print $fh join(" ", $branch, isotime($tstamp), $sha1, $describe) . 
"\n";
+        close $fh;
+    }
+    system("tar -f $tar_file --transform='s,^$$,$prefix,g' --owner=root 
--group=root --mode=664 --append $$.patch");
+    unlink "$$.patch";
+    system("gzip -S .gz -9 $tar_file");
+    rename "$tar_file.gz", "$gz_file";
+}
+print "ok\tperl-$abbr.tar.gz\t$path/$gz_file", -t STDOUT ? "\n" :"";
+
diff --git a/Porting/makerel b/Porting/makerel
index 8c9e9c1..b23e1c7 100644
--- a/Porting/makerel
+++ b/Porting/makerel
@@ -64,8 +64,15 @@ print "Cross-checking the MANIFEST...\n";
 ($missfile, $missentry) = fullcheck();
 @$missentry
     = grep {$_ !~ m!^\.git/! and $_ !~ m!(?:/|^)\.gitignore!} @$missentry;
-warn "Can't make a release with MANIFEST files missing.\n" if @$missfile;
-warn "Can't make a release with files not listed in MANIFEST.\n" if 
@$missentry;
+if (@$missfile ) {
+    warn "Can't make a release with MANIFEST files missing:\n";
+    warn "\t".$_."\n" for (@$missfile);
+}
+if (@$missentry ) {
+    warn "Can't make a release with files not listed in MANIFEST\n";
+    warn "\t".$_."\n" for (@$missentry);
+
+}
 if ("@$missentry" =~ m/\.orig\b/) {
     # Handy listing of find command and .orig files from patching work.
     # I tend to run 'xargs rm' and copy and paste the file list.
@@ -200,4 +207,11 @@ if ($opts{b}) {
 }
 
 print "\n";
-system("ls -ld $perl*");
+
+if (`which sha1`) {
+    system("sha1 $perl*.tar.*");
+} elsif (`which shasum`) {
+    system("shasum $perl*.tar.*");
+} else {
+    system("ls -ld $perl*");
+}
diff --git a/Porting/manisort b/Porting/manisort
new file mode 100644
index 0000000..1c02120
--- /dev/null
+++ b/Porting/manisort
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+# Usage:  manisort [-q] [-o outfile] [filename]
+#
+# Without 'filename', looks for MANIFEST in the current dir.
+# With '-o outfile', writes the sorted MANIFEST to the specified file.
+# Prints the result of the sort to stderr.  '-q' silences this.
+# The exit code for the script is the sort result status
+# (i.e., 0 means already sorted properly, 1 means not properly sorted)
+
+use strict;
+use warnings;
+$| = 1;
+
+# Get command line options
+use Getopt::Long;
+my $outfile;
+my $check_only = 0;
+my $quiet = 0;
+GetOptions ('output=s' => \$outfile,
+            'check'    => \$check_only,
+            'quiet'    => \$quiet);
+
+my $file = (@ARGV) ? shift : 'MANIFEST';
+
+# Read in the MANIFEST file
+open(my $IN, '<', $file)
+    or die("Can't read '$file': $!");
+my @manifest = <$IN>;
+close($IN) or die($!);
+chomp(@manifest);
+
+# Sort by dictionary order (ignore-case and
+#   consider whitespace and alphanumeric only)
+my @sorted = sort {
+                      (my $aa = $a) =~ s/[^\s\da-zA-Z]//g;
+                      (my $bb = $b) =~ s/[^\s\da-zA-Z]//g;
+                      uc($aa) cmp uc($bb)
+                  } @manifest;
+
+# Check if the file is sorted or not
+my $exit_code = 0;
+for (my $ii = 0; $ii < $#manifest; $ii++) {
+    next if ($manifest[$ii] eq $sorted[$ii]);
+    $exit_code = 1;   # Not sorted
+    last;
+}
+
+# Output sorted file
+if (defined($outfile)) {
+    open(my $OUT, '>', $outfile)
+        or die("Can't open output file '$outfile': $!");
+    print($OUT join("\n", @sorted), "\n");
+    close($OUT) or die($!);
+}
+
+# Report on sort results
+printf(STDERR "'$file' is%s sorted properly\n",
+            (($exit_code) ? ' NOT' : '')) if (! $quiet);
+
+# Exit with the sort results status
+exit($exit_code);
+
+# EOF
diff --git a/Porting/release_managers_guide.pod 
b/Porting/release_managers_guide.pod
index 3a91c9e..2896716 100644
--- a/Porting/release_managers_guide.pod
+++ b/Porting/release_managers_guide.pod
@@ -36,7 +36,7 @@ The outline of a typical release cycle is as follows:
        including bumping the version to 5.10.2
 
     ...a few weeks passes...
-    
+
     perl-5.10.2-RC1 is released
 
     perl-5.10.2 is released
@@ -65,21 +65,37 @@ state of VMS. If it's bad, think again.
 
 =item *
 
+Configure and build perl so that you have a Makefile and porting tools:
+
+    $ ./Configure -Dusedevel -des
+    $ make
+
+=item *
+
 Rebuild META.yml:
 
     $ rm META.yml
     $ make META.yml
 
-and commit it if it's changed.
+Commit META.yml if it has changed:
+
+    $ git commit -m 'Updating META.yml in preparation for release of 5.x.y' 
META.yml
 
 =item *
 
 Check that the manifest is sorted and correct:
 
+    $ make manisort
     $ make distclean 
-    $ perl Porting/manisort
     $ perl Porting/manicheck
 
+
+Commit MANIFEST if it has changed:
+
+    $ git commit -m 'Updating MANIFEST in preparation for release of 5.x.y' 
MANIFEST
+
+
+
 =item *
 
 If this is a release candidate or final release, add an entry to
@@ -94,12 +110,16 @@ append your name to C<THE KEEPERS OF THE PUMPKIN>.
 
 Build perl, then make sure it passes its own test suite, and installs.
 
+    $ ./Configure -des -Dusedevel -Dprefix=/tmp/perl-5.x.y-pretest
+    $ make test install
+
 =item *
 
 Create a tarball. Use the C<-s> option to specify a suitable suffix for
 the tarball and directory name:
 
     $ cd root/of/perl/tree
+    $ make distclean
     $ git clean -xdf           #  make sure perl and git agree on files
 
     $ perl Porting/makerel -b -s `git describe` # for a snapshot
@@ -121,12 +141,15 @@ have access to.
 
 =item *
 
-Download the tarball to some other machine (for a release candidate, to
-two or more servers: IRC is good for this).
+Download the tarball to some other machine. For a release candidate, 
+you really want to test your tarball on two or more different platforms
+and architectures. The #p5p IRC channel on irc.perl.org is a good place
+to find willing victims.
 
 =item *
 
-Check that C<./Configure -des && make all test> works in one place.
+Check that C<./Configure -des && make all test> works on each test
+machine.
 
 =item *
 
@@ -136,7 +159,9 @@ Check that C<./Configure ... && make all test_harness 
install> works.
 
 Check that the output of C<perl -v> and C<perl -V> are as expected,
 especially as regards version numbers, patch and/or RC levels, and @INC
-paths. Note that the results may be different without a F<.git/> directory,
+paths. 
+
+Note that the results may be different without a F<.git/> directory,
 which is why you should test from the tarball.
 
 =item *
@@ -145,15 +170,13 @@ Bootstrap the CPAN client on the clean install.
 
 =item *
 
-Install CPANPLUS.
-XXX pick something new; this is now bundled
+Install Inline.pm 
 
-=begin suggestion
+  perl -MCPAN -e'install Inline'
 
-How about Inline. Install it, and then check that your perl can run this:
-  perl -lwe 'use Inline C => "int answer() { return 42;} "; print answer'
+Check that your perl can run this:
 
-=end
+  perl -lwe 'use Inline C => "int answer() { return 42;} "; print answer'
 
 =item *
 
diff --git a/hints/bsdos.sh b/hints/bsdos.sh
index ab56f99..65eaf7f 100644
--- a/hints/bsdos.sh
+++ b/hints/bsdos.sh
@@ -120,7 +120,7 @@ cat > UU/usethreads.cbu <<'EOCBU'
 case "$usethreads" in
 $define|true|[yY]*)
        case "$osvers" in 
-       3.*|4.*)        ccflags="-D_REENTRANT $ccflags" 
+       3.*|4.*)        ccflags="-D_REENTRANT -D_THREAD_SAFE -pthread $ccflags"
            ;;
        *)   cat <<EOM >&4
 I did not know that BSD/OS $osvers supports POSIX threads.
diff --git a/pod/perlrepository.pod b/pod/perlrepository.pod
index f961acf..0ab8a71 100644
--- a/pod/perlrepository.pod
+++ b/pod/perlrepository.pod
@@ -15,10 +15,10 @@ system we were using previously. This repository is 
accessible in
 different ways.
 
 The full repository takes up about 80MB of disk space. A check out of
-the blead branch (that is, the master branch, which contains bleadperl,
-the development version of perl 5) takes up about 160MB of disk space
-(including the repository). A build of bleadperl takes up about 200MB
-(including the repository and the check out).
+the blead branch (that is, the main development branch, which contains
+bleadperl, the development version of perl 5) takes up about 160MB of
+disk space (including the repository). A build of bleadperl takes up
+about 200MB (including the repository and the check out).
 
 =head1 GETTING ACCESS TO THE REPOSITORY
 
@@ -98,13 +98,14 @@ to push your changes back with the C<camel> remote:
 The C<fetch> command just updates the C<camel> refs, as the objects
 themselves should have been fetched when pulling from C<origin>.
 
-The committers have access to 2 servers that serve perl5.git.perl.org. One is
-camel.booking.com, which is the 'master' repository. The perl5.git.perl.org IP
-address also lives on this machine. The second one is dromedary.booking.com,
-which can be used for general testing and development. Dromedary syncs the git
-tree from camel every few minutes, you should not push there. Both machines
-also have a full CPAN mirror. To share files with the general public, dromedary
-serves your ~/public_html/ as http://users.perl5.git.perl.org/~yourlogin/
+The committers have access to 2 servers that serve perl5.git.perl.org.
+One is camel.booking.com, which is the 'master' repository. The
+perl5.git.perl.org IP address also lives on this machine. The second
+one is dromedary.booking.com, which can be used for general testing and
+development. Dromedary syncs the git tree from camel every few minutes,
+you should not push there. Both machines also have a full CPAN mirror.
+To share files with the general public, dromedary serves your
+~/public_html/ as http://users.perl5.git.perl.org/~yourlogin/
 
 =head1 OVERVIEW OF THE REPOSITORY
 
@@ -256,10 +257,11 @@ that you're on the I<blead> branch, and your repository 
is up to date:
   % git checkout blead
   % git pull
 
-(It's preferable to patch against the latest blead version, since
-patches are usually integrated from blead to the maintenance branches.
-This does not apply, obviously, in the rare case where your patch is
-specific to a maintaince release.)
+It's preferable to patch against the latest blead version, since this
+is where new development occurs for all changes other than critical bug
+fixes.  Critical bug fix patches should be made against the relevant
+maint branches, or should be submitted with a note indicating all the
+branches where the fix should be applied.
 
 Now that we have everything up to date, we need to create a temporary
 new branch for these changes and switch into it:
@@ -665,6 +667,8 @@ And then push back to the repository:
 
 =head1 COMMITTING TO MAINTENANCE VERSIONS
 
+Maintenance versions should only be altered to add critical bug fixes.
+
 To commit to a maintenance version of perl, you need to create a local
 tracking branch:
 
diff --git a/t/lib/manifest.t b/t/lib/manifest.t
new file mode 100644
index 0000000..377f666
--- /dev/null
+++ b/t/lib/manifest.t
@@ -0,0 +1,52 @@
+#!./perl -w
+
+# Test the well-formed-ness of the MANIFEST file.
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+}
+
+use strict;
+use File::Spec;
+require './test.pl';
+
+plan('no_plan');
+
+my $manifest = File::Spec->catfile(File::Spec->updir(), 'MANIFEST');
+
+open my $m, '<', $manifest or die "Can't open '$manifest': $!";
+
+# Test that MANIFEST uses tabs - not spaces - after the name of the file.
+while (<$m>) {
+    chomp;
+    next unless /\s/;   # Ignore lines without whitespace (i.e., filename only)
+    my ($file, $separator) = /^(\S+)(\s+)/;
+    isnt($file, undef, "Line $. doesn't start with a blank") or next;
+    if ($separator !~ tr/\t//c) {
+       # It's all tabs
+       next;
+    } elsif ($separator !~ tr/ //c) {
+       # It's all spaces
+       fail("Spaces in entry for $file");
+    } elsif ($separator =~ tr/\t//) {
+       fail("Mixed tabs and spaces in entry for $file");
+    } else {
+       fail("Odd whitespace in entry for $file");
+    }
+}
+
+close $m or die $!;
+
+# Test that MANIFEST is properly sorted
+SKIP: {
+    skip("'Porting/manisort' not found", 1) if (! -f '../Porting/manisort');
+
+    my $result = runperl('progfile' => '../Porting/manisort',
+                         'args'     => [ '-c', '../MANIFEST' ],
+                         'stderr'   => 1);
+
+    like($result, qr/is sorted properly/, 'MANIFEST sorted properly');
+}
+
+# EOF

--
Perl5 Master Repository

Reply via email to