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
