This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update RMG - note sync-with-cpan is untested on Windows
[perl5.git] / Porting / release_managers_guide.pod
CommitLineData
49781f4a
AB
1=encoding utf8
2
7277a900
GS
3=head1 NAME
4
5release_managers_guide - Releasing a new version of perl 5.x
6
dc0a4df9
DM
7Note that things change at each release, so there may be new things not
8covered here, or tools may need updating.
9
c78277ad
DR
10=head1 MAKING A CHECKLIST
11
12If you are preparing to do a release, you can run the
13F<Porting/make-rmg-checklist> script to generate a new version of this
14document that starts with a checklist for your release.
15
16This script is run as:
17
18 perl Porting/make-rmg-checklist \
19 --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.pod
20
21You can also pass the C<--html> flag to generate an HTML document instead of
22POD.
f6af4394 23
0056d3d2
DR
24 perl Porting/make-rmg-checklist --html \
25 --type [BLEAD-POINT or MAINT or ...] > /tmp/rmg.html
26
7277a900
GS
27=head1 SYNOPSIS
28
f6af4394 29This document describes the series of tasks required - some automatic, some
dc0a4df9
DM
30manual - to produce a perl release of some description, be that a release
31candidate, or final, numbered release of maint or blead.
f6af4394 32
8c35d285 33The release process has traditionally been executed by the current
ee76d676
JV
34pumpking. Blead releases from 5.11.0 forward are made each month on the
3520th by a non-pumpking release engineer. The release engineer roster
36and schedule can be found in Porting/release_schedule.pod.
7277a900 37
8c35d285
JV
38This document both helps as a check-list for the release engineer
39and is a base for ideas on how the various tasks could be automated
40or distributed.
7277a900 41
da571fa1 42The checklist of a typical release cycle is as follows:
f6af4394 43
636a1918 44 (5.10.1 is released, and post-release actions have been done)
f6af4394
DM
45
46 ...time passes...
47
f6af4394
DM
48 a few weeks before the release, a number of steps are performed,
49 including bumping the version to 5.10.2
636a1918
DM
50
51 ...a few weeks passes...
46743ef7 52
f6af4394
DM
53 perl-5.10.2-RC1 is released
54
55 perl-5.10.2 is released
56
57 post-release actions are performed, including creating new
c5b87fed 58 perldelta.pod
f6af4394
DM
59
60 ... the cycle continues ...
7277a900 61
dc0a4df9 62
7277a900
GS
63=head1 DETAILS
64
6a958a95
DM
65Some of the tasks described below apply to all four types of
66release of Perl. (blead, RC, final release of maint, final
8c35d285
JV
67release of blead). Some of these tasks apply only to a subset
68of these release types. If a step does not apply to a given
69type of release, you will see a notation to that effect at
70the beginning of the step.
71
dc0a4df9 72
8c35d285
JV
73=head2 Release types
74
75=over 4
76
8c35d285
JV
77=item Release Candidate (RC)
78
d60a1044
DM
79A release candidate is an attempt to produce a tarball that is a close as
80possible to the final release. Indeed, unless critical faults are found
81during the RC testing, the final release will be identical to the RC
82barring a few minor fixups (updating the release date in F<perlhist.pod>,
83removing the RC status from F<patchlevel.h>, etc). If faults are found,
84then the fixes should be put into a new release candidate, never directly
85into a final release.
8c35d285 86
6a958a95
DM
87
88=item Stable/Maint release (MAINT).
89
90A release with an even version number, and subversion number > 0, such as
915.14.1 or 5.14.2.
8c35d285
JV
92
93At this point you should have a working release candidate with few or no
94changes since.
95
96It's essentially the same procedure as for making a release candidate, but
97with a whole bunch of extra post-release steps.
98
6a958a95
DM
99=item A blead point release (BLEAD-POINT)
100
101A release with an odd version number, such as 5.15.0 or 5.15.1.
102
103This isn't for production, so it has less stability requirements than for
104other release types, and isn't preceded by RC releases. Other than that,
105it is similar to a MAINT release.
106
107=item Blead final release (BLEAD-FINAL)
108
109A release with an even version number, and subversion number == 0, such as
dc0a4df9 1105.14.0. That is to say, it's the big new release once per year.
8c35d285
JV
111
112It's essentially the same procedure as for making a release candidate, but
6a958a95 113with a whole bunch of extra post-release steps, even more than for MAINT.
8c35d285
JV
114
115=back
7277a900 116
da571fa1 117=for checklist begin
dc0a4df9 118
fd838dcf
JV
119=head2 Prerequisites
120
121Before you can make an official release of perl, there are a few
122hoops you need to jump through:
123
00c28750 124=head3 PAUSE account with pumpkin status
8c35d285 125
fd838dcf
JV
126Make sure you have a PAUSE account suitable for uploading a perl release.
127If you don't have a PAUSE account, then request one:
128
129 https://pause.perl.org/pause/query?ACTION=request_id
130
9a3b7d40
FR
131Check that your account is allowed to upload perl distros: go to
132L<https://pause.perl.org/pause/authenquery?ACTION=who_pumpkin> and check that
133your PAUSE ID is listed there. If not, ask Andreas KE<0xf6>nig to add your ID
134to the list of people allowed to upload something called perl. You can find
135Andreas' email address at:
4d2c8158 136
fd838dcf
JV
137 https://pause.perl.org/pause/query?ACTION=pause_04imprint
138
00c28750 139=head3 search.cpan.org pumpkin status
fdabea7a
JV
140
141Make sure that search.cpan.org knows that you're allowed to upload
142perl distros. Contact Graham Barr to make sure that you're on the right
143list.
144
a72d816c
RS
145=head3 rt.perl.org update access
146
147Make sure you have permission to close tickets on L<http://rt.perl.org/>
148so you can respond to bug report as necessary during your stint. If you
149don't, make an account (if you don't have one) and contact the pumpking
150with your username to get ticket-closing permission.
151
da571fa1 152=head3 git checkout and commit bit
fd838dcf
JV
153
154You will need a working C<git> installation, checkout of the perl
155git repository and perl commit bit. For information about working
c222ef46 156with perl and git, see F<pod/perlgit.pod>.
fd838dcf
JV
157
158If you are not yet a perl committer, you won't be able to make a
159release. Have a chat with whichever evil perl porter tried to talk
160you into the idea in the first place to figure out the best way to
161resolve the issue.
162
845a9291
MM
163=head3 git clone of https://github.com/perlorg/perlweb
164
165For updating the L<http://dev.perl.org> web pages, either a Github account or
166sweet-talking somebody with a Github account into obedience is needed. This
167is only needed on the day of the release or shortly afterwards.
168
da571fa1 169=for checklist skip RC
f6af4394 170
da571fa1 171=head3 Quotation for release announcement epigraph
f6af4394 172
b1288acc 173I<SKIP this step for RC>
f6af4394 174
6a958a95 175For all except an RC release of perl, you will need a quotation
b1288acc 176to use as an epigraph to your release announcement.
46743ef7 177
2e831dfd 178=head2 Building a release - advance actions
8c35d285 179
9c39c536
A
180The work of building a release candidate for an even numbered release
181(BLEAD-FINAL) of perl generally starts several weeks before the first
182release candidate. Some of the following steps should be done regularly,
183but all I<must> be done in the run up to a release.
7277a900 184
dc0a4df9 185=head3 dual-life CPAN module synchronisation
f6af4394 186
1d84c074 187To see which core distro versions differ from the current CPAN versions:
f6af4394 188
1d84c074 189 $ ./perl -Ilib Porting/core-cpan-diff -x -a
7277a900 190
1d84c074
JL
191Passing C<-u cpan> (and maybe C<-u undef>) will probably be helpful, since
192those are the only types of distributions that you can actually affect as a
193perl release manager (as opposed to a CPAN module maintainer).
7277a900 194
1d84c074
JL
195You can also run an actual diff of the contents of the modules, comparing core
196to CPAN, to ensure that there were no erroneous/extraneous changes that need to
197be dealt with. You do this by not passing the C<-x> option:
7277a900 198
1d84c074
JL
199 $ ./perl -Ilib Porting/core-cpan-diff -a -o /tmp/corediffs
200
201then fix the core, or cajole CPAN authors as appropriate. See also the C<-d>
202and C<-v> options for more detail (and the C<-u> option as mentioned above).
203You'll probably want to use the C<-c cachedir> option to avoid repeated CPAN
204downloads and may want to use C<-m file:///mirror/path> if you made a local
205CPAN mirror. Note that a minicpan mirror won't actually work, but can provide a
206good first pass to quickly get a list of modules which definitely haven't
207changed, to avoid having to download absolutely everything.
7277a900 208
6a958a95 209If you are making a MAINT release, run C<core-cpan-diff> on both blead and
636a1918
DM
210maint, then diff the two outputs. Compare this with what you expect, and if
211necessary, fix things up. For example, you might think that both blead
212and maint are synchronised with a particular CPAN module, but one might
213have some extra changes.
214
9c39c536
A
215=head3 How to sync a CPAN module with a cpan/ distro
216
217=over 4
218
219=item *
220
221Fetch the most recent version from CPAN.
222
223=item *
224
225Unpack the retrieved tarball. Rename the old directory; rename the new
226directory to the original name.
227
228=item *
229
9e40a104 230Restore any F<.gitignore> file. This can be done by issuing
02cbdfef 231C<git checkout .gitignore> in the F<cpan/Distro> directory.
9c39c536
A
232
233=item *
234
235Remove files we do not need. That is, remove any files that match the
02cbdfef 236entries in C<@IGNORE> in F<Porting/Maintainer.pl>, and anything that
9c39c536
A
237matches the C<EXCLUDED> section of the distro's entry in the C<%Modules>
238hash.
239
240=item *
241
242Restore any files mentioned in the C<CUSTOMIZED> section, using
243C<git checkout>. Make any new customizations if necessary. Also,
244restore any files that are mentioned in C<@IGNORE>, but were checked
245in in the repository anyway.
246
247=item *
248
249For any new files in the distro, determine whether they are needed.
250If not, delete them, and list them in either C<EXCLUDED> or C<@INGORE>.
251Otherwise, add them to C<MANIFEST>, and run C<git add> to add the files
252to the repository.
253
254=item *
255
256For any files that are gone, remove them from C<MANIFEST>, and use
257C<git rm> to tell git the files will be gone.
258
259=item *
260
261If the C<MANIFEST> file was changed in any of the previous steps, run
262C<perl Porting/manisort --output MANIFEST.sort; mv MANIFEST.sort MANIFEST>.
263
264=item *
265
266For any files that have an execute bit set, either remove the execute
02cbdfef 267bit, or edit F<Porting/exec-bit.txt>
9c39c536
A
268
269=item *
270
0b7399e1 271Run C<make> (or C<nmake> on Windows), see if C<perl> compiles.
9c39c536
A
272
273=item *
274
275Run the tests for the package.
276
277=item *
278
02cbdfef 279Run the tests in F<t/porting>.
9c39c536
A
280
281=item *
282
02cbdfef 283Update the C<DISTRIBUTION> entry in F<Porting/Maintainers.pl>.
9c39c536
A
284
285=item *
286
287Run a full configure/build/test cycle.
288
289=item *
290
291If everything is ok, commit the changes.
292
293=back
294
295For entries with a non-simple C<FILES> section, or with a C<MAP>, you
296may have to take more steps than listed above.
297
02cbdfef 298F<Porting/sync-with-cpan> is a script that automates most of the steps
0b7399e1
SH
299above; but see the comments at the beginning of the file. In particular,
300it has not yet been exercised on Windows, but will certainly require a set
301of Unix tools such as Cygwin, and steps that run C<make> will need to run
302C<nmake> instead.
9c39c536 303
dc0a4df9
DM
304
305=head3 dual-life CPAN module stability
7277a900 306
f6af4394 307Ensure dual-life CPAN modules are stable, which comes down to:
7277a900
GS
308
309 for each module that fails its regression tests on $current
f6af4394
DM
310 did it fail identically on $previous?
311 if yes, "SEP" (Somebody Else's Problem)
312 else work out why it failed (a bisect is useful for this)
7277a900
GS
313
314 attempt to group failure causes
315
316 for each failure cause
f6af4394
DM
317 is that a regression?
318 if yes, figure out how to fix it
319 (more code? revert the code that broke it)
320 else
321 (presumably) it's relying on something un-or-under-documented
322 should the existing behaviour stay?
323 yes - goto "regression"
324 no - note it in perldelta as a significant bugfix
325 (also, try to inform the module's author)
1aff5354 326
dc0a4df9 327
00c28750 328=head3 monitor smoke tests for failures
7277a900 329
5157df7a
AB
330Similarly, monitor the smoking of core tests, and try to fix. See
331L<http://doc.procura.nl/smoke/index.html> for a summary. See also
332L<http://www.nntp.perl.org/group/perl.daily-build.reports/> which has
333the raw reports.
7277a900 334
636a1918
DM
335Similarly, monitor the smoking of perl for compiler warnings, and try to
336fix.
337
dc0a4df9 338
00c28750 339=head3 update perldelta
636a1918 340
f6af4394 341Get perldelta in a mostly finished state.
db3f805e 342
04c2c53e 343Read F<Porting/how_to_write_a_perldelta.pod>, and try to make sure that
636a1918
DM
344every section it lists is, if necessary, populated and complete. Copy
345edit the whole document.
f6af4394 346
f6af4394 347
dc0a4df9
DM
348=head3 Bump the version number
349
30f926b5
JL
350Do not do this yet for a BLEAD-POINT release! You will do this at the end of
351the release process.
352
dc0a4df9 353Increase the version number (e.g. from 5.12.0 to 5.12.1).
04dbb930 354
30f926b5 355For a release candidate for a stable perl, this should happen a week or two
04dbb930
DG
356before the first release candidate to allow sufficient time for testing and
357smoking with the target version built into the perl executable. For
358subsequent release candidates and the final release, it it not necessary to
359bump the version further.
f6af4394 360
8b2227e6 361There is a tool to semi-automate this process:
f6af4394 362
8b2227e6 363 $ ./perl -Ilib Porting/bump-perl-version -i 5.10.0 5.10.1
f6af4394 364
8b2227e6
LB
365Remember that this tool is largely just grepping for '5.10.0' or whatever,
366so it will generate false positives. Be careful not change text like
367"this was fixed in 5.10.0"!
ceb7f800 368
8b2227e6 369Use git status and git diff to select changes you want to keep.
ceb7f800 370
f6af4394
DM
371Be particularly careful with F<INSTALL>, which contains a mixture of
372C<5.10.0>-type strings, some of which need bumping on every release, and
e03f126c
Z
373some of which need to be left unchanged.
374The line in F<INSTALL> about "is binary incompatible with" requires a
375correct choice of earlier version to declare incompatibility with.
376
6a958a95
DM
377When doing a BLEAD-POINT or BLEAD-FINAL release, also make sure the
378C<PERL_API_*> constants in F<patchlevel.h> are in sync with the version
379you're releasing, unless you're
e43cb88f 380absolutely sure the release you're about to make is 100% binary compatible
6a958a95 381to an earlier release. When releasing a MAINT perl version, the C<PERL_API_*>
e43cb88f
TM
382constants C<MUST NOT> be changed as we aim to guarantee binary compatibility
383in maint branches.
45ce9531 384
17163f85
DM
385After editing, regenerate uconfig.h (this must be run on a system with a
386/bin/sh available):
22be9667 387
17163f85 388 $ perl regen/uconfig_h.pl
22be9667 389
78957677
JL
390This might not cause any new changes.
391
22be9667
JV
392Test your changes:
393
17163f85 394 $ git clean -xdf # careful if you don't have local files to keep!
22be9667
JV
395 $ ./Configure -des -Dusedevel
396 $ make
397 $ make test
398
54356a6f
JV
399Commit your changes:
400
04abd20e 401 $ git status
e91bd5c0
LB
402 $ git diff
403 B<review the delta carefully>
54356a6f
JV
404
405 $ git commit -a -m 'Bump the perl version in various places for 5.x.y'
dc0a62a1 406
21768cb3
FC
407At this point you may want to compare the commit with a previous bump to
408see if they look similar. See commit 8891dd8d for an example of a
409previous version bump.
410
dc0a4df9
DM
411When the version number is bumped, you should also update Module::CoreList
412(as described below in L<"update Module::CoreList">) to reflect the new
81fc59ef
DG
413version number.
414
dc0a4df9
DM
415
416=head3 update INSTALL
dc0a62a1
DM
417
418Review and update INSTALL to account for the change in version number;
419in particular, the "Coexistence with earlier versions of perl 5" section.
420
6a958a95
DM
421Be particularly careful with the section "Upgrading from 5.X.Y or earlier".
422The "X.Y" needs to be changed to the most recent version that we are
423I<not> binary compatible with.
424
425For MAINT and BLEAD-FINAL releases, this needs to refer to the last
426release in the previous development cycle (so for example, for a 5.14.x
427release, this would be 5.13.11).
428
429For BLEAD-POINT releases, it needs to refer to the previous BLEAD-POINT
430release (so for 5.15.3 this would be 5.15.2).
431
dc0a4df9 432=head3 Check more build configurations
b82efa27 433
a65c7ffd 434Check some more build configurations.
52a66c2c
DM
435
436 $ sh Configure -Dprefix=/tmp/perl-5.x.y -Uinstallusrbinperl \
a65c7ffd 437 -Duseshrplib -Dusesitecustomize
52a66c2c 438 $ make
a65c7ffd 439 $ make test
7277a900 440
52a66c2c 441XXX think of other configurations that need testing.
7277a900 442
dc0a4df9
DM
443
444=head3 update perlport
7277a900 445
347f5124
RGS
446L<perlport> has a section currently named I<Supported Platforms> that
447indicates which platforms are known to build in the current release.
448If necessary update the list and the indicated version number.
449
6a958a95
DM
450
451
2e831dfd
DM
452=head2 Building a release - on the day
453
b1288acc
DM
454This section describes the actions required to make a release
455that are performed on the actual day.
2e831dfd 456
2e831dfd 457
dc0a4df9 458=head3 re-check earlier actions
2e831dfd 459
dc0a4df9 460Review all the actions in the previous section,
2e831dfd
DM
461L<"Building a release - advance actions"> to ensure they are all done and
462up-to-date.
463
dc0a4df9 464
ff721450
JL
465=head3 create a release branch
466
467For BLEAD-POINT releases, making a release from a release branch avoids the
468need to freeze blead during the release. This is less important for
469BLEAD-FINAL, MAINT, and RC releases, since blead will already be frozen in
470those cases. Create the branch by running
471
472 git checkout -b release-5.xx.yy
473
474
dc0a4df9 475=head3 finalize perldelta
04dbb930 476
04dbb930 477Finalize the perldelta. In particular, fill in the Acknowledgements
548e9a3a 478section, which can be generated with something like:
38195a8c 479
548e9a3a 480 $ perl Porting/acknowledgements.pl v5.15.0..HEAD
ef86391b 481
a0db33fe
DM
482Re-read the perldelta to try to find any embarrassing typos and thinkos;
483remove any C<TODO> or C<XXX> flags; update the "Known Problems" section
484with any serious issues for which fixes are not going to happen now; and
485run through pod and spell checkers, e.g.
2e831dfd 486
c5b87fed
FR
487 $ podchecker -warnings -warnings pod/perldelta.pod
488 $ spell pod/perldelta.pod
2e831dfd 489
a0db33fe
DM
490Also, you may want to generate and view an HTML version of it to check
491formatting, e.g.
2e831dfd 492
3f894c2d 493 $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > /tmp/perldelta.html
2e831dfd 494
38195a8c
DG
495Another good HTML preview option is http://search.cpan.org/pod2html
496
497If you make changes, be sure to commit them.
498
da571fa1
DR
499=for checklist skip BLEAD-POINT MAINT RC
500
a03432f2
KW
501=head3 remove stale perldeltas
502
503For the first RC release that is ONLY for a BLEAD-FINAL, the perldeltas
504from the BLEAD-POINT releases since the previous BLEAD_FINAL should have
505now been consolidated into the current perldelta, and hence are now just
506useless clutter. They can be removed using:
507
508 $ git rm <file1> <file2> ...
509
510For example, for RC0 of 5.16.0:
511
512 $ cd pod
513 $ git rm perldelta515*.pod
514
ace68858
NC
515All mention to them should also be removed. Edit F<pod/perl.pod> to remove
516them from its table of contents, then run F<Porting/pod_rules.pl> to
517propagate your changes there into all the other files that mention them
518(including F<MANIFEST>). You'll need to C<git add> the files that it changes.
a03432f2
KW
519
520Then build a clean perl and do a full test
521
522 $ git status
523 $ git clean -dxf
524 $ ./Configure -Dusedevel -des
525 $ make
526 $ make test
527
528Once all tests pass, commit your changes.
dc0a4df9
DM
529
530=head3 build a clean perl
8c35d285 531
a03432f2
KW
532If you skipped the previous step (removing the stale perldeltas)
533make sure you have a gitwise-clean perl directory (no modified files,
a0db33fe 534unpushed commits etc):
8c35d285 535
a0db33fe 536 $ git status
24c5e187 537 $ git clean -dxf
8c35d285 538
dc0a4df9 539then configure and build perl so that you have a Makefile and porting tools:
8c35d285 540
52a66c2c 541 $ ./Configure -Dusedevel -des && make
8c35d285 542
dc0a4df9 543=head3 update Module::CoreList
8c35d285 544
1bac61bb 545Update C<Module::CoreList> with module version data for the new release.
bfadf2ba 546
6a958a95 547Note that if this is a MAINT release, you should run the following actions
1bac61bb 548from the maint branch, but commit the C<CoreList.pm> changes in
a9d1f3db
LB
549I<blead> and subsequently cherry-pick any releases since the last
550maint release and then your recent commit. XXX need a better example
bfadf2ba 551
a0db33fe 552F<corelist.pl> uses ftp.funet.fi to verify information about dual-lived
bfadf2ba 553modules on CPAN. It can use a full, local CPAN mirror or fall back
e8c01f92
SH
554to C<wget> or C<curl> to fetch only package metadata remotely. (If you're
555on Win32, then installing Cygwin is one way to have commands like C<wget>
556and C<curl> available.)
bfadf2ba
JV
557
558(If you'd prefer to have a full CPAN mirror, see
559http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN)
560
a0db33fe 561Then change to your perl checkout, and if necessary,
bfadf2ba 562
595f83ae 563 $ make
bfadf2ba 564
cacc980b 565If this is not the first update for this version (e.g. if it was updated
81fc59ef 566when the version number was originally bumped), first edit
d5bddf6e 567F<dist/Module-CoreList/lib/Module/CoreList.pm> to delete the existing
2ce7d676
RGS
568entries for this version from the C<%released> and C<%version> hashes:
569they will have a key like C<5.010001> for 5.10.1.
52a66c2c
DM
570
571XXX the edit-in-place functionality of Porting/corelist.pl should
572be fixed to handle this automatically.
573
bf8ea215 574Then, If you have a local CPAN mirror, run:
bfadf2ba 575
bfadf2ba
JV
576 $ ./perl -Ilib Porting/corelist.pl ~/my-cpan-mirror
577
578Otherwise, run:
579
bfadf2ba
JV
580 $ ./perl -Ilib Porting/corelist.pl cpan
581
52a66c2c 582This will chug for a while, possibly reporting various warnings about
2a720090 583badly-indexed CPAN modules unrelated to the modules actually in core.
2ce7d676 584Assuming all goes well, it will update
d5bddf6e 585F<dist/Module-CoreList/lib/Module/CoreList.pm>.
bfadf2ba
JV
586
587Check that file over carefully:
588
d5bddf6e 589 $ git diff dist/Module-CoreList/lib/Module/CoreList.pm
bfadf2ba 590
da571fa1
DR
591=head4 Bump C<$Module::CoreList::VERSION>
592
00c28750 593If necessary, bump C<$Module::CoreList::VERSION> (there's no need to do this for
bfadf2ba
JV
594every RC; in RC1, bump the version to a new clean number that will
595appear in the final release, and leave as-is for the later RCs and final).
9709cbd8
FC
596It may also happen that C<Module::CoreList> has been modified in blead, and
597hence has a new version number already. (But make sure it is not the same
598number as a CPAN release.)
bfadf2ba
JV
599
600Edit the version number in the new C<< 'Module::CoreList' => 'X.YZ' >>
601entry, as that is likely to reflect the previous version number.
602
00c28750
DR
603=head4 Bump version in Module::CoreList F<Changes>
604
cb9af4c0
AB
605Also edit Module::CoreList's new version number in its F<Changes>
606file.
e8c01f92 607
00c28750
DR
608=head4 Add Module::CoreList version bump to perldelta
609
70855f8b
FC
610Add a perldelta entry for the new Module::CoreList version.
611
da571fa1
DR
612=for checklist skip RC
613
48100be1 614=head4 Update C<%Module::CoreList::released> and C<CAVEATS>
da571fa1 615
a0db33fe 616In addition, if this is a final release (rather than a release candidate):
bfadf2ba
JV
617
618=over 4
619
620=item *
621
622Update this version's entry in the C<%released> hash with today's date.
623
624=item *
625
626Make sure that the script has correctly updated the C<CAVEATS> section
688b7920
A
627(Note, the C<CAVEATS> section is in
628F<dist/Module-CoreList/lib/Module/CoreList.pod>)
bfadf2ba
JV
629
630=back
631
00c28750
DR
632=head4 Commit Module::CoreList changes
633
bfadf2ba 634Finally, commit the new version of Module::CoreList:
6a958a95 635(unless this is for MAINT; in which case commit it to blead first, then
a0db33fe 636cherry-pick it back).
bfadf2ba 637
688b7920 638 $ git commit -m 'Update Module::CoreList for 5.x.y' dist/Module-CoreList/lib/Module/CoreList.pm dist/Module-CoreList/lib/Module/CoreList.pod
bfadf2ba 639
da571fa1 640=for checklist skip RC
dc0a4df9 641
dc0a4df9 642=head3 update perlhist.pod
a0db33fe 643
e8a7a70e 644I<You MUST SKIP this step for a RC release>
a0db33fe 645
e8a7a70e
JV
646Add an entry to F<pod/perlhist.pod> with the release date, e.g.:
647
648 David 5.10.1 2009-Aug-06
a0db33fe
DM
649
650Make sure that the correct pumpking is listed in the left-hand column, and
651if this is the first release under the stewardship of a new pumpking, make
652sure that his or her name is listed in the section entitled
653C<THE KEEPERS OF THE PUMPKIN>.
654
655Be sure to commit your changes:
656
657 $ git commit -m 'add new release to perlhist' pod/perlhist.pod
8c35d285 658
da571fa1 659=for checklist skip BLEAD-POINT
dc0a4df9
DM
660
661=head3 update patchlevel.h
8c35d285 662
6a958a95 663I<You MUST SKIP this step for a BLEAD-POINT release>
d7eb1120 664
a42352ee
DM
665Update F<patchlevel.h> to add a C<-RC1>-or-whatever string; or, if this is
666a final release, remove it. For example:
d7eb1120
DM
667
668 static const char * const local_patches[] = {
669 NULL
670 + ,"RC1"
671 PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */
672
673Be sure to commit your change:
674
675 $ git commit -m 'bump version to RCnnn' patchlevel.h
676
dc0a4df9
DM
677
678=head3 build, test and check a fresh perl
d7eb1120 679
a0db33fe
DM
680Build perl, then make sure it passes its own test suite, and installs:
681
682 $ git clean -xdf
a42352ee
DM
683 $ ./Configure -des -Dprefix=/tmp/perl-5.x.y-pretest
684
685 # or if it's an odd-numbered version:
a0db33fe 686 $ ./Configure -des -Dusedevel -Dprefix=/tmp/perl-5.x.y-pretest
a42352ee 687
a0db33fe
DM
688 $ make test install
689
52a66c2c
DM
690Check that the output of C</tmp/perl-5.x.y-pretest/bin/perl -v> and
691C</tmp/perl-5.x.y-pretest/bin/perl -V> are as expected,
a0db33fe 692especially as regards version numbers, patch and/or RC levels, and @INC
52a66c2c
DM
693paths. Note that as they have been been built from a git working
694directory, they will still identify themselves using git tags and
01725c10
A
695commits. (Note that for an odd-numbered version, perl will install
696itself as C<perl5.x.y>). C<perl -v> will identify itself as:
697
78957677 698 This is perl 5, version X, subversion Y (v5.X.Y (v5.X.Z-NNN-gdeadbeef))
01725c10 699
78957677 700where 5.X.Z is the latest tag, NNN the number of commits since this tag,
01725c10 701and C<< deadbeef >> commit of that tag.
52a66c2c
DM
702
703Then delete the temporary installation.
704
dc0a4df9
DM
705
706=head3 push the work so far
52a66c2c 707
a0db33fe
DM
708Push all your recent commits:
709
710 $ git push origin ....
711
96054f12 712
dc0a4df9 713=head3 tag the release
96054f12 714
e8c01f92 715Tag the release (e.g.):
96054f12 716
b6d23947 717 $ git tag v5.11.0 -m "First release of the v5.11 series!"
e8c01f92 718
6a958a95 719It is B<VERY> important that from this point forward, you not push
f662f3b7
JV
720your git changes to the Perl master repository. If anything goes
721wrong before you publish your newly-created tag, you can delete
722and recreate it. Once you push your tag, we're stuck with it
723and you'll need to use a new version number for your release.
724
dc0a4df9
DM
725
726=head3 build the tarball
a0db33fe 727
0dcf3caa 728Before you run the following, you might want to install 7-Zip (the
0dcb816b 729C<p7zip-full> package under Debian or the C<p7zip> port on MacPorts) or
0dcf3caa
LB
730the AdvanceCOMP suite (e.g. the C<advancecomp> package under Debian,
731or the C<advancecomp> port on macports - 7-Zip on Windows is the
732same code as AdvanceCOMP, so Windows users get the smallest files
733first time). These compress about 5% smaller than gzip and bzip2.
734Over the lifetime of your distribution this will save a lot of
735people a small amount of download time and disk space, which adds
736up.
737
8c35d285
JV
738Create a tarball. Use the C<-s> option to specify a suitable suffix for
739the tarball and directory name:
740
741 $ cd root/of/perl/tree
742 $ make distclean
75a012fe
DM
743 $ git clean -xdf # make sure perl and git agree on files
744 $ git status # and there's nothing lying around
8c35d285 745
8c35d285
JV
746 $ perl Porting/makerel -b -s RC1 # for a release candidate
747 $ perl Porting/makerel -b # for a final release
748
749This creates the directory F<../perl-x.y.z-RC1> or similar, copies all
750the MANIFEST files into it, sets the correct permissions on them,
751adds DOS line endings to some, then tars it up as
752F<../perl-x.y.z-RC1.tar.gz>. With C<-b>, it also creates a C<tar.bz2> file.
753
6480287f
MT
754If you're getting your tarball suffixed with -uncommitted and you're sure
755your changes were all committed, you can override the suffix with:
756
757 $ perl Porting/makerel -b -s ''
96054f12 758
8c35d285
JV
759XXX if we go for extra tags and branches stuff, then add the extra details
760here
761
dc0a4df9 762Finally, clean up the temporary directory, e.g.
a42352ee
DM
763
764 $ rm -rf ../perl-x.y.z-RC1
765
dc0a4df9
DM
766
767=head3 test the tarball
768
00c28750 769Once you have a tarball it's time to test the tarball (not the repository).
dc0a4df9 770
00c28750 771=head4 Copy the tarball to a web server
a42352ee 772
8c35d285
JV
773Copy the tarballs (.gz and possibly .bz2) to a web server somewhere you
774have access to.
775
00c28750 776=head4 Download the tarball to another machine
8c35d285
JV
777
778Download the tarball to some other machine. For a release candidate,
779you really want to test your tarball on two or more different platforms
780and architectures. The #p5p IRC channel on irc.perl.org is a good place
781to find willing victims.
782
00c28750 783=head4 Check that F<Configure> works
8c35d285
JV
784
785Check that basic configuration and tests work on each test machine:
786
787 $ ./Configure -des && make all test
f6af4394 788
00c28750 789=head4 Run the test harness and install
f6af4394 790
8c35d285
JV
791Check that the test harness and install work on each test machine:
792
a42352ee 793 $ make distclean
8c35d285 794 $ ./Configure -des -Dprefix=/install/path && make all test_harness install
a42352ee 795 $ cd /install/path
8c35d285 796
00c28750 797=head4 Check C<perl -v> and C<perl -V>
8c35d285
JV
798
799Check that the output of C<perl -v> and C<perl -V> are as expected,
800especially as regards version numbers, patch and/or RC levels, and @INC
801paths.
802
803Note that the results may be different without a F<.git/> directory,
804which is why you should test from the tarball.
805
00c28750 806=head4 Run the Installation Verification Procedure utility
459fc3ca 807
9651cacc 808 $ ./perl utils/perlivp
459fc3ca
DM
809 ...
810 All tests successful.
811 $
812
00c28750 813=head4 Compare the installed paths to the last release
459fc3ca 814
d60a1044
DM
815Compare the pathnames of all installed files with those of the previous
816release (i.e. against the last installed tarball on this branch which you
817have previously verified using this same procedure). In particular, look
818for files in the wrong place, or files no longer included which should be.
819For example, suppose the about-to-be-released version is 5.10.1 and the
820previous is 5.10.0:
821
822 cd installdir-5.10.0/
823 find . -type f | perl -pe's/5\.10\.0/5.10.1/g' | sort > /tmp/f1
824 cd installdir-5.10.1/
825 find . -type f | sort > /tmp/f2
826 diff -u /tmp/f[12]
827
29205e9c 828=head4 Bootstrap the CPAN client
d60a1044 829
8c35d285
JV
830Bootstrap the CPAN client on the clean install:
831
29205e9c 832 $ bin/cpan
8c35d285 833
29205e9c 834=head4 Install the Inline module with CPAN and test it
8c35d285 835
a42352ee
DM
836Try installing a popular CPAN module that's reasonably complex and that
837has dependencies; for example:
8c35d285 838
a42352ee
DM
839 CPAN> install Inline
840 CPAN> quit
8c35d285
JV
841
842Check that your perl can run this:
843
16c60e4e 844 $ bin/perl -lwe "use Inline C => q[int f() { return 42;}]; print f"
a42352ee
DM
845 42
846 $
8c35d285 847
00c28750 848=head4 Bootstrap the CPANPLUS client
8c35d285
JV
849
850Bootstrap the CPANPLUS client on the clean install:
851
75a012fe 852 $ bin/cpanp
8c35d285 853
00c28750 854=head4 Install the DBI module with CPANPLUS
8c35d285 855
a42352ee
DM
856 CPAN Terminal> i DBI
857 CPAN Terminal> quit
858 $ bin/perl -MDBI -e 1
75a012fe 859 $
8c35d285 860
00c28750 861=head4 Make sure that perlbug works
8c35d285 862
00c28750 863Test L<perlbug> with the following:
47b1f096 864
a14438df 865 $ bin/perlbug
47b1f096
DM
866 ...
867 Subject: test bug report
868 Local perl administrator [yourself]:
869 Editor [vi]:
870 Module:
871 Category [core]:
872 Severity [low]:
873 (edit report)
874 Action (Send/Display/Edit/Subject/Save to File): f
875 Name of file to save message in [perlbug.rep]:
876 Action (Send/Display/Edit/Subject/Save to File): q
877
878and carefully examine the output (in F<perlbug.rep]>), especially
879the "Locally applied patches" section. If everything appears okay, then
75a012fe
DM
880delete the file, and try it again, this time actually submitting the bug
881report. Check that it shows up, then remember to close it!
47b1f096 882
da571fa1 883=for checklist skip BLEAD-POINT
dc0a4df9
DM
884
885=head3 monitor smokes
47b1f096 886
f6af4394
DM
887Wait for the smoke tests to catch up with the commit which this release is
888based on (or at least the last commit of any consequence).
7277a900 889
f6af4394
DM
890Then check that the smoke tests pass (particularly on Win32). If not, go
891back and fix things.
7277a900 892
6a958a95 893Note that for I<BLEAD-POINT> releases this may not be practical. It takes a
1eefd7d5 894long time for the smokers to catch up, especially the Win32
6a958a95
DM
895smokers. This is why we have a RC cycle for I<MAINT> and I<BLEAD-FINAL>
896releases, but for I<BLEAD-POINT> releases sometimes the best you can do is
897to plead with people on IRC to test stuff on their platforms, fire away,
898and then hope for the best.
7277a900 899
dc0a4df9
DM
900
901=head3 upload to PAUSE
7277a900 902
f6af4394 903Once smoking is okay, upload it to PAUSE. This is the point of no return.
db3f805e
JV
904If anything goes wrong after this point, you will need to re-prepare
905a new release with a new minor version or RC number.
906
a14438df
DM
907 https://pause.perl.org/
908
909(Login, then select 'Upload a file to CPAN')
910
45924287
RS
911If your workstation is not connected to a high-bandwidth,
912high-reliability connection to the Internet, you should probably use the
913"GET URL" feature (rather than "HTTP UPLOAD") to have PAUSE retrieve the
914new release from wherever you put it for testers to find it. This will
915eliminate anxious gnashing of teeth while you wait to see if your
91615 megabyte HTTP upload successfully completes across your slow, twitchy
c27b4e97
SH
917cable modem. You can make use of your home directory on dromedary for
918this purpose: F<http://users.perl5.git.perl.org/~USERNAME> maps to
919F</home/USERNAME/public_html>, where F<USERNAME> is your login account
920on dromedary. I<Remember>: if your upload is partially successful, you
921may need to contact a PAUSE administrator or even bump the version of perl.
45924287 922
a42352ee 923Upload both the .gz and .bz2 versions of the tarball.
f6af4394 924
38195a8c
DG
925Do not proceed any further until you are sure that your tarballs are on
926CPAN. Check your authors directory on one of the "fast" CPAN mirrors
b28f69c2 927(e.g., cpan.hexten.net
38195a8c 928or cpan.cpantesters.org) to confirm that your uploads have been successful.
c27b4e97 929
00c28750
DR
930=for checklist skip RC
931
932=head3 wait for indexing
933
76526317
FR
934I<You MUST SKIP this step for RC>
935
936Wait until you receive notification emails from the PAUSE indexer
937confirming that your uploads have been received. IMPORTANT -- you will
938probably get an email that indexing has failed, due to module permissions.
939This is considered normal.
940
dc0a4df9
DM
941
942=head3 publish tag
210de33e 943
f662f3b7 944Now that you've shipped the new perl release to PAUSE, it's
e8c01f92 945time to publish the tag you created earlier to the public git repo (e.g.):
f662f3b7
JV
946
947 $ git push origin tag v5.11.0
f6af4394 948
da571fa1 949=for checklist skip BLEAD-POINT
dc0a4df9
DM
950
951=head3 disarm patchlevel.h
f6af4394 952
6a958a95 953I<You MUST SKIP this step for BLEAD-POINT release>
113f3f4c 954
a42352ee 955Disarm the F<patchlevel.h> change; for example,
d7eb1120
DM
956
957 static const char * const local_patches[] = {
958 NULL
959 - ,"RC1"
960 PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */
961
962Be sure to commit your change:
963
964 $ git commit -m 'disarm RCnnn bump' patchlevel.h
a14438df 965 $ git push origin ....
d7eb1120 966
2e831dfd 967
dc0a4df9
DM
968
969=head3 announce to p5p
2e831dfd 970
db3f805e 971Mail p5p to announce your new release, with a quote you prepared earlier.
f6af4394 972
098d30ef 973Use the template at Porting/release_announcement_template.txt
dc0a4df9 974
a8cecd9d
RS
975Send a carbon copy to C<noc@metacpan.org>
976
ff721450
JL
977=head3 merge release branch back to blead
978
979If you made a release branch for this release, merge it back into master now,
980and delete it.
981
982 git checkout blead
983 git pull
984 git merge release-5.xx.yy
985 git push
986 git push origin :release-5.xx.yy
987 git branch -d release-5.xx.yy
988
dc0a4df9 989=head3 update epigraphs.pod
f6af4394 990
85531b0a 991Add your quote to F<Porting/epigraphs.pod> and commit it.
606d51b7
Z
992Your release announcement will probably not have reached the web-visible
993archives yet, so you won't be able to include the customary link to the
994release announcement yet.
dc0a4df9 995
b02b3ec7
DR
996=head3 blog about your epigraph
997
998If you have a blog, please consider writing an entry in your blog explaining
999why you chose that particular quote for your epigraph.
1000
da571fa1
DR
1001=for checklist skip RC
1002
dc0a4df9 1003=head3 Module::CoreList nagging
85531b0a 1004
bc4c40f2 1005I<You MUST SKIP this step for RC>
8c35d285 1006
75a012fe
DM
1007Remind the current maintainer of C<Module::CoreList> to push a new release
1008to CPAN.
7277a900 1009
da571fa1 1010=for checklist skip RC
dc0a4df9
DM
1011
1012=head3 new perldelta
a2cba4bc 1013
bc4c40f2 1014I<You MUST SKIP this step for RC>
7277a900 1015
bcfe7366 1016Create a new perldelta.
5ef3945b 1017
bcfe7366 1018=over 4
8e967a1c 1019
bcfe7366 1020=item *
8e967a1c 1021
bcfe7366 1022Confirm that you have a clean checkout with no local changes.
c5b87fed 1023
bcfe7366 1024=item *
17163f85 1025
bcfe7366 1026Run F<Porting/new-perldelta.pl>
8e967a1c 1027
bcfe7366 1028=item *
17163f85 1029
bcfe7366 1030Run the C<git add> commands it outputs to add new and modified files.
7277a900 1031
bcfe7366 1032=item *
7277a900 1033
bcfe7366 1034Verify that the build still works, by running C<./Configure> and
fd76d40d
SH
1035C<make test_porting>. (On Win32, run C<nmake> and
1036C<nmake test TEST_FILES="porting\*.t ..\lib\diagnostics.t">.)
17163f85 1037
bcfe7366 1038=item *
17163f85 1039
bcfe7366
NC
1040If F<t/porting/podcheck.t> spots errors in the new F<pod/perldelta.pod>,
1041run C<./perl -MTestInit t/porting/podcheck.t | less> for more detail.
1042Skip to the end of its test output to see the options it offers you.
57433fbf 1043
bcfe7366 1044=item *
75a012fe 1045
bcfe7366 1046When C<make test_porting> passes, commit the new perldelta.
75a012fe 1047
bcfe7366 1048=back
75a012fe 1049
21768cb3 1050At this point you may want to compare the commit with a previous bump to
fd76d40d 1051see if they look similar. See commit e3c71926d3 for an example of a
75a012fe 1052previous version bump.
57433fbf 1053
30f926b5 1054=for checklist skip MAINT RC
dc0a4df9
DM
1055
1056=head3 bump version
57433fbf 1057
30f926b5 1058I<You MUST SKIP this step for RC and MAINT>
dc0a62a1 1059
6a958a95
DM
1060If this was a BLEAD-FINAL release (i.e. the first release of a new maint
1061series, 5.x.0 where x is even), then bump the version in the blead branch
1062in git, e.g. 5.12.0 to 5.13.0.
17163f85 1063
6d5e92cd
FC
1064First, add a new feature bundle to F<regen/feature.pl>, initially by just
1065copying the exiting entry, and bump the file's $VERSION (after the __END__
1066marker); e.g.
17163f85
DM
1067
1068 "5.14" => [qw(switch say state unicode_strings)],
1069 + "5.15" => [qw(switch say state unicode_strings)],
addebd58 1070
57fef7cc
FC
1071Run F<regen/feature.pl> to propagate the changes to F<lib/feature.pm>.
1072
dc0a4df9
DM
1073Then follow the section L<"Bump the version number"> to bump the version
1074in the remaining files and test and commit.
17163f85 1075
30f926b5
JL
1076If this was a BLEAD-POINT release, then just follow the section
1077L<"Bump the version number">.
1078
17163f85 1079
d5c37431
NC
1080=head3 clean build and test
1081
1082Run a clean build and test to make sure nothing obvious is broken.
1083
1084In particular, F<Porting/perldelta_template.pod> is intentionally exempted
1085from podchecker tests, to avoid false positives about placeholder text.
1086However, once it's copied to F<pod/perldelta.pod> the contents can now
ef4474b5
KW
1087cause test failures. Problems should resolved by doing one of the
1088following:
1089
1090=over
1091
1092=item 1
1093
1094Replace placeholder text with correct text.
1095
1096=item 2
1097
1098If the problem is from a broken placeholder link, you can add it to the
1099array C<@perldelta_ignore_links> in F<t/porting/podcheck.t>. Lines
1100containing such links should be marked with C<XXX> so that they get
1101cleaned up before the next release.
1102
1103=item 3
1104
1105Following the instructions output by F<t/porting/podcheck.t> on how to
1106update its exceptions database.
1107
1108=back
d5c37431 1109
dc0a4df9
DM
1110=head3 push commits
1111
1112Finally, push any commits done above.
1113
1114 $ git push origin ....
1115
da571fa1 1116=for checklist skip BLEAD-POINT MAINT RC
dc0a4df9
DM
1117
1118=head3 create maint branch
17163f85 1119
6a958a95 1120I<You MUST SKIP this step for RC, BLEAD-POINT, MAINT>
17163f85 1121
6a958a95
DM
1122If this was a BLEAD-FINAL release (i.e. the first release of a new maint
1123series, 5.x.0 where x is even), then create a new maint branch based on
1124the commit tagged as the current release.
7277a900 1125
233ca920
JV
1126Assuming you're using git 1.7.x or newer:
1127
17163f85 1128 $ git checkout -b maint-5.12 v5.12.0
233ca920 1129 $ git push origin -u maint-5.12
addebd58 1130
dc0a4df9 1131
da571fa1
DR
1132=for checklist skip BLEAD-POINT MAINT RC
1133
d5722260
DK
1134=head3 make the maint branch available in the APC
1135
1136Clone the new branch into /srv/gitcommon/branches on camel so the APC will
1137receive its changes.
1138
07697565 1139 $ git clone --branch maint-5.14 /gitroot/perl.git \
d5722260 1140 ? /srv/gitcommon/branches/perl-5.14.x
07697565 1141 $ chmod -R g=u /srv/gitcommon/branches/perl-5.14.x
d5722260
DK
1142
1143And nag the sysadmins to make this directory available via rsync.
1144
da571fa1 1145=for checklist skip BLEAD-POINT RC
d5722260 1146
dc0a4df9 1147=head3 copy perldelta.pod to other branches
addebd58 1148
6a958a95 1149I<You MUST SKIP this step for RC, BLEAD-POINT>
8c35d285 1150
c5b87fed 1151Copy the perldelta.pod for this release into the other branches; for
75a012fe 1152example:
7277a900 1153
c5b87fed 1154 $ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod # for example
75a012fe
DM
1155 $ git add pod/perl5101delta.pod
1156
0aef0fe5 1157Edit F<pod/perl.pod> to add an entry for the file, e.g.:
75a012fe
DM
1158
1159 perl5101delta Perl changes in version 5.10.1
bc4c40f2 1160
75a012fe 1161Then rebuild various files:
7277a900 1162
00b85c8d 1163 $ perl Porting/pod_rules.pl
75a012fe
DM
1164
1165Finally, commit:
1166
1167 $ git commit -a -m 'add perlXXXdelta'
7277a900 1168
dc0a4df9
DM
1169
1170=head3 update perlhist.pod in other branches
7277a900 1171
f6af4394 1172Make sure any recent F<pod/perlhist.pod> entries are copied to
e8a7a70e 1173F<perlhist.pod> on other branches
f6af4394 1174e.g.
7277a900 1175
f6af4394 1176 5.8.9 2008-Dec-14
7277a900 1177
dc0a4df9
DM
1178
1179=head3 bump RT version number
6e40fbf9 1180
7c139051
DR
1181Log into http://rt.perl.org/ and check whether the new version is in the RT
1182fields C<Perl Version> and C<Fixed In>. The easiest way to determine this is
1183to go to L<https://rt.perl.org/rt3/Search/Build.html> and click on the drop
1184downs next to the C<Perl Version> and C<Fixed In> labels.
1185
1186If the new version is not listed there, send an email to C<perlbug-admin at
1187perl.org> requesting this.
dc0a4df9
DM
1188
1189=head3 Relax!
a3738a12 1190
bc4c40f2
JV
1191I<You MUST RETIRE to your preferred PUB, CAFE or SEASIDE VILLA for some
1192much-needed rest and relaxation>.
8c35d285
JV
1193
1194Thanks for releasing perl!
1195
7277a900 1196
b28f69c2
Z
1197=head2 Building a release - the day after
1198
606d51b7
Z
1199=head3 link announcement in epigraphs.pod
1200
1201Add, to your quote to F<Porting/epigraphs.pod>, a link to the release
1202announcement in the web-visible mailing list archive. Commit it.
1203
dc0a4df9
DM
1204=head3 check tarball availability
1205
1206Check various website entries to make sure the that tarball has appeared
1207and is properly indexed:
1208
b28f69c2
Z
1209=over 4
1210
1211=item *
1212
98df743a
Z
1213Check your author directory under L<http://www.cpan.org/authors/id/>
1214to ensure that the tarballs are available on the website.
b28f69c2
Z
1215
1216=item *
1217
98df743a
Z
1218Check C</src> on CPAN (on a fast mirror) to ensure that links to
1219the new tarballs have appeared. There should be links in C</src/5.0>
1220(which is accumulating all new versions), links in C</src> (which shows
1221only the latest version on each branch), and an appropriate mention in
1222C</src/README.html> (which describes the latest versions).
1223
1224These links should appear automatically, some hours after upload.
1225If they don't, or the C<README.html> description is inadequate,
1226ask Ask <ask@perl.org>.
b28f69c2
Z
1227
1228=item *
1229
98df743a
Z
1230Check L<http://www.cpan.org/src/> to ensure that the C</src> updates
1231have been correctly mirrored to the website.
1232If they haven't, ask Ask <ask@perl.org>.
1233
1234=item *
b28f69c2 1235
98df743a
Z
1236Check L<http://search.cpan.org> to see if it has indexed the distribution.
1237It should be visible at a URL like C<http://search.cpan.org/dist/perl-5.10.1/>.
b28f69c2 1238
dc0a4df9 1239=back
b28f69c2 1240
e7b51df1 1241=for checklist skip RC
dc0a4df9
DM
1242
1243=head3 update dev.perl.org
1244
e7b51df1 1245I<You MUST SKIP this step for a RC release>
98df743a 1246
7a664ed5
RS
1247In your C<perlorg> repository, link to the new release. For a new
1248latest-maint release, edit F<docs/shared/tpl/stats.html>. Otherwise,
1249edit F<docs/dev/perl5/index.html>.
1250
1251Then make a pull request to Leo Lapworth. If this fails for some reason
1252and you cannot cajole anybody else into submitting that change, you can
1253mail Leo as last resort.
b28f69c2 1254
7dbb22ac
A
1255This repository can be found on L<github|https://github.com/perlorg/perlweb>.
1256
da571fa1 1257=for checklist end
b28f69c2 1258
7277a900
GS
1259=head1 SOURCE
1260
f6af4394
DM
1261Based on
1262http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html,
1263plus a whole bunch of other sources, including private correspondence.
7277a900
GS
1264
1265=cut
1266