This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Point out CoreList's CAVEATS section is in CoreList.pod
[perl5.git] / Porting / release_managers_guide.pod
index 7e84b6d..a1680ec 100644 (file)
@@ -142,6 +142,13 @@ Make sure that search.cpan.org knows that you're allowed to upload
 perl distros. Contact Graham Barr to make sure that you're on the right
 list.
 
+=head3 rt.perl.org update access
+
+Make sure you have permission to close tickets on L<http://rt.perl.org/>
+so you can respond to bug report as necessary during your stint.  If you
+don't, make an account (if you don't have one) and contact the pumpking
+with your username to get ticket-closing permission.
+
 =head3 git checkout and commit bit
 
 You will need a working C<git> installation, checkout of the perl
@@ -170,10 +177,10 @@ to use as an epigraph to your release announcement.
 
 =head2 Building a release - advance actions
 
-The work of building a release candidate for a numbered release of
-perl generally starts several weeks before the first release candidate.
-Some of the following steps should be done regularly, but all I<must> be
-done in the run up to a release.
+The work of building a release candidate for an even numbered release
+(BLEAD-FINAL) of perl generally starts several weeks before the first
+release candidate.  Some of the following steps should be done regularly,
+but all I<must> be done in the run up to a release.
 
 =head3 dual-life CPAN module synchronisation
 
@@ -198,6 +205,92 @@ necessary, fix things up. For example, you might think that both blead
 and maint are synchronised with a particular CPAN module, but one might
 have some extra changes. 
 
+=head3 How to sync a CPAN module with a cpan/ distro
+
+=over 4
+
+=item *
+
+Fetch the most recent version from CPAN.
+
+=item *
+
+Unpack the retrieved tarball. Rename the old directory; rename the new
+directory to the original name.
+
+=item *
+
+Restore any F<.gitignore> file. This can be done by issueing 
+C<git checkout .gitignore> in the F<cpan/Distro> directory.
+
+=item *
+
+Remove files we do not need. That is, remove any files that match the
+entries in C<@IGNORE> in F<Porting/Maintainer.pl>, and anything that 
+matches the C<EXCLUDED> section of the distro's entry in the C<%Modules>
+hash.
+
+=item *
+
+Restore any files mentioned in the C<CUSTOMIZED> section, using
+C<git checkout>. Make any new customizations if necessary. Also,
+restore any files that are mentioned in C<@IGNORE>, but were checked
+in in the repository anyway.
+
+=item *
+
+For any new files in the distro, determine whether they are needed.
+If not, delete them, and list them in either C<EXCLUDED> or C<@INGORE>.
+Otherwise, add them to C<MANIFEST>, and run C<git add> to add the files
+to the repository.
+
+=item *
+
+For any files that are gone, remove them from C<MANIFEST>, and use
+C<git rm> to tell git the files will be gone.
+
+=item *
+
+If the C<MANIFEST> file was changed in any of the previous steps, run
+C<perl Porting/manisort --output MANIFEST.sort; mv MANIFEST.sort MANIFEST>.
+
+=item *
+
+For any files that have an execute bit set, either remove the execute
+bit, or edit F<Porting/exec-bit.txt>
+
+=item *
+
+Run C<make>, see if C<perl> compiles.
+
+=item *
+
+Run the tests for the package.
+
+=item *
+
+Run the tests in F<t/porting>.
+
+=item *
+
+Update the C<DISTRIBUTION> entry in F<Porting/Maintainers.pl>.
+
+=item *
+
+Run a full configure/build/test cycle.
+
+=item *
+
+If everything is ok, commit the changes.
+
+=back
+
+For entries with a non-simple C<FILES> section, or with a C<MAP>, you
+may have to take more steps than listed above.
+
+F<Porting/sync-with-cpan> is a script that automates most of the steps
+above; but see the comments at the beginning of the file.
+
 
 =head3 dual-life CPAN module stability
 
@@ -513,6 +606,8 @@ Update this version's entry in the C<%released> hash with today's date.
 =item *
 
 Make sure that the script has correctly updated the C<CAVEATS> section
+(Note, the C<CAVEATS> section is in
+F<dist/Module-CoreList/lib/Module/CoreList.pod>)
 
 =back
 
@@ -522,7 +617,7 @@ Finally, commit the new version of Module::CoreList:
 (unless this is for MAINT; in which case commit it to blead first, then
 cherry-pick it back).
 
-    $ git commit -m 'Update Module::CoreList for 5.x.y' dist/Module-CoreList/lib/Module/CoreList.pm
+    $ git commit -m 'Update Module::CoreList for 5.x.y' dist/Module-CoreList/lib/Module/CoreList.pm dist/Module-CoreList/lib/Module/CoreList.pod
 
 =for checklist skip RC
 
@@ -1116,7 +1211,7 @@ It should be visible at a URL like C<http://search.cpan.org/dist/perl-5.10.1/>.
 
 I<You MUST SKIP this step for a RC release>
 
-In the C<perlorg> repository, edit C<docs/dev/perl5/index.html>
+In the C<perlorg> repository, edit F<docs/dev/perl5/index.html>
 to link to this new release. Then make a pull request to Leo Lapworth.
 If this fails for some reason and you cannot cajole anybody else into
 submitting that change, you can mail Leo as last resort.