This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add release_managers_guide.pod
[perl5.git] / Porting / release_managers_guide.pod
CommitLineData
7277a900
GS
1
2=head1 NAME
3
4release_managers_guide - Releasing a new version of perl 5.x
5
6=head1 SYNOPSIS
7
8The release process is primarily executed by the current pumpking.
9
10This documents both helps as a check-list for the pumpking and is
11a base for ideas on how the various tasks could be automated or
12distributed.
13
14The process has two major parts. In the first part
15the pumpking needs to determine if the current head revision in Git
16is ready for shipment. The second part is the actual release
17and packaging process.
18
19=head1 DETAILS
20
21=head2 Is it ready?
22
23In this step we need to make sure that
24
25=over 4
26
27=item 1
28
29perl passes its own test suite and
30
31=item 2
32
33CPAN works
34
35
36which comes down to:
37
38 for each module that fails its regression tests on $current
39 did it fail identically on $previous?
40 if yes, "SEP"
41 else work out why it failed (a bisect is useful for this)
42
43 attempt to group failure causes
44
45 for each failure cause
46 is that a regression?
47 if yes, figure out how to fix it
48 (more code? revert the code that broke it)
49 else
50 (presumably) it's relying on something un-or-under-documented
51 should the existing behaviour stay?
52 yes - goto "regression"
53 no - note it in perldelta as a significant bugfix
54 (also, try to inform the module's author)
55
56=back
57
58
59=head2 The Actual release process
60
61The set of tasks that can be "scripted" for Perl 5
62
63=over 4
64
65=item 0
66
67so you think you have a source control in a state that won't break CPAN,
68at least not in "surprising" ways.
69
70=item 1
71
72As there are no regular smokes (yet - please fix?) find out about the state
73of VMS. If it's bad, think again.
74
75=item 2
76
77Re-read the perldelta to try to find any embarrassing typos
78
79=item 3
80
81Run Porting/makemeta
82
83=item 4
84
85[used to be run autodoc.pl, but I eliminated that]
86
87=item 5
88
89[used to be run pod/buildtoc, but I eliminated that]
90
91=item 6
92
93update module corelist, but we need to fix that
94
95[it has been holding perforce revisions for releases, but we can't know
96hashes in advance for git. We need to agree a plan to move to git tags]
97
98=item 7
99
100[update changes, but Dave has eliminated that]
101
102=item 8
103
104update patchlevel.h to remove all local patches
105
106=item 9
107
108make tarball with Porting/makerel
109
110=item 10
111
112copy tarball to some other machine x 2 [or more - IRC is good for this]
113
114=item 11
115
116check that ./Configure -des && make all test works in one place
117
118=item 12
119
120check that ./Configure ... && make all test_harness install works
121
122
123=item 13
124
125bootstrap the CPAN client on the clean install
126
127=item 14
128
129install CPANPLUS
130
131=item 15
132
133bootstrap the CPANPLUS client
134
135=item 16
136
137install an XS module
138
139=item 17
140
141if this is good, commit this.
142sit, and wait.
143
144=item 18
145
146do the smoke tests pass (particularly Win32)
147
148=item 19
149
150if yes, upload it to PAUSE. This is the point of no return
151
152=item 20
153
154mail p5p to announce it, with a quote I prepared earlier
155
156=item 21
157
158wait 24 hours or so
159
160=item 22
161
162post the announcement to use.perl.org
163
164=back
165
166=head1 SOURCE
167
168Based on http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html
169
170=cut
171