Commit | Line | Data |
7277a900 |
1 | |
2 | =head1 NAME |
3 | |
4 | release_managers_guide - Releasing a new version of perl 5.x |
5 | |
636a1918 |
6 | XXX as of Jul 2009, this file is still a work-in-progress. I think it |
7 | contains all the actions needed to build a release, but things may have |
8 | got skipped, and some things could do with polishing. Note that things |
9 | change each release, there may be new things not covered here, or |
10 | tools may need updating. DAPM |
f6af4394 |
11 | |
7277a900 |
12 | =head1 SYNOPSIS |
13 | |
f6af4394 |
14 | This document describes the series of tasks required - some automatic, some |
15 | manual - to produce a perl release of some description, be that a snaphot, |
16 | release candidate, or final release. |
17 | |
7277a900 |
18 | The release process is primarily executed by the current pumpking. |
19 | |
1aff5354 |
20 | This document both helps as a check-list for the pumpking and is |
7277a900 |
21 | a base for ideas on how the various tasks could be automated or |
22 | distributed. |
23 | |
636a1918 |
24 | The outline of a typical release cycle is as follows: |
f6af4394 |
25 | |
636a1918 |
26 | (5.10.1 is released, and post-release actions have been done) |
f6af4394 |
27 | |
28 | ...time passes... |
29 | |
30 | an occasional snapshot is released, that still identifies itself as |
31 | 5.10.1 |
32 | |
33 | ...time passes... |
34 | |
35 | a few weeks before the release, a number of steps are performed, |
36 | including bumping the version to 5.10.2 |
636a1918 |
37 | |
38 | ...a few weeks passes... |
46743ef7 |
39 | |
f6af4394 |
40 | perl-5.10.2-RC1 is released |
41 | |
42 | perl-5.10.2 is released |
43 | |
44 | post-release actions are performed, including creating new |
45 | perl5103delta.pod |
46 | |
47 | ... the cycle continues ... |
7277a900 |
48 | |
49 | =head1 DETAILS |
50 | |
7277a900 |
51 | |
fd838dcf |
52 | =head2 Prerequisites |
53 | |
54 | Before you can make an official release of perl, there are a few |
55 | hoops you need to jump through: |
56 | |
57 | =over 4 |
58 | |
59 | =item * |
60 | |
61 | Make sure you have a PAUSE account suitable for uploading a perl release. |
62 | If you don't have a PAUSE account, then request one: |
63 | |
64 | https://pause.perl.org/pause/query?ACTION=request_id |
65 | |
66 | Check that your account is allowed to upload perl distros: goto |
67 | https://pause.perl.org/, login, then select 'upload file to CPAN'; there |
68 | should be a "For pumpkings only: Send a CC" tickbox. If not, ask Andreas |
69 | König to add your ID to the list of people allowed to upload something |
70 | called perl. You can find Andreas' email address at: |
71 | |
72 | https://pause.perl.org/pause/query?ACTION=pause_04imprint |
73 | |
74 | =item * |
75 | |
76 | You will need a working C<git> installation, checkout of the perl |
77 | git repository and perl commit bit. For information about working |
78 | with perl and git, see F<pod/perlrepository.pod>. |
79 | |
80 | If you are not yet a perl committer, you won't be able to make a |
81 | release. Have a chat with whichever evil perl porter tried to talk |
82 | you into the idea in the first place to figure out the best way to |
83 | resolve the issue. |
84 | |
85 | =back |
86 | |
87 | |
f6af4394 |
88 | =head2 Building a snapshot |
89 | |
90 | A snapshot is intended to encourage in-depth testing from time-to-time, |
91 | for example after a key point in the stabilisation of a branch. It |
db3f805e |
92 | requires fewer steps than a full release, and the version number of perl in |
93 | the tarball will usually be the same as that of the previous release. |
f6af4394 |
94 | |
95 | =over 4 |
96 | |
97 | =item * |
98 | |
99 | As there are no regular smokes [ XXX yet - please fix?] find out about the |
db3f805e |
100 | state of the current branch on VMS. If the branch you're releasing on |
101 | is failing tests on VMS, you may not want to do a release. |
f6af4394 |
102 | |
103 | =item * |
104 | |
46743ef7 |
105 | Configure and build perl so that you have a Makefile and porting tools: |
106 | |
107 | $ ./Configure -Dusedevel -des |
108 | $ make |
109 | |
110 | =item * |
111 | |
f6af4394 |
112 | Rebuild META.yml: |
113 | |
114 | $ rm META.yml |
115 | $ make META.yml |
116 | |
46743ef7 |
117 | Commit META.yml if it has changed: |
118 | |
119 | $ git commit -m 'Updating META.yml in preparation for release of 5.x.y' META.yml |
f6af4394 |
120 | |
121 | =item * |
122 | |
123 | Check that the manifest is sorted and correct: |
124 | |
46743ef7 |
125 | $ make manisort |
f6af4394 |
126 | $ make distclean |
f6af4394 |
127 | $ perl Porting/manicheck |
128 | |
46743ef7 |
129 | |
130 | Commit MANIFEST if it has changed: |
131 | |
132 | $ git commit -m 'Updating MANIFEST in preparation for release of 5.x.y' MANIFEST |
133 | |
134 | |
135 | |
f6af4394 |
136 | =item * |
137 | |
138 | If this is a release candidate or final release, add an entry to |
139 | F<pod/perlhist.pod> with the current date, e.g. |
140 | |
141 | 5.8.9-RC1 2008-Nov-10 |
142 | |
ce4f4fe2 |
143 | Make sure the correct pumpking is listed, and if this is your first time, |
f6af4394 |
144 | append your name to C<THE KEEPERS OF THE PUMPKIN>. |
145 | |
146 | =item * |
147 | |
db3f805e |
148 | Build perl, then make sure it passes its own test suite, and installs: |
f6af4394 |
149 | |
46743ef7 |
150 | $ ./Configure -des -Dusedevel -Dprefix=/tmp/perl-5.x.y-pretest |
151 | $ make test install |
152 | |
f6af4394 |
153 | =item * |
154 | |
155 | Create a tarball. Use the C<-s> option to specify a suitable suffix for |
156 | the tarball and directory name: |
157 | |
158 | $ cd root/of/perl/tree |
46743ef7 |
159 | $ make distclean |
f6af4394 |
160 | $ git clean -xdf # make sure perl and git agree on files |
161 | |
85bdf03b |
162 | $ perl Porting/makerel -b -s `git describe` # for a snapshot |
163 | $ perl Porting/makerel -b -s RC1 # for a release candidate |
164 | $ perl Porting/makerel -b # for a final release |
f6af4394 |
165 | |
166 | This creates the directory F<../perl-x.y.z-RC1> or similar, copies all |
167 | the MANIFEST files into it, sets the correct permissions on them, |
168 | adds DOS line endings to some, then tars it up as |
85bdf03b |
169 | F<../perl-x.y.z-RC1.tar.gz>. With C<-b>, it also creates a C<tar.bz2> file. |
f6af4394 |
170 | |
171 | XXX if we go for extra tags and branches stuff, then add the extra details |
172 | here |
173 | |
174 | =item * |
175 | |
85bdf03b |
176 | Copy the tarballs (.gz and possibly .bz2) to a web server somewhere you |
177 | have access to. |
f6af4394 |
178 | |
179 | =item * |
180 | |
46743ef7 |
181 | Download the tarball to some other machine. For a release candidate, |
182 | you really want to test your tarball on two or more different platforms |
183 | and architectures. The #p5p IRC channel on irc.perl.org is a good place |
184 | to find willing victims. |
f6af4394 |
185 | |
186 | =item * |
187 | |
db3f805e |
188 | Check that basic configuration and tests work on each test machine: |
189 | |
190 | $ ./Configure -des && make all test |
f6af4394 |
191 | |
192 | =item * |
193 | |
db3f805e |
194 | Check that the test harness and install work on each test machine: |
195 | |
196 | $ ./Configure -des -Dprefix=/install/path && make all test_harness install |
f6af4394 |
197 | |
198 | =item * |
199 | |
200 | Check that the output of C<perl -v> and C<perl -V> are as expected, |
201 | especially as regards version numbers, patch and/or RC levels, and @INC |
46743ef7 |
202 | paths. |
203 | |
204 | Note that the results may be different without a F<.git/> directory, |
f6af4394 |
205 | which is why you should test from the tarball. |
206 | |
207 | =item * |
208 | |
db3f805e |
209 | Bootstrap the CPAN client on the clean install: |
210 | |
211 | $ ./bin/perl -MCPAN -e'shell' |
f6af4394 |
212 | |
213 | =item * |
214 | |
46743ef7 |
215 | Install Inline.pm |
f6af4394 |
216 | |
db3f805e |
217 | $ ./bin/perl -MCPAN -e'install Inline' |
9db5571e |
218 | |
46743ef7 |
219 | Check that your perl can run this: |
9db5571e |
220 | |
db3f805e |
221 | $ ./bin/perl -lwe 'use Inline C => "int answer() { return 42;} "; print answer' |
9db5571e |
222 | |
f6af4394 |
223 | =item * |
224 | |
db3f805e |
225 | Bootstrap the CPANPLUS client on the clean install: |
226 | |
227 | $ ./bin/cpanp |
228 | |
f6af4394 |
229 | |
230 | =item * |
231 | |
232 | Install an XS module. |
233 | |
234 | =item * |
235 | |
85bdf03b |
236 | If all is well, announce the snapshot to p5p. (For a release candidate, |
f6af4394 |
237 | instead follow the further steps described later.) |
238 | |
239 | =back |
240 | |
241 | =head2 Actions prior to the first release candidate |
242 | |
243 | A week or two before the first release candidate, there are some additional |
244 | tasks you should perform (actually, some of these should be done regularly |
245 | anyway, but they definitely need doing now): |
7277a900 |
246 | |
247 | =over 4 |
248 | |
f6af4394 |
249 | =item * |
250 | |
251 | Check F<Maintainers.pl> for consistency; both these commands should |
252 | produce no output: |
253 | |
db3f805e |
254 | $ perl Porting/Maintainers --checkmani |
255 | $ perl Porting/Maintainers --checkmani lib/ ext/ |
f6af4394 |
256 | |
257 | =item * |
258 | |
259 | Ensure that dual-life CPAN modules are synchronised with CPAN. Basically, |
260 | run the following: |
261 | |
db3f805e |
262 | $ ./perl -Ilib Porting/core-cpan-diff -a -o /tmp/corediffs |
7277a900 |
263 | |
f6af4394 |
264 | to see any inconsistencies between the core and CPAN versions of distros, |
265 | then fix the core, or cajole CPAN authors as appropriate. See also the |
266 | C<-d> and C<-v> options for more detail. You'll probably want to use the |
267 | C<-c cachedir> option to avoid repeated CPAN downloads. |
7277a900 |
268 | |
f6af4394 |
269 | To see which core distro versions differ from the current CPAN versions: |
7277a900 |
270 | |
db3f805e |
271 | $ ./perl -Ilib Porting/core-cpan-diff -x -a |
7277a900 |
272 | |
636a1918 |
273 | if you are making a maint release, run C<core-cpan-diff> on both blead and |
274 | maint, then diff the two outputs. Compare this with what you expect, and if |
275 | necessary, fix things up. For example, you might think that both blead |
276 | and maint are synchronised with a particular CPAN module, but one might |
277 | have some extra changes. |
278 | |
f6af4394 |
279 | =item * |
7277a900 |
280 | |
f6af4394 |
281 | Ensure dual-life CPAN modules are stable, which comes down to: |
7277a900 |
282 | |
283 | for each module that fails its regression tests on $current |
f6af4394 |
284 | did it fail identically on $previous? |
285 | if yes, "SEP" (Somebody Else's Problem) |
286 | else work out why it failed (a bisect is useful for this) |
7277a900 |
287 | |
288 | attempt to group failure causes |
289 | |
290 | for each failure cause |
f6af4394 |
291 | is that a regression? |
292 | if yes, figure out how to fix it |
293 | (more code? revert the code that broke it) |
294 | else |
295 | (presumably) it's relying on something un-or-under-documented |
296 | should the existing behaviour stay? |
297 | yes - goto "regression" |
298 | no - note it in perldelta as a significant bugfix |
299 | (also, try to inform the module's author) |
1aff5354 |
300 | |
f6af4394 |
301 | =item * |
7277a900 |
302 | |
f6af4394 |
303 | Similarly, monitor the smoking of core tests, and try to fix. |
7277a900 |
304 | |
f6af4394 |
305 | =item * |
7277a900 |
306 | |
636a1918 |
307 | Similarly, monitor the smoking of perl for compiler warnings, and try to |
308 | fix. |
309 | |
310 | =item * |
311 | |
f6af4394 |
312 | Run F<Porting/cmpVERSION.pl> to compare the current source tree with the |
313 | previous version to check for for modules that have identical version |
314 | numbers but different contents, e.g.: |
7277a900 |
315 | |
f6af4394 |
316 | $ cd ~/some-perl-root |
317 | $ ./perl -Ilib Porting/cmpVERSION.pl -xd ~/my_perl-tarballs/perl-5.10.0 . |
318 | |
319 | then bump the version numbers of any non-dual-life modules that have |
320 | changed since the previous release, but which still have the old version |
321 | number. If there is more than one maintenance branch (e.g. 5.8.x, 5.10.x), |
322 | then compare against both. |
323 | |
324 | Note that some of the files listed may be generated (e.g. copied from ext/ |
325 | to lib/, or a script like lib/lib_pm.PL is run to produce lib/lib.pm); |
326 | make sure you edit the correct file! |
327 | |
328 | Once all version numbers have been bumped, re-run the checks. |
329 | |
330 | Then run again without the -x option, to check that dual-life modules are |
331 | also sensible. |
332 | |
55878aed |
333 | =item * |
334 | |
335 | Check that files managed by F<regen.pl> and friends are up to date. From |
336 | within your working directory: |
337 | |
338 | |
ee56566f |
339 | $ git status |
55878aed |
340 | $ make regen |
341 | $ make regen_perly |
ee56566f |
342 | $ git status |
55878aed |
343 | |
344 | If any of the files managed by regen.pl have changed, then you should commit |
345 | the updated versions: |
346 | |
347 | $ git commit -m 'Updated files generated by regen tools for perl 5.x.y' <list of files> |
348 | |
f6af4394 |
349 | |
350 | =item * |
351 | |
352 | Get perldelta in a mostly finished state. |
db3f805e |
353 | |
636a1918 |
354 | Peruse F<Porting/how_to_write_a_perldelta.pod>, and try to make sure that |
355 | every section it lists is, if necessary, populated and complete. Copy |
356 | edit the whole document. |
f6af4394 |
357 | |
358 | =item * |
359 | |
360 | Bump the perl version number (e.g. from 5.10.0 to 5.10.1). |
361 | |
362 | There is a tool to semi-automate this process. It works in two stages. |
363 | First, it generates a list of suggested changes, which you review and |
364 | edit; then you feed this list back and it applies the edits. So, first |
365 | scan the source dir looking for likely candidates: |
366 | |
367 | $ Porting/bump-perl-version -s 5.10.0 5.10.1 > /tmp/scan |
368 | |
369 | This produces a file containing a list of suggested edits, eg: |
370 | |
371 | NetWare/Makefile |
372 | |
373 | 89: -MODULE_DESC = "Perl 5.10.0 for NetWare" |
374 | +MODULE_DESC = "Perl 5.10.1 for NetWare" |
375 | |
376 | i.e. in the file F<NetWare/Makefile>, line 89 would be changed as shown. |
377 | Review the file carefully, and delete any -/+ line pairs that you don't |
378 | want changing. Remember that this tool is largely just grepping for '5.10.0' |
379 | or whatever, so it will generate false positives. Be careful not change |
380 | text like "this was fixed in 5.10.0"! Then run: |
381 | |
382 | $ Porting/bump-perl-version -u < /tmp/scan |
383 | |
384 | which will update all the files shown; then commit the changes. |
385 | |
386 | Be particularly careful with F<INSTALL>, which contains a mixture of |
387 | C<5.10.0>-type strings, some of which need bumping on every release, and |
388 | some of which need to be left. Also note that this tool currently only |
389 | performs a single change per line, so in particular, this line in |
390 | README.vms needs special handling: |
391 | |
392 | rename perl-5^.10^.1.dir perl-5_10_1.dir |
7277a900 |
393 | |
dc0a62a1 |
394 | |
395 | =item * |
396 | |
397 | Review and update INSTALL to account for the change in version number; |
398 | in particular, the "Coexistence with earlier versions of perl 5" section. |
399 | |
f6af4394 |
400 | =item * |
7277a900 |
401 | |
f6af4394 |
402 | Update the F<Changes> file to contain the git log command which would show |
403 | all the changes in this release. You will need assume the existence of a |
404 | not-yet created tag for the forthcoming release; e.g. |
7277a900 |
405 | |
f6af4394 |
406 | git log ... perl-5.10.0..perl5.12.0 |
7277a900 |
407 | |
f6af4394 |
408 | Due to warts in the perforce-to-git migration, some branches require extra |
409 | exclusions to avoid other branches being pulled in. Make sure you have the |
410 | correct incantation: replace the not-yet-created tag with C<HEAD> and see |
411 | if git log produces roughly the right number of commits across roughly the |
412 | right time period. |
7277a900 |
413 | |
dc0a62a1 |
414 | |
f6af4394 |
415 | =item * |
7277a900 |
416 | |
f6af4394 |
417 | Check some more build configurations, e.g. |
7277a900 |
418 | |
f6af4394 |
419 | -Duseshrplib -Dd_dosuid |
420 | make suidperl |
7277a900 |
421 | |
f6af4394 |
422 | Check that setuid installs works (for < 5.11.0 only). |
423 | XXX any other configs? |
7277a900 |
424 | |
7277a900 |
425 | |
f6af4394 |
426 | =item * |
7277a900 |
427 | |
f6af4394 |
428 | Update F<AUTHORS>, using the C<Porting/checkAUTHORS.pl> script, and if |
429 | necessary, update the script to include new alias mappings. |
7277a900 |
430 | |
f6af4394 |
431 | XXX This script is currently broken (7/2009). It needs updating to work |
432 | with git and a lack of Changes files. |
433 | |
434 | =back |
435 | |
436 | =head2 Building a release candidate |
437 | |
438 | (At this point you should already have performed the actions described in |
dc0a62a1 |
439 | L</"Actions prior to the first release candidate">.) You should review |
440 | that section to ensure that everything there has done, and to see whether |
441 | any of those actions (such as consistency checks) need to be repeated. |
f6af4394 |
442 | |
443 | =over 4 |
444 | |
445 | =item * |
446 | |
447 | Re-read the perldelta to try to find any embarrassing typos and thinkos; |
448 | remove any C<TODO> or C<XXX> flags; and run through pod and spell |
636a1918 |
449 | checkers, e.g. |
450 | |
451 | podchecker -warnings -warnings pod/perl5101delta.pod |
452 | spell pod/perl5101delta.pod |
f6af4394 |
453 | |
454 | =item * |
455 | |
456 | Update patchlevel.h to add a C<-RC1>-or-whatever string; or, if this is a |
457 | final release, remove it. [ XXX how now?? see 34813 for old way ] |
458 | |
459 | =item * |
460 | |
461 | Update C<Module::Corelist>. |
210de33e |
462 | |
ce4f4fe2 |
463 | Note that if this is a maint release, you should run the following actions |
210de33e |
464 | from the maint directory, but edit the C<Corelist.pm> in I<blead> and |
465 | subsequently cherry-pick it. |
466 | |
dc2f75c0 |
467 | corelist.pl uses ftp.funet.fi to verify information about dual-lifed |
468 | modules on CPAN. It can use a full, local CPAN mirror or fall back |
469 | to C<wget> or C<curl> to fetch only package metadata remotely. |
210de33e |
470 | |
dc2f75c0 |
471 | (If you'd prefer to have a full CPAN mirror, see |
472 | http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN) |
210de33e |
473 | |
210de33e |
474 | |
dc2f75c0 |
475 | Then change to your perl checkout. |
210de33e |
476 | |
dc2f75c0 |
477 | If you have a local CPAN mirror, run: |
210de33e |
478 | |
dc2f75c0 |
479 | $ perl -Ilib Porting/corelist.pl ~/my-cpan-mirror |
210de33e |
480 | |
dc2f75c0 |
481 | Otherwise, run: |
210de33e |
482 | |
dc2f75c0 |
483 | $ perl -Ilib Porting/corelist.pl cpan |
210de33e |
484 | |
dc2f75c0 |
485 | This will chug for a while. Assuming all goes well, it will |
486 | update lib/Module/CoreList.pm. |
210de33e |
487 | |
dc2f75c0 |
488 | Check that file over carefully: |
210de33e |
489 | |
dc2f75c0 |
490 | $ git diff lib/Module/CoreList.pm |
491 | |
492 | |
493 | If necessary, bump C<$VERSION> (there's no need to do this for |
494 | every RC; in RC1, bump the version to a new clean number that will |
495 | appear in the final release, and leave as-is for the later RCs and final). |
210de33e |
496 | |
ce4f4fe2 |
497 | Edit the version number in the new C<< 'Module::CoreList' => 'X.YZ' >> |
210de33e |
498 | entry, as that is likely to reflect the previous version number. |
499 | |
dc2f75c0 |
500 | |
501 | |
210de33e |
502 | |
503 | Add or update an entry to the C<%released> hash, including today's date |
504 | (if this is just a release candidate, set the date to '????-??-??'). |
505 | |
dc2f75c0 |
506 | Finally, commit the new version of Module::CoreList: |
507 | |
508 | $ git commit -m 'Updated Module::CoreList for the 5.x.y release' \ |
509 | lib/Module/Corelist.pm |
510 | |
7277a900 |
511 | |
f6af4394 |
512 | =item * |
513 | |
514 | Follow the instructions in the section L</"Building a snapshot">, then |
515 | carry on with the extra steps that follow here. |
516 | |
517 | =item * |
7277a900 |
518 | |
addebd58 |
519 | Disarm the patchlevel.h change [ XXX expand ] |
520 | |
521 | =item * |
522 | |
f6af4394 |
523 | Wait for the smoke tests to catch up with the commit which this release is |
524 | based on (or at least the last commit of any consequence). |
7277a900 |
525 | |
f6af4394 |
526 | Then check that the smoke tests pass (particularly on Win32). If not, go |
527 | back and fix things. |
7277a900 |
528 | |
7277a900 |
529 | |
f6af4394 |
530 | =item * |
7277a900 |
531 | |
f6af4394 |
532 | Once smoking is okay, upload it to PAUSE. This is the point of no return. |
db3f805e |
533 | If anything goes wrong after this point, you will need to re-prepare |
534 | a new release with a new minor version or RC number. |
535 | |
addebd58 |
536 | You may wish to create a .bz2 version of the tarball and upload that too. |
f6af4394 |
537 | |
210de33e |
538 | =item * |
539 | |
db3f805e |
540 | Create a tag for the exact git revsion you built the release from: |
210de33e |
541 | |
542 | $ git tag perl-5.10.1-RC1 -m'Release Candidate 1 of Perl 5.10.1' |
543 | $ git push origin tag perl-5.10.1-RC1 |
f6af4394 |
544 | |
545 | =item * |
546 | |
db3f805e |
547 | Mail p5p to announce your new release, with a quote you prepared earlier. |
f6af4394 |
548 | |
549 | =item * |
550 | |
551 | Wait 24 hours or so, then post the announcement to use.perl.org. |
addebd58 |
552 | (if you don't have access rights to post news, ask someone like Rafael to |
553 | do it for you.) |
f6af4394 |
554 | |
555 | =back |
556 | |
557 | |
558 | =head2 Making a final release |
559 | |
560 | At this point you should have a working release candidate with few or no |
561 | changes since. |
562 | |
563 | It's essentially the same procedure as for making a release candidate, but |
564 | with a whole bunch of extra post-release steps. |
565 | |
566 | =over 4 |
7277a900 |
567 | |
f6af4394 |
568 | =item * |
7277a900 |
569 | |
f6af4394 |
570 | Follow the same steps as for making a release candidate, then |
7277a900 |
571 | |
f6af4394 |
572 | =item * |
7277a900 |
573 | |
f6af4394 |
574 | Ask Jarkko to update http://www.cpan.org/src/README.html and |
575 | Rafael to update http://dev.perl.org/perl5/ |
7277a900 |
576 | |
f6af4394 |
577 | =item * |
7277a900 |
578 | |
f6af4394 |
579 | Create a new empty perlNNNdelta.pod file for the current release + 1; |
580 | see F<Porting/how_to_write_a_perldelta.pod>. |
581 | [ XXX Perhaps we should have an empty template file we can copy in. ] |
7277a900 |
582 | |
a2cba4bc |
583 | In addition, edit F<pod.lst>, adding the new entry as 'D', and unmark previous |
584 | entry as 'D', then run C<perl pod/buildtoc --build-all> to update the |
585 | following files: |
7277a900 |
586 | |
f6af4394 |
587 | MANIFEST |
f6af4394 |
588 | pod/perl.pod |
a2cba4bc |
589 | win32/pod.mak |
590 | vms/descrip_mms.template |
591 | |
592 | (F<vms/descrip_mms.template> still needs a manual edit to bump the |
593 | C<perldelta.pod> entry - it would be good for someone to figure out the fix.) |
7277a900 |
594 | |
f6af4394 |
595 | and change perlNNNdelta references to the new version in these files |
7277a900 |
596 | |
f6af4394 |
597 | INSTALL |
598 | win32/Makefile.mk |
599 | win32/Makefile |
600 | Makefile.SH |
601 | README |
7277a900 |
602 | |
f6af4394 |
603 | Also, edit the previous delta file to change the C<NAME> from C<perldelta> |
604 | to C<perlNNNdelta>. |
7277a900 |
605 | |
f6af4394 |
606 | These two lists of files probably aren't exhaustive; do a recursive grep |
607 | on the previous filename to look for suitable candidates. |
7277a900 |
608 | |
f6af4394 |
609 | (see 16410843ea for an example). |
7277a900 |
610 | |
f6af4394 |
611 | =item * |
7277a900 |
612 | |
dc0a62a1 |
613 | If this was a maintenance release, then edit F<Porting/mergelog> to change |
614 | all the C<d> (deferred) flags to C<.> (needs review). |
615 | |
616 | |
617 | =item * |
618 | |
addebd58 |
619 | If this was a major release, then |
620 | |
621 | =over |
622 | |
623 | =item * |
624 | |
625 | bump the version, e.g. 5.12.0 to 5.13.0; |
626 | |
627 | =item * |
628 | |
629 | [ XXX probably lots more stuff to do, including perldelta, |
f6af4394 |
630 | C<lib/feature.pm> ] |
7277a900 |
631 | |
f6af4394 |
632 | =item * |
7277a900 |
633 | |
addebd58 |
634 | Create a new maint branch with an empty Porting/mergelog file |
635 | [ XXX and lots of other stuff too, probably ] |
636 | |
637 | =back |
638 | |
639 | =item * |
640 | |
f6af4394 |
641 | Copy the perlNNNdelta.pod for this release into the other branches, and |
642 | remember to update these files on those branches too: |
7277a900 |
643 | |
f6af4394 |
644 | MANIFEST |
645 | pod.lst |
646 | pod/perl.pod |
647 | vms/descrip_mms.template |
648 | win32/pod.mak |
7277a900 |
649 | |
f6af4394 |
650 | (see fc5be80860 for an example). |
7277a900 |
651 | |
f6af4394 |
652 | =item * |
7277a900 |
653 | |
f6af4394 |
654 | Make sure any recent F<pod/perlhist.pod> entries are copied to |
655 | F<perlhist.pod> on other branches; typically the RC* and final entries, |
656 | e.g. |
7277a900 |
657 | |
f6af4394 |
658 | 5.8.9-RC1 2008-Nov-10 |
659 | 5.8.9-RC2 2008-Dec-06 |
660 | 5.8.9 2008-Dec-14 |
7277a900 |
661 | |
6e40fbf9 |
662 | =item * |
663 | |
664 | Remind the current maintainer of C<Module::CoreList> to push a new release |
665 | to CPAN. |
666 | |
7277a900 |
667 | =back |
668 | |
669 | =head1 SOURCE |
670 | |
f6af4394 |
671 | Based on |
672 | http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html, |
673 | plus a whole bunch of other sources, including private correspondence. |
7277a900 |
674 | |
675 | =cut |
676 | |