This script is run as:
- perl Porting/make-rmg-checklist \
- --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.pod
+ perl Porting/make-rmg-checklist \
+ --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.pod
You can also pass the C<--html> flag to generate an HTML document instead of
POD.
- perl Porting/make-rmg-checklist --html \
- --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.html
+ perl Porting/make-rmg-checklist --html \
+ --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.html
=head1 SYNOPSIS
a few weeks before the release, a number of steps are performed,
including bumping the version to 5.10.2
- ...a few weeks passes...
+ ...a few weeks pass...
perl-5.10.2-RC1 is released
https://pause.perl.org/pause/query?ACTION=pause_04imprint
-=head3 search.cpan.org pumpkin status
-
-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/>
you into the idea in the first place to figure out the best way to
resolve the issue.
+=head3 web-based file share
+
+You will need to be able to share tarballs with #p5p members for
+pre-release testing, and you may wish to upload to PAUSE via URL.
+Make sure you have a way of sharing files, such as a web server or
+file-sharing service.
+
+Porters have access to the "dromedary" server (users.perl5.git.perl.org),
+which has a F<public_html> directory to share files with.
+(L<http://users.perl5.git.perl.org/~username/perl-5.xx.y.tar.gz>)
+
+If you use Dropbox, you can append "raw=1" as a parameter to their usual
+sharing link to allow direct download (albeit with redirects).
+
=head3 git clone of https://github.com/perlorg/perlweb
For updating the L<http://dev.perl.org> web pages, either a Github account or
sweet-talking somebody with a Github account into obedience is needed. This
is only needed on the day of the release or shortly afterwards.
-=for checklist skip RC
-
=head3 Quotation for release announcement epigraph
-I<SKIP this step for RC>
+You will need a quotation to use as an epigraph to your release announcement.
-For all except an RC release of perl, you will need a quotation
-to use as an epigraph to your release announcement.
+=head3 Install the previous version of perl
+
+During the testing phase of the release you have created, you will be
+asked to compare the installed files with a previous install. Save yourself
+some time on release day, and have a (clean) install of the previous
+version ready.
=head2 Building a release - advance actions
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
+=head3 How to sync a CPAN module with a cpanE<sol> distro
=over 4
=item *
Remove files we do not need. That is, remove any files that match the
-entries in C<@IGNORABLE> in F<Porting/Maintainer.pl>, and anything that
+entries in C<@IGNORABLE> in F<Porting/Maintainers.pl>, and anything that
matches the C<EXCLUDED> section of the distro's entry in the C<%Modules>
hash.
=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>.
+If not, delete them, and list them in either C<EXCLUDED> or C<@IGNORABLE>.
Otherwise, add them to C<MANIFEST>, and run C<git add> to add the files
to the repository.
=item *
-Run the tests in F<t/porting>.
+Run the tests in F<t/porting> (C<make test_porting>).
=item *
Ensure dual-life CPAN modules are stable, 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)
+ 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
+ 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)
+ 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)
=head3 monitor smoke tests for failures
Similarly, monitor the smoking of core tests, and try to fix. See
-L<http://doc.procura.nl/smoke/index.html> and L<http://perl5.test-smoke.org/>
-for a summary. See also
+L<http://smoke.procura.nl/index.html>, L<http://perl5.test-smoke.org/>
+and L<http://perl.develop-help.com> for a summary. See also
L<http://www.nntp.perl.org/group/perl.daily-build.reports/> which has
the raw reports.
Similarly, monitor the smoking of perl for compiler warnings, and try to
fix.
+=for checklist skip BLEAD-POINT
+
+=head3 monitor CPAN testers for failures
+
+For any release except a BLEAD-POINT: Examine the relevant analysis report(s)
+at http://analysis.cpantesters.org/beforemaintrelease to see how the impending
+release is performing compared to previous releases with regard to building
+and testing CPAN modules.
+
+That page accepts a query parameter, C<pair> that takes a pair of
+colon-delimited versions to use for comparison. For example:
+
+http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1
+
=head3 update perldelta
Get perldelta in a mostly finished state.
There is a tool to semi-automate this process:
- $ ./perl -Ilib Porting/bump-perl-version -i 5.10.0 5.10.1
+ $ ./perl -Ilib Porting/bump-perl-version -i 5.10.0 5.10.1
Remember that this tool is largely just grepping for '5.10.0' or whatever,
so it will generate false positives. Be careful not change text like
Be particularly careful with F<INSTALL>, which contains a mixture of
C<5.10.0>-type strings, some of which need bumping on every release, and
some of which need to be left unchanged.
-The line in F<INSTALL> about "is binary incompatible with" requires a
-correct choice of earlier version to declare incompatibility with.
+See below in L<"update INSTALL"> for more details.
+
+For the first RC release leading up to a BLEAD-FINAL release, update the
+description of which releases are now "officially" supported in
+F<pod/perlpolicy.pod>.
When doing a BLEAD-POINT or BLEAD-FINAL release, also make sure the
C<PERL_API_*> constants in F<patchlevel.h> are in sync with the version
This might not cause any new changes.
+You may also need to regen opcodes:
+
+ $ ./perl -Ilib regen/opcode.pl
+
Test your changes:
$ git clean -xdf # careful if you don't have local files to keep!
$ make
$ make test
+Do note that at this stage, porting tests will fail. They will continue
+to fail until you've updated Module::CoreList, as described below.
+
Commit your changes:
$ git status
=head3 update INSTALL
-Review and update INSTALL to account for the change in version number;
-in particular, the "Coexistence with earlier versions of perl 5" section.
+Review and update INSTALL to account for the change in version number.
+The lines in F<INSTALL> about "is not binary compatible with" may require a
+correct choice of earlier version to declare incompatibility with. These are
+in the "Changes and Incompatibilities" and "Coexistence with earlier versions
+of perl 5" sections.
Be particularly careful with the section "Upgrading from 5.X.Y or earlier".
The "X.Y" needs to be changed to the most recent version that we are
release, this would be 5.13.11).
For BLEAD-POINT releases, it needs to refer to the previous BLEAD-POINT
-release (so for 5.15.3 this would be 5.15.2).
+release (so for 5.15.3 this would be 5.15.2). If the last release manager
+followed instructions, this should have already been done after the last
+blead release, so you may find nothing to do here.
=head3 Check copyright years
Check that the copyright years are up to date by running:
- $ ./perl t/porting/copyright.t --now
+ $ ./perl t/porting/copyright.t --now
Remedy any test failures by editing README or perl.c accordingly (search for
the "Copyright"). If updating perl.c, check if the file's own copyright date in
BLEAD-FINAL, MAINT, and RC releases, since blead will already be frozen in
those cases. Create the branch by running
- git checkout -b release-5.xx.yy
+ git checkout -b release-5.xx.yy
=head3 build a clean perl
$ ./Configure -Dusedevel -des && make
+=head3 Check module versions
+
+For each Perl release since the previous release of the current branch, check
+for modules that have identical version numbers but different contents by
+running:
+
+ $ ./perl -Ilib Porting/cmpVERSION.pl --tag=v5.X.YY
+
+(This is done automatically by F<t/porting/cmp_version.t> for the previous
+release of the current branch, but not for any releases from other branches.)
+
+Any modules that fail will need a version bump, plus a nudge to the upstream
+maintainer for 'cpan' upstream modules.
+
=head3 update Module::CoreList
=head4 Bump Module::CoreList* $VERSIONs
-If necessary, bump C<$Module::CoreList::VERSION> (there's no need to do this for
-every RC; in RC1, bump the version to a new clean number that will
+If necessary, bump C<$Module::CoreList::VERSION> (there's no need to do this
+for every RC; in RC1, bump the version to a new clean number that will
appear in the final release, and leave as-is for the later RCs and final).
It may also happen that C<Module::CoreList> has been modified in blead, and
hence has a new version number already. (But make sure it is not the same
C<$Module::CoreList::VERSION>. If necessary, bump those two versions to match
before proceeding.
+The files to modify are:
+
+=over 4
+
+=item *
+
+F<dist/Module-CoreList/lib/Module/CoreList.pm>
+
+=item *
+
+F<dist/Module-CoreList/lib/Module/CoreList/Utils.pm>
+
+=item *
+
+F<dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm>
+
+=back
+
=head4 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
badly-indexed CPAN modules unrelated to the modules actually in core.
Assuming all goes well, it will update
F<dist/Module-CoreList/lib/Module/CoreList.pm> and possibly
-F<dist/Module-CoreList/lib/Module/CoreList.pod> and/or
F<dist/Module-CoreList/lib/Module/CoreList/Utils.pm>.
Check those files over carefully:
$ git diff dist/Module-CoreList/lib/Module/CoreList.pm
- $ git diff dist/Module-CoreList/lib/Module/CoreList.pod
$ git diff dist/Module-CoreList/lib/Module/CoreList/Utils.pm
=head4 Bump version in Module::CoreList F<Changes>
Also edit Module::CoreList's new version number in its F<Changes> file.
+This file is F<dist/Module-CoreList/Changes>.
=head4 Add Module::CoreList version bump to perldelta
-Add a perldelta entry for the new Module::CoreList version.
+Add a perldelta entry for the new Module::CoreList version. You only
+need to do this if you want to add notes about the changes included
+with this version of Module::CoreList. Otherwise, its version bump
+will be automatically filled in below in L<finalize perldelta>.
=for checklist skip RC
-=head4 Update C<%Module::CoreList::released> and C<CAVEATS>
+=head4 Update C<%Module::CoreList::released>
-In addition, if this is a final release (rather than a release candidate):
-
-=over 4
-
-=item *
-
-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
+For any release except an RC: Update this version's entry in the C<%released>
+hash with today's date.
=head4 Commit Module::CoreList changes
(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/Changes dist/Module-CoreList/lib/Module/CoreList.pm dist/Module-CoreList/lib/Module/CoreList.pod dist/Module-CoreList/lib/Module/CoreList/Utils.pm
+ $ git commit -m 'Update Module::CoreList for 5.x.y' \
+ dist/Module-CoreList/Changes \
+ dist/Module-CoreList/lib/Module/CoreList.pm \
+ dist/Module-CoreList/lib/Module/CoreList/Utils.pm
=head4 Rebuild and test
-Build and test to get the changes into the currently built lib directory and to ensure
-all tests are passing.
+Build and test to get the changes into the currently built lib directory and to
+ensure all tests are passing.
=head3 finalize perldelta
Finalize the perldelta. In particular, fill in the Acknowledgements
section, which can be generated with something like:
- $ perl Porting/acknowledgements.pl v5.15.0..HEAD
+ $ perl Porting/acknowledgements.pl v5.15.0..HEAD
+
+Fill in the "New/Updated Modules" sections now that Module::CoreList is
+updated:
+
+ $ ./perl -Ilib Porting/corelist-perldelta.pl \
+ --mode=update pod/perldelta.pod
-Fill in the "New/Updated Modules" sections now that Module::CoreList is updated:
+For a MAINT release use something like this instead:
- $ ./perl -Ilib Porting/corelist-perldelta.pl --mode=update pod/perldelta.pod
+ $ ./perl -Ilib Porting/corelist-perldelta.pl 5.020001 5.020002 \
+ --mode=update pod/perldelta.pod
Ideally, also fill in a summary of the major changes to each module for which
an entry has been added by F<corelist-perldelta.pl>.
Also, you may want to generate and view an HTML version of it to check
formatting, e.g.
- $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > /tmp/perldelta.html
+ $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > \
+ /tmp/perldelta.html
Another good HTML preview option is http://search.cpan.org/pod2html
For the first RC for a MAINT release, copy in the latest
F<pod/perlhist.pod> from blead; this will include details of newer
releases in all branches. In theory, blead's version should be a strict
-superset of the one in this branch, but it's probably safest to diff them
-first to ensure that there's nothing in this branch that was forgotten
-from blead:
-
- $ diff pod/perlhist.pod ..../blead/pod/perlhist.pod
- $ cp ..../blead/pod/perlhist.pod pod/
+superset of the one in this branch, but it's probably safest to examine the
+changes first, to ensure that there's nothing in this branch that was
+forgotten from blead. An easy way to do that is with C<< git checkout -p >>,
+to selectively apply any changes from the blead version to your current
+branch:
+
+ $ git fetch origin
+ $ git checkout -p origin/blead pod/perlhist.pod
$ git commit -m 'sync perlhist from blead' pod/perlhist.pod
-=for checklist skip RC
-
=head3 update perlhist.pod
-I<You MUST SKIP this step for a RC release>
-
Add an entry to F<pod/perlhist.pod> with the release date, e.g.:
David 5.10.1 2009-Aug-06
-Make sure that the correct pumpking is listed in the left-hand column, and
-if this is the first release under the stewardship of a new pumpking, make
-sure that his or her name is listed in the section entitled
-C<THE KEEPERS OF THE PUMPKIN>.
+List yourself in the left-hand column, and if this is the first release
+that you've ever done, make sure that your name is listed in the section
+entitled C<THE KEEPERS OF THE PUMPKIN>.
I<If you're making a BLEAD-FINAL release>, also update the "SELECTED
RELEASE SIZES" section with the output of
static const char * const local_patches[] = {
NULL
+ ,"RC1"
- PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */
+ #ifdef PERL_GIT_UNCOMMITTED_CHANGES
+ ,"uncommitted-changes"
+ #endif
Be sure to commit your change:
people a small amount of download time and disk space, which adds
up.
+In order to produce the C<xz> tarball, XZ Utils are required. The C<xz>
+utility is included with most modern UNIX-type operating systems and
+is available for Cygwin. A Windows port is available from
+L<http://tukaani.org/xz/>.
+
+B<IMPORTANT>: if you are on OS X, you must export C<COPYFILE_DISABLE=1>
+to prevent OS X resource files from being included in your tarball. After
+creating the tarball following the instructions below, inspect it to ensure
+you don't have files like F<._foobar>.
+
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
+ $ make distclean # make sure distclean works
$ git clean -xdf # make sure perl and git agree on files
+ # git clean should not output anything!
$ git status # and there's nothing lying around
- $ perl Porting/makerel -b -s RC1 # for a release candidate
- $ perl Porting/makerel -b # for a final release
+ $ perl Porting/makerel -bx -s RC1 # for a release candidate
+ $ perl Porting/makerel -bx # for the release itself
This creates the directory F<../perl-x.y.z-RC1> or similar, copies all
the MANIFEST files into it, sets the correct permissions on them, then
tars it up as F<../perl-x.y.z-RC1.tar.gz>. With C<-b>, it also creates a
-C<tar.bz2> file.
+C<tar.bz2> file. The C<-x> also produces a C<tar.xz> file.
If you're getting your tarball suffixed with -uncommitted and you're sure
your changes were all committed, you can override the suffix with:
=head4 Copy the tarball to a web server
-Copy the tarballs (.gz and possibly .bz2) to a web server somewhere you
+Copy the tarballs (.gz and possibly .bz2 and .xz) to a web server somewhere you
have access to.
-=head4 Download the tarball to another machine
+=head4 Download the tarball to another machine and unpack it
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.
+and architectures.
+
+=head4 Ask #p5p to test the tarball on different platforms
+
+Once you've verified the tarball can be downloaded and unpacked,
+ask the #p5p IRC channel on irc.perl.org for volunteers to test the
+tarballs on whatever platforms they can.
+
+If you're not confident in the tarball, you can defer this step until after
+your own tarball testing, below.
=head4 Check that F<Configure> works
$ ./Configure -des && make all test
+ # Or for a development release:
+ $ ./Configure -Dusedevel -des && make all test
+
=head4 Run the test harness and install
Check that the test harness and install work on each test machine:
- $ make distclean
- $ ./Configure -des -Dprefix=/install/path && make all test_harness install
- $ cd /install/path
+ $ make distclean
+ $ ./Configure -des -Dprefix=/install/path && make all test_harness install
+ $ cd /install/path
=head4 Check C<perl -v> and C<perl -V>
$ bin/cpan
+ # Or, perhaps:
+ $ bin/cpan5.xx.x
+
=head4 Install the Inline module with CPAN and test it
Try installing a popular CPAN module that's reasonably complex and that
has dependencies; for example:
- CPAN> install Inline
+ CPAN> install Inline::C
CPAN> quit
Check that your perl can run this:
new release from wherever you put it for testers to find it. This will
eliminate anxious gnashing of teeth while you wait to see if your
15 megabyte HTTP upload successfully completes across your slow, twitchy
-cable modem. You can make use of your home directory on dromedary for
+cable modem.
+
+You can make use of your home directory on dromedary for
this purpose: F<http://users.perl5.git.perl.org/~USERNAME> maps to
F</home/USERNAME/public_html>, where F<USERNAME> is your login account
-on dromedary. I<Remember>: if your upload is partially successful, you
+on dromedary.
+
+I<Remember>: if your upload is partially successful, you
may need to contact a PAUSE administrator or even bump the version of perl.
-Upload both the .gz and .bz2 versions of the tarball.
+Upload the .gz, .xz, and .bz2 versions of the tarball.
Do not proceed any further until you are sure that your tarballs are on CPAN.
Check your authors directory www.cpan.org (the globally balanced "fast"
static const char * const local_patches[] = {
NULL
- ,"RC1"
- PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */
+ #ifdef PERL_GIT_UNCOMMITTED_CHANGES
+ ,"uncommitted-changes"
+ #endif
Be sure to commit your change:
Merge the (local) release branch back into master now, and delete it.
- git checkout blead
- git pull
- git merge release-5.xx.yy
- git push
- git branch -d release-5.xx.yy
+ git checkout blead
+ git pull
+ git merge release-5.xx.yy
+ git push
+ git branch -d release-5.xx.yy
Note: The merge will create a merge commit if other changes have been pushed
to blead while you've been working on your release branch. Do NOT rebase your
=for checklist skip RC
+=head3 Release schedule
+
+I<You MUST SKIP this step for RC>
+
+Tick the entry for your release in F<Porting/release_schedule.pod>.
+
+=for checklist skip RC
+
=head3 Module::CoreList nagging
I<You MUST SKIP this step for RC>
After bumping the version, follow the section L<"update INSTALL"> to
ensure all version number references are correct.
+(Note: The version is NOT bumped immediately after a MAINT release in order
+to avoid confusion and wasted time arising from bug reports relating to
+"intermediate versions" such as 5.20.1-and-a-bit: If the report is caused
+by a bug that gets fixed in 5.20.2 and this intermediate version already
+calls itself 5.20.2 then much time can be wasted in figuring out why there
+is a failure from something that "should have been fixed". If the bump is
+late then there is a much smaller window of time for such confusing bug
+reports to arise. (The opposite problem -- trying to figure out why there
+*is* a bug in something calling itself 5.20.1 when in fact the bug was
+introduced later -- shouldn't arise for MAINT releases since they should,
+in theory, only contain bug fixes but never regressions.))
+
=head3 clean build and test
Run a clean build and test to make sure nothing obvious is broken.
In particular, F<Porting/perldelta_template.pod> is intentionally exempted
from podchecker tests, to avoid false positives about placeholder text.
However, once it's copied to F<pod/perldelta.pod> the contents can now
-cause test failures. Problems should resolved by doing one of the
+cause test failures. Problems should be resolved by doing one of the
following:
=over
Copy the perldelta.pod for this release into blead; for example:
$ cd ..../blead
- $ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod # for example
+ $ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod #for example
$ git add pod/perl5101delta.pod
Don't forget to set the NAME correctly in the new file (e.g. perl5101delta
Make sure any recent F<pod/perlhist.pod> entries are copied to
F<perlhist.pod> on blead. e.g.
- 5.8.9 2008-Dec-14
-
-=head3 bump RT version number
-
-Log into http://rt.perl.org/ and check whether the new version is in the RT
-fields C<Perl Version> and C<Fixed In>. The easiest way to determine this is to
-open up any ticket for modification and check the drop downs next to the
-C<Perl Version> and C<Fixed In> labels.
-
-Here, try this link: L<https://rt.perl.org/Ticket/Modify.html?id=10000>
-
-If the new version is not listed there, send an email to C<perlbug-admin at
-perl.org> requesting this.
+ 5.8.9 2008-Dec-14
=head3 Relax!
=head2 Building a release - the day after
-=head3 link announcement in epigraphs.pod
-
-Add, to your quote to F<Porting/epigraphs.pod>, a link to the release
-announcement in the web-visible mailing list archive. Commit it.
-
=for checklist skip BLEAD-FINAL, MAINT, RC
=head3 update Module::CoreList
$ ./perl -Ilib Porting/corelist.pl cpan
-This will update F<dist/Module-CoreList/lib/Module/CoreList.pm>,
-F<dist/Module-CoreList/lib/Module/CoreList.pod> and
+This will update F<dist/Module-CoreList/lib/Module/CoreList.pm> and
F<dist/Module-CoreList/lib/Module/CoreList/Utils.pm> as it did before,
but this time adding new sections for the next BLEAD-POINT release.
Run
- $ ./perl -Ilib -MModule::CoreList -le 'print Module::CoreList->find_version($]) ? "ok" : "not ok"'
+ $ ./perl -Ilib -MModule::CoreList \
+ -le 'print Module::CoreList->find_version($]) ? "ok" : "not ok"'
and check that it outputs "ok" to prove that Module::CoreList now knows
about blead's current version.
=item *
-Check C</src> on CPAN (on a fast mirror) to ensure that links to
-the new tarballs have appeared: There should be links in C</src/5.0>
+Check F</src> on CPAN (on a fast mirror) to ensure that links to
+the new tarballs have appeared: There should be links in F</src/5.0>
(which is accumulating all new versions), and (for BLEAD-FINAL and
-MAINT only) an appropriate mention in C</src/README.html> (which describes
+MAINT only) an appropriate mention in F</src/README.html> (which describes
the latest versions in each stable branch, with links).
-The C</src/5.0> links should appear automatically, some hours after upload.
-If they don't, or the C</src> description is inadequate,
+The F</src/5.0> links should appear automatically, some hours after upload.
+If they don't, or the F</src> description is inadequate,
ask Ask <ask@perl.org>.
=item *
-Check L<http://www.cpan.org/src/> to ensure that the C</src> updates
+Check L<http://www.cpan.org/src/> to ensure that the F</src> updates
have been correctly mirrored to the website.
If they haven't, ask Ask <ask@perl.org>.