This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Data::Dumper to 2.128
[perl5.git] / Porting / release_managers_guide.pod
index 2351197..add7a5a 100644 (file)
@@ -45,7 +45,7 @@ The outline of a typical release cycle is as follows:
     perl-5.10.2 is released
 
     post-release actions are performed, including creating new
-       perl5103delta.pod
+       perldelta.pod
 
     ... the cycle continues ...
 
@@ -314,8 +314,12 @@ this line in README.vms needs special handling:
 
     rename perl-5^.10^.1.dir perl-5_10_1.dir
 
-Also be careful of F<Porting/epigraphs.pod>, which has legacy version
-numbers that should not get changed.
+When doing a blead release, also make sure the C<PERL_API_*> constants in
+F<patchlevel.h> are in sync with the with the version you're releasing, unless
+you're absolutely sure the release you're about to make is 100% binary
+compatible to an earlier release. When releasing a stable perl version, the
+C<PERL_API_*> constants C<MUST NOT> be changed as we aim to guarantee binary
+compatibility in maint branches.
 
 Commit your changes:
 
@@ -336,6 +340,11 @@ I<You MUST SKIP this step for SNAPSHOT>
 Review and update INSTALL to account for the change in version number;
 in particular, the "Coexistence with earlier versions of perl 5" section.
 
+Be particularly careful with the section "Upgrading from 5.X.Y or earlier". For
+stable releases, this needs to refer to the last release in the previous
+development cycle. For blead releases, it needs to refer to the previous blead
+release.
+
 =item *
 
 I<You MUST SKIP this step for SNAPSHOT>
@@ -404,26 +413,35 @@ of I<advance actions>, do that now.
 I<You MAY SKIP this step for SNAPSHOT>
 
 Finalize the perldelta.  In particular, fill in the Acknowledgements
-section.
+section.  You can generate a list of contributors with checkAUTHORS.pl.
+For example:
+
+  $ git log --pretty=fuller v5.13.2..HEAD | \
+    perl Porting/checkAUTHORS.pl --who -
 
 Re-read the perldelta to try to find any embarrassing typos and thinkos;
 remove any C<TODO> or C<XXX> flags; update the "Known Problems" section
 with any serious issues for which fixes are not going to happen now; and
 run through pod and spell checkers, e.g.
 
-    $ podchecker -warnings -warnings pod/perl5101delta.pod
-    $ spell pod/perl5101delta.pod
+    $ podchecker -warnings -warnings pod/perldelta.pod
+    $ spell pod/perldelta.pod
 
 Also, you may want to generate and view an HTML version of it to check
 formatting, e.g.
 
-    $ perl pod/pod2html pod/perl5101delta.pod > /tmp/perl5101delta.html
+    $ perl pod/pod2html pod/perldelta.pod > /tmp/perldelta.html
+
+Another good HTML preview option is http://search.cpan.org/pod2html
+
+If you make changes, be sure to commit them.
 
 =item *
 
 Make sure you have a gitwise-clean perl directory (no modified files,
 unpushed commits etc):
 
+    $ git clean -dxf
     $ git status
 
 =item *
@@ -448,15 +466,18 @@ re-make perl to check that it's okay, then commit the updated versions:
 
     $ git commit -a -m 'make regen; make regen_perly'
 
+(XXX regen might be a problem depending on the bison version available.
+We need to get a wizard to give better instructions on what to do or not do.)
+
 =item *
 
 I<You MUST SKIP this step for SNAPSHOT>
 
-Update C<Module::Corelist> with module version data for the new release.
+Update C<Module::CoreList> with module version data for the new release.
 
 Note that if this is a maint release, you should run the following actions
-from the maint directory, but commit the C<Corelist.pm> changes in
-I<blead> and subsequently cherry-pick it.
+from the maint branch, but commit the C<CoreList.pm> changes in
+I<blead> and subsequently cherry-pick it.  XXX need a better example
 
 F<corelist.pl> uses ftp.funet.fi to verify information about dual-lived
 modules on CPAN. It can use a full, local CPAN mirror or fall back
@@ -469,7 +490,7 @@ http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN)
 
 Then change to your perl checkout, and if necessary,
 
-    $ make perl
+    $ make
 
 If this not the first update for this version (e.g. if it was updated
 when the version number was originally bumped), first edit
@@ -562,7 +583,7 @@ Be sure to commit your changes:
 
 =item *
 
-I<You MUST SKIP this step for SNAPSHOT>
+I<You MUST SKIP this step for SNAPSHOT or BLEAD release>
 
 Update F<patchlevel.h> to add a C<-RC1>-or-whatever string; or, if this is
 a final release, remove it. For example:
@@ -601,11 +622,6 @@ Then delete the temporary installation.
 
 =item *
 
-If this is maint release, make sure F<Porting/mergelog> is saved and
-committed.
-
-=item *
-
 Push all your recent commits:
 
     $ git push origin ....
@@ -825,9 +841,14 @@ may need to contact a PAUSE administrator or even bump the version of perl.
 Upload both the .gz and .bz2 versions of the tarball.
 
 Wait until you receive notification emails from the PAUSE indexer
-confirming that your uploads have been successfully indexed.  Do not
-proceed any further until you are sure that the indexing of your uploads
-has been successful.
+confirming that your uploads have been received.  IMPORTANT -- you will
+probably get an email that indexing has failed (due to dual-life modules,
+apparently).  This is considered normal.
+
+Do not proceed any further until you are sure that your tarballs are on
+CPAN.  Check your authors directory on one of the "fast" CPAN mirrors
+(e.g.  cpan.shadowcatprojects.net, cpan.dagolden.com, cpan.hexten.net
+or cpan.cpantesters.org) to confirm that your uploads have been successful.
 
 =item *
 
@@ -890,38 +911,41 @@ to CPAN.
 
 I<You MUST SKIP this step for RC>
 
-Bump the perlXYZdelta version number.
+Create a new perldelta.
 
-First, create a new empty perlNNNdelta.pod file for the current release + 1;
-see F<Porting/how_to_write_a_perldelta.pod>.
+First, move the existing F<pod/perldelta.pod> to F<pod/perlNNNdelta.pod> (where
+NNN is the perl version number without the dots. i.e. 5134 for 5.13.4).
 
-You should be able to do this by just copying in a skeleton template and
-then doing a quick fix up of the version numbers, e.g.
+Now edit the moved delta file to change the C<NAME> from C<perldelta> to
+C<perlNNNdelta>.
 
-Then commit this file.  (If this new perldelta needs to get cherrypicked
-anywhere, this provides a clean base to merge from.)
+Then create a new empty perldelta.pod file for the new release; see
+F<Porting/how_to_write_a_perldelta.pod>.
 
-For example, assuming 5.10.2:
+You should be able to do this by just copying in a skeleton template and
+then doing a quick fix up of the version numbers, e.g.
 
-    $ cp -i Porting/perldelta_template.pod pod/perl5102delta.pod
-    $ (edit it)
-    $ git add pod/perl5102delta.pod
-    $ git commit -m 'create perl5102delta'
+Then commit the move and the new file.
 
-Edit the previous delta file to change the C<NAME> from C<perldelta>
-to C<perlNNNdelta> and commit it.  For example:
+For example, assuming you just released 5.10.1:
 
+    $ git mv pod/perldelta.pod pod/perl5101delta.pod
+    $ (edit pod/perl5101delta.pod to retitle)
     $ git add pod/perl5101delta.pod
-    $ git commit -m 'retitle perl5101delta'
+
+    $ cp -i Porting/perldelta_template.pod pod/perldelta.pod
+    $ (edit pod/perldelta.pod)
+    $ git add pod/perldelta.pod
+    $ git commit -m 'create perldelta for 5.10.2'
 
 Now you need to update various tables of contents, most of which can be
 generated automatically.
 
-Edit F<pod.lst>: add the new entry, flagged as 'D', and unflag the previous
-entry from being 'D'; for example:
+Edit F<pod.lst>: add the new entry, flagged as 'd', and unflag the previous
+entry from being 'd'; for example:
 
-    -D perl5101delta                Perl changes in version 5.10.1
-    +D perl5102delta                Perl changes in version 5.10.2
+    -d perl5101delta                Perl changes in version 5.10.1
+    +d perl5102delta                Perl changes in version 5.10.2
     +  perl5101delta                Perl changes in version 5.10.1
 
 Run C<perl pod/buildtoc --build-all> to update the F<perldelta> version in
@@ -939,33 +963,20 @@ the following files:
 Then manually edit (F<vms/descrip_mms.template> to bump the version
 in the following entry:
 
-    [.pod]perldelta.pod : [.pod]perl5101delta.pod
+    [.pod]perl5101delta.pod : [.pod]perldelta.pod
 
 XXX this previous step needs to fixed to automate it in pod/buildtoc.
 
-Manually update references to the perlNNNdelta version in these files:
-
-    INSTALL
-    README
-
-These two lists of files probably aren't exhaustive; do a recursive grep
-on the previous filename to look for suitable candidates that may have
-been missed.
-
 Finally, commit:
 
-    $ git commit -a -m 'update TOC and perldelta references'
+    $ git commit -a -m 'update TOC for perlNNNdelta'
 
 At this point you may want  to compare the commit with a previous bump to
 see if they look similar. See commit ca8de22071 for an example of a
 previous version bump.
 
-=item *
-
-I<You MUST SKIP this step for RC, BLEAD>
-
-If this was a maint release, then edit F<Porting/mergelog> to change
-all the C<d> (deferred) flags to C<.> (needs review).
+XXX the commit uses the old perldelta naming scheme and we need to reference
+another one once this has been done with the scheme.
 
 =item *
 
@@ -988,10 +999,10 @@ Assuming you're using git 1.7.x or newer:
 
 I<You MUST SKIP this step for RC, BLEAD>
 
-Copy the perlNNNdelta.pod for this release into the other branches; for
+Copy the perldelta.pod for this release into the other branches; for
 example:
 
-    $ cp -i ../5.10.x/pod/perl5101delta.pod pod/    # for example
+    $ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod    # for example
     $ git add pod/perl5101delta.pod
 
 Edit F<pod.lst> to add an entry for the file, e.g.: