Annotation of embedaddon/php/README.RELEASE_PROCESS, revision 1.1.1.2
1.1 misho 1: =======================
2: PHP Release Process
3: =======================
4:
5: General notes and tips
6: ----------------------
7:
8: 1. Do not release on Fridays, Saturdays or Sundays
9: because the sysadmins can not upgrade stuff then.
10:
11: 2. Package the day before a release. So if the release is to be on Thursday,
12: package on Wednesday.
13:
14: 3. Ensure that Windows builds will work before packaging
15:
16: 4. Follow all steps to the letter. When unclear ask previous RM's (Derick/Ilia)
17: before proceeding. Ideally make sure that for the first releases one of the
18: previous RM's is around to answer questions. For the steps related to the
19: php/QA/bug websites try to have someone from the webmaster team (Bjori) on hand.
20:
21: 5. Verify the tags to be extra sure everything was tagged properly.
22:
23: 6. Moving extensions from/to PECL requires write acces to the destination.
24: Most developers should have this.
25:
26: Moving extensions from php-src to PECL
27: - Checkout the pecl directory, most likely you want a sparse-root checkout
28: svn co --depth=empty https://svn.php.net/repository/pecl
29: - Create an directory for the extension incl. branch and tag structure,
30: no trunk at this point and commit this to svn
31: cd pecl; mkdir foo foo/tags foo/branches; svn add foo; svn commit
32: - Move the extension from php-src to the new location
33: svn mv https://svn.php.net/repository/php/php-src/trunk/ext/foo \
34: https://svn.php.net/repository/pecl/foo/trunk
35:
36: If the extension is still usable or not dead, in cooperation with the extension
37: maintainers if any:
38: - create the pecl.php.net/foo package and its content, license, maintainer
39: - create the package.xml, commit
40: - release the package
41:
42: For Moving extensions from PECL to php-src the svn mv has to be tone the other
43: way round.
44:
45: Rolling a non stable release (alpha/beta/RC)
46: --------------------------------------------
47:
48: 1. Check windows snapshot builder logs (http://windows.php.net/downloads/snaps/ the last revision)
49:
50: 2. run the "scripts/dev/credits" script in php-src and commit the changes in the
51: credits files in ext/standard.
52:
1.1.1.2 ! misho 53: 3. Checkout the release branch for this release (e.g., PHP-5.4.2).
1.1 misho 54:
1.1.1.2 ! misho 55: 4. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
! 56: Do not use abbreviations for alpha and beta.
1.1 misho 57:
1.1.1.2 ! misho 58: 5. Commit these changes to the branch with ``git commit -a``.
1.1 misho 59:
1.1.1.2 ! misho 60: 6. Tag the repository with the version, e.g.:
! 61: ``git tag -u YOURKEYID PHP-5.4.2-RC2``
1.1 misho 62:
1.1.1.2 ! misho 63: 7. Push the changes to the main repo:
! 64: ``git push --tags origin HEAD``
1.1 misho 65:
1.1.1.2 ! misho 66: 8. run: ``./makedist 5.4.2-RC2``, this will export the tree, create configure
1.1 misho 67: and build two tarballs (one gz and one bz2).
68:
1.1.1.2 ! misho 69: 9. Copy those two tarballs to www.php.net, in your homedir there should be a
1.1 misho 70: directory "downloads/". Copy them into there, so that the system can generate
71: MD5 sums. If you do not have this directory, talk to Derick.
72:
1.1.1.2 ! misho 73: 10. Now the RC can be found on http://downloads.php.net/yourname,
1.1 misho 74: f.e. http://downloads.php.net/derick/
75:
1.1.1.2 ! misho 76: 11. Once the release has been tagged, contact the PHP Windows development team
1.1 misho 77: (internals-win@lists.php.net) so that Windows binaries can be created. Once
78: those are made, they should be placed into the same directory as the source snapshots.
79:
80: Getting the non stable release (alpha/beta/RC) announced
81: --------------------------------------------------------
82:
83: 1. Send an email (see example here: http://news.php.net/php.internals/19486)
84: **To** ``internals@lists.php.net`` and ``php-general@lists.php.net`` lists
85: pointing out "the location of the release" and "the possible release date of
86: either the next RC, or the final release".
87:
88: 2. Send an email (see example here http://news.php.net/php.pear.qa/5201) **To**
89: ``php-qa@lists.php.net`` and ``primary-qa-tests@lists.php.net``.
90: This email is to notify the selected projects about a new release so that they
91: can make sure their projects keep working. Make sure that you have been setup
92: as a moderator for ``primary-qa-tests@lists.php.net`` by having someone (Wez,
93: Derick) run the following commands for you:
94:
95: ``ssh lists.php.net``
96:
97: ``sudo -u ezmlm ezmlm-sub ~ezmlm/primary-qa-tester/mod moderator-email-address``
98:
1.1.1.2 ! misho 99: 3. Update ``qa.git/include/release-qa.php`` with the appropriate information.
1.1 misho 100: See the documentation within release-qa.php for more information, but all releases
101: and RCs are configured here. Only $QA_RELEASES needs to be edited.
102:
103: Example: When rolling an RC, set the 'rc' with appropriate information for the
104: given version.
105:
106: Note: Remember to update the MD5 checksum information.
107:
1.1.1.2 ! misho 108: 4. Update ``php.git/include/version.inc`` (x=major version number)
1.1 misho 109:
1.1.1.2 ! misho 110: a. ``$PHP_x_RC`` = "5.4.0RC1"
1.1 misho 111:
112: b. ``$PHP_x_RC_DATE`` = "06 September 2007"
113:
1.1.1.2 ! misho 114: 5. Commit and push those changes:
1.1 misho 115:
1.1.1.2 ! misho 116: a. ``git commit -a && git push origin master``
1.1 misho 117:
118: 6. For the first RC, write the doc team (phpdoc@lists.php.net) about updating the
119: INSTALL and win32/install.txt files which are generated from the PHP manual sources.
120:
121: 7. Publish the announce on www.php.net as well (for all releases, alpha, RCs or other)
122:
123: Rolling a stable release
124: ------------------------
125:
126: 1. Check windows snapshot builder logs (http://snaps.php.net/win32/snapshot-STABLE.log f.e.)
127:
128: 2. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
129:
130: 3. **Merge** all related sections in NEWS (f.e. merge the 4.4.1RC1 and 4.4.0 sections)
131:
132: 4. Commit those changes
133:
134: 5. run the "scripts/dev/credits" script in php-src and commit the changes in the
135: credits files in ext/standard.
136:
137: 6. tag the repository with the version f.e. "``cvs tag php_4_4_1``"
138: (of course, you need to change that to the version you're rolling an RC for).
139: When making 5.X release, you need to tag the Zend directory separately!!
140:
141: 7. Bump up the version numbers in ``main/php_version.h``, ``configure.in`` and
142: possibly ``NEWS`` again, to the **next** version. F.e. if the release candidate
143: was "4.4.1RC1" then the new one should be "4.4.1RC2-dev" - regardless if we get
144: a new RC or not. This is to make sure ``version_compare()`` can correctly work.
145:
146: 8. Commit those changes
147:
148: 9. Log in onto the snaps box and go into the correct tree (f.e. the PHP_4_4
149: branch if you're rolling 4.4.x releases).
150:
151: 10. You do not have to update the tree, but of course you can with "``cvs up -dP``".
152:
153: 11. run: ``./makedist php 4.4.1``, this will export the tree, create configure
154: and build two tarballs (one gz and one bz2).
155:
156: 12. Commit those two tarballs to CVS (phpweb/distributions)
157:
158: 13. Once the release has been tagged, contact the PHP Windows development team
159: (internals-win@lists.php.net) so that Windows binaries can be created. Once
160: those are made, they should be committed to SVN too.
161:
162: 14. Check if the pear files are updated (phar for 5.1+ or run pear/make-pear-bundle.php with 4.4)
163:
164: 15. When making a final release, also remind the PHP Windows development team
165: (internals-win@lists.php.net) to prepare the installer packages for Win32.
166:
167: Getting the stable release announced
168: ------------------------------------
169:
170: 1. Run the bumpRelease script for phpweb on your local checkout
171:
172: a. ``php bin/bumpRelease 5`` (or ``php bin/bumpRelease 4`` for PHP4)
173:
174: 2. Edit ``phpweb/include/version.inc`` and change (X=major release number):
175:
176: a. ``$PHP_X_VERSION`` to the correct version
177:
178: b. ``$PHP_X_DATE`` to the release date
179:
180: c. ``$PHP_X_MD5`` array and update all the md5 sums
181:
182: d. set ``$PHP_X_RC`` to false!
183:
184: e. Make sure there are no outdated "notes" or edited "date" keys in the
185: ``$RELEASES[X][$PHP_X_VERSION]["source"]`` array
186:
187: f. if the windows builds aren't ready yet prefix the "windows" key with a dot (".windows")
188:
189: 3. Update the ChangeLog file for the given major version
190: f.e. ``ChangeLog-4.php`` from the NEWS file
191:
192: a. go over the list and put every element on one line
193:
194: b. check for &, < and > and escape them if necessary
195:
196: c. remove all the names at the ends of lines
197:
198: d. for marking up, you can do the following (with VI):
199:
200: I. ``s/^- /<li>/``
201:
202: II. ``s/$/<\/li>/``
203:
204: III. ``s/Fixed bug #\([0-9]\+\)/<?php bugfix(\1); ?>/``
205:
206: IV. ``s/Fixed PECL bug #\([0-9]\+\)/<?php peclbugfix(\1); ?>/``
207:
208: V. ``s/FR #\([0-9]\+\)/FR <?php bugl(\1); ?>/``
209:
210: 4. ``cp releases/4_4_0.php releases/4_4_1.php``
211:
212: 5. ``cvs add releases/4_4_1.php``
213:
214: 6. Update the ``releases/*.php`` file with relevant data. The release
215: announcement file should list in detail:
216:
217: a. security fixes,
218:
219: b. changes in behavior (whether due to a bug fix or not)
220:
221: 7. Add a short notice to phpweb stating that there is a new release, and
222: highlight the major important things (security fixes) and when it is important
223: to upgrade.
224:
225: a. Call php bin/createNewsEntry in your local phpweb checkout
226:
227: b. Add the content for the news entry
228:
229: 8. Commit all the changes.
230:
231: 9. Wait an hour or two, then send a mail to php-announce@lists.php.net,
232: php-general@lists.php.net and internals@lists.php.net with a text similar to
233: http://news.php.net/php.internals/17222.
234:
235: 10. Update ``php-bugs-web/include/functions.php`` to include the new version
236: number, and remove the RC from there.
237:
238: 11. Update ``qaweb/include/release-qa.php``
239:
240: - Update $QA_RELEASES with the appropriate information, which means bumping
241: the version number to an upcoming version.
242:
243: Example: If PHP 5.3.7 is being released, then PHP 5.3.8 is the next QA version,
244: so replace 5.3.7 with 5.3.8 within $QA_RELEASES.
245:
246: Re-releasing the same version (or -pl)
247: --------------------------------------
248:
249: 1. Commit the new binaries to ``phpweb/distributions/``
250:
251: 2. Edit ``phpweb/include/version.inc`` and change (X=major release number):
252:
253: a. If only releasing for one OS, make sure you edit only those variables
254:
255: b. ``$PHP_X_VERSION`` to the correct version
256:
257: c. ``$PHP_X_DATE`` to the release date
258:
259: d. ``$PHP_X_MD5`` array and update all the md5 sums
260:
261: e. Make sure there are no outdated "notes" or edited "date" keys in the
262: ``$RELEASES[X][$PHP_X_VERSION]["source"]`` array
263:
264: 3. Add a short notice to phpweb stating that there is a new release, and
265: highlight the major important things (security fixes) and when it is important
266: to upgrade.
267:
268: a. Call php bin/createNewsEntry in your local phpweb checkout
269:
270: b. Add the content for the news entry
271:
272: 4. Commit all the changes (``include/version.inc``, ``archive/archive.xml``,
273: ``archive/entries/YYYY-MM-DD-N.xml``)
274:
275: 5. Wait an hour or two, then send a mail to php-announce@lists.php.net,
276: php-general@lists.php.net and internals@lists.php.net with a text similar to
277: the news entry.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>