The usual post release updates

This commit is contained in:
Barry Warsaw 2008-10-02 03:10:35 +00:00
parent 21fcdfb2c2
commit a18e6bd266
2 changed files with 107 additions and 80 deletions

View File

@ -35,9 +35,20 @@ How to Make A Release
the designated person performing the release. The roles and their the designated person performing the release. The roles and their
current experts are: current experts are:
* RM = Release Manager: Barry Warsaw * RM = Release Manager: Barry Warsaw <barry@python.org> (US/Eastern)
* WE = Windows: Martin von Loewis * WE = Windows: Martin von Loewis <martin@v.loewis.de>
* ME = Mac: Ronald Oussoren * ME = Mac: Ronald Oussoren <ronaldoussoren@mac.com>
* IE = Idle Expert: ??
* RE = RPM Expert: Sean Reifschneider <jafo@tummy.com>
NOTE: It is highly recommended that the RM contact the Experts the day
before the release. Because the world is round and everyone lives
in different timezones, the RM must ensure that the release tag is
created in enough time for the Experts to cut binary releases.
IT IS HIGHLY RECOMMENDED THAT YOU AT LEAST TAG THE TREE 24 HOURS
BEFORE A FINAL RELEASE. This will give the Experts enough time to
do their bits before the announcement goes out.
XXX: We should include a dependency graph to illustrate the steps XXX: We should include a dependency graph to illustrate the steps
that can be taken in parallel, or those that depend on other that can be taken in parallel, or those that depend on other
@ -45,28 +56,26 @@ How to Make A Release
As much as possible, the release steps are automated and guided by the As much as possible, the release steps are automated and guided by the
release script, which is available in the Python sandbox. The release release script, which is available in the Python sandbox. The release
script is currently being maintained by the RM: script is currently being maintained here:
http://svn.python.org/view/sandbox/trunk/release/ http://svn.python.org/view/sandbox/trunk/release/
We use the following conventions in the examples below. Where a We use the following conventions in the examples below. Where a release
release number is given, it is of the form X.YaZ, e.g. 2.6a3 for number is given, it is of the form X.YaZ, e.g. 2.6a3 for Python 2.6 alpha
Python 2.6 alpha 3, where "a" == alpha, "b" == beta, "c" == 3, where "a" == alpha, "b" == beta, "c" == release candidate.
release candidate.
Final releases are named "releaseXY". The branch tag is Final releases are named "releaseXY". The branch tag is "releaseXY-maint"
"releaseXY-maint" because this will point to the long lived because this will point to the long lived maintenance branch. The fork
maintenance branch. The fork tag on the trunk is tag on the trunk is "releaseXY-fork". If a micro release number is used,
"releaseXY-fork". If a micro release number is used, then we'll then we'll say X.Y.MaZ.
say X.Y.MaZ.
This helps by performing several automatic editing steps, and guides you This helps by performing several automatic editing steps, and guides you
to perform some manual editing steps. to perform some manual editing steps.
___ Log into irc.freenode.net and join the #python-dev channel. ___ Log into irc.freenode.net and join the #python-dev channel.
You probably need to coordinate with other people around the You probably need to coordinate with other people around the world.
world. This IRC channel is where we've arranged to meet. This IRC channel is where we've arranged to meet.
___ Impose a check-in freeze by sending email to python-committers@python.org ___ Impose a check-in freeze by sending email to python-committers@python.org
@ -87,21 +96,20 @@ How to Make A Release
release you're making; here are the relevant definitions: release you're making; here are the relevant definitions:
release blocker - Stops the release dead in its tracks. You may not release blocker - Stops the release dead in its tracks. You may not
make a release with any open blocker bugs. make any release with any open release blocker bugs.
deferred blocker - Doesn't block this release, but it will block a deferred blocker - Doesn't block this release, but it will block a
future release. future release. You many not make a final or
candidate release with any open deferred blocker
bugs.
critical - Important bugs that should be fixed before the next release, critical - Important bugs that should be fixed, but which does not block
but which won't block a non-final release. a release.
You can make alpha and beta releases with open critical bugs, but you
may not make a final release with open critical bugs.
Review the release blockers and either resolve them, bump them down to Review the release blockers and either resolve them, bump them down to
deferred, or stop the release and ask for community assistance. If deferred, or stop the release and ask for community assistance. If
you're making a final release, do the same with any open deferred and you're making a final or candidate release, do the same with any open
crticial bugs. deferred.
___ Check the stable buildbots. ___ Check the stable buildbots.
@ -109,11 +117,11 @@ How to Make A Release
(the trailing slash is required). Look at the buildbots for the release (the trailing slash is required). Look at the buildbots for the release
you're making. Ignore any that are offline (or inform the community so you're making. Ignore any that are offline (or inform the community so
they can be restarted). If what remains are green buildbots, you're they can be restarted). If what remains are (mostly) green buildbots,
good to go. If you have non-offline red buildbots, you may want to hold you're good to go. If you have non-offline red buildbots, you may want
up the release until they are fixed. Review the problems and use your to hold up the release until they are fixed. Review the problems and
judgement, taking into account whether you are making an alpha, beta, or use your judgement, taking into account whether you are making an alpha,
final release. beta, or final release.
___ Bump version numbers via the release script. ___ Bump version numbers via the release script.
@ -124,10 +132,10 @@ How to Make A Release
set up correctly, release.py will pop up editor windows with the files set up correctly, release.py will pop up editor windows with the files
you need to edit. you need to edit.
Most importantly is to update the Misc/NEWS file, however in recent It is important to update the Misc/NEWS file, however in recent years,
years, this has become easier as the community is responsible for most this has become easier as the community is responsible for most of the
of the content of this file. You should only need to review the text content of this file. You should only need to review the text for
for sanity, and update the release date with today's date. sanity, and update the release date with today's date.
If the minor (middle) digit of the version number changes, you will be If the minor (middle) digit of the version number changes, you will be
prompted to update some additional files: prompted to update some additional files:
@ -166,29 +174,28 @@ How to Make A Release
___ Check with the IDLE maintainer to be sure that ___ Check with the IDLE maintainer to be sure that
Lib/idlelib/NEWS.txt has been similarly updated. Lib/idlelib/NEWS.txt has been similarly updated.
(XXX Who is the IE (i.e. Idle Expert)?
___ For a final release, edit the first paragraph of ___ For a final release, edit the first paragraph of
Doc/whatsnew/X.Y.rst to include the actual release date; e.g. "Python Doc/whatsnew/X.Y.rst to include the actual release date; e.g. "Python
2.5 was released on August 1, 2003." There's no need to edit this for 2.5 was released on August 1, 2003." There's no need to edit this for
alpha or beta releases. Note that Andrew Kuchling often takes care of alpha or beta releases. Note that Andrew Kuchling often takes care of
this. this.
___ Tag and/or branch the tree for release X.YaZ ___ Tag the release for X.YaZ
If you're releasing an alpha/beta/release candidate, you will just tag
the tree. If you are releasing a final release, you will both tag the
trunk and create the long-lived maintenance branch.
.../sandbox/release/release.py --tag X.YaZ .../sandbox/release/release.py --tag X.YaZ
Practically speaking, we tag and branch just before making the ___ Send an email to the Experts so that they can build the binaries.
release. Branching too early causes too much merging work.
When making a major release (e.g., for 2.6), you should branch. For a final release, the RM may block at this point waiting for
To create a _branch_ (e.g., release26-maint), do the following: confirmation from the Experts.
.../sandbox/release/release.py --branch X.Y.Z ___ If this is a final major release, branch the tree for X.YaZ
When making a major release (e.g., for 2.6), you must create the
long-lived maintenance branch. To create a _branch_ (e.g.,
release26-maint), do the following:
.../sandbox/release/release.py --branch X.Y
___ If you just made the release branch, check out a clean version ___ If you just made the release branch, check out a clean version
into a new directory. You'll be doing a lot of work in this into a new directory. You'll be doing a lot of work in this
@ -200,9 +207,6 @@ How to Make A Release
___ cd release26-maint # cd into the branch directory. ___ cd release26-maint # cd into the branch directory.
___ XXX If this is a release candidate, mail Sean <jafo@tummy.com>
noting the impending release, so that RPMs can be built and tested.
___ XXX The WE builds the Windows helpfile, using (in Doc/) either ___ XXX The WE builds the Windows helpfile, using (in Doc/) either
$ make htmlhelp (on Unix) $ make htmlhelp (on Unix)
@ -250,7 +254,7 @@ How to Make A Release
___ Time to build the source tarball. If you created a branch, be ___ Time to build the source tarball. If you created a branch, be
sure to cd to your working directory for the branch. E.g. sure to cd to your working directory for the branch. E.g.
% cd .../python-26 % cd .../python26
___ Do a "svn update ; svn status" in this directory. ___ Do a "svn update ; svn status" in this directory.
@ -258,9 +262,12 @@ How to Make A Release
changes in your working directory, but you may pick up some of the changes in your working directory, but you may pick up some of the
expert's last minute changes. expert's last minute changes.
___ If you've seen updates to existing files, update the svn tag: ___ If you've seen updates to existing files, update the branches.
.../sandbox/release/release.py --tag X.YaZ ___ Delete the old tag branch and re-tag the tree
___ Delete the maintenance branch and re-branch the trunk.
This should be rare and indicates a breakdown in the process.
___ Use the release script to create the gzip and bz2 tarballs, md5 ___ Use the release script to create the gzip and bz2 tarballs, md5
checksums, and gpg signature files. checksums, and gpg signature files.
@ -269,6 +276,13 @@ How to Make A Release
This will leave all the relevant files in a subdirectory called 'dist'. This will leave all the relevant files in a subdirectory called 'dist'.
___ scp the files to your home directory on dinsdale.python.org.
While you're waiting for the files to finish uploading, you can continue
on with the remaining tasks. You can also ask folks on #python-dev to
download the files as they finish uploading so that they can test them
on their platforms as well.
___ Now you want to perform the very important step of checking the ___ Now you want to perform the very important step of checking the
tarball you just created, to make sure a completely clean, tarball you just created, to make sure a completely clean,
virgin build passes the regression test. Here are the best virgin build passes the regression test. Here are the best
@ -308,18 +322,13 @@ How to Make A Release
To ensure that the regression test suite passes. If not, you To ensure that the regression test suite passes. If not, you
screwed up somewhere! screwed up somewhere!
___ Upload the tar files to dinsdale.python.org using scp.
___ Now we're waiting for the scp to dinsdale to finish. Da de da,
da de dum, hmm, hmm, dum de dum.
___ Now you need to go to dinsdale.python.org and move all the files ___ Now you need to go to dinsdale.python.org and move all the files
in place over there. Our policy is that every Python version gets its in place over there. Our policy is that every Python version gets its
own directory, but each directory may contain several releases. We keep own directory, but each directory may contain several releases. We keep
all old releases, moving them into a "prev" subdirectory when we have a all old releases, moving them into a "prev" subdirectory when we have a
new release. new release.
So, there's a directory called "2.6" which contains Python-2.5a2.exe and So, there's a directory called "2.6" which contains Python-2.6a2.exe and
Python-2.6a2.tgz, along with a "prev" subdirectory containing Python-2.6a2.tgz, along with a "prev" subdirectory containing
Python-2.6a1.msi, Python-2.6a1.tgz, Python-2.6a1.tar.bz2, etc. Python-2.6a1.msi, Python-2.6a1.tgz, Python-2.6a1.tar.bz2, etc.
@ -335,9 +344,10 @@ How to Make A Release
directory, You'll move everything in there when the final release directory, You'll move everything in there when the final release
comes out. comes out.
___ Move the .tgz, tar.bz2, and .msi files to this directory. Make ___ Move the release .tgz, tar.bz2, and .msi files into place
sure they are world readable. They should also be group writable,
and group-owned by webmaster. Make sure they are world readable. They should also be group
writable, and group-owned by webmaster.
___ md5sum the files and make sure they got uploaded intact. ___ md5sum the files and make sure they got uploaded intact.
@ -377,6 +387,38 @@ How to Make A Release
___ Add a news section item to the front page by editing newsindex.yml. The ___ Add a news section item to the front page by editing newsindex.yml. The
format should be pretty self evident. format should be pretty self evident.
___ If this is a final release...
___ update the 'Quick Links' section on the front page. Edit the
top-level `content.ht` file.
___ update the download page, editing `download/content.ht`
___ edit the previous release's last release content.ht page to point to
the new release.
___ Mention the release as the most recent stable one in
`doc/faq/general.ht` (section "How stable is Python?")
___ update `doc/content.ht` to indicate the new current documentation
version, and remove the current version from any 'in development'
section.
___ add the new version to `doc/version/content.ht`
___ Make the last change to the documentation area on python.org.
The "current" symlink needs to be updated if this release is the
highest-versioned release. Log in to dinsdale.python.org, and
update a symlink in the doc/ tree:
# on dinsdale:
$ cd /data/ftp.python.org/pub/www.python.org/doc/
$ rm current && ln -s $VERSION current
XXX This does not seem complete. I still don't really understand
how all the documentation stuff hangs together.
___ Edit download/releases/content.ht to update the version numbers for ___ Edit download/releases/content.ht to update the version numbers for
this release. There are a bunch of places you need to touch: this release. There are a bunch of places you need to touch:
@ -412,22 +454,6 @@ How to Make A Release
python-announce@python.org python-announce@python.org
python-dev@python.org python-dev@python.org
___ XXX Mention the release as the most recent stable one in
pydotorg:doc/faq/general.ht (section "How stable is
Python?")
___ XXX Make the last change to the documentation area on
python.org. (Remember those from the documentation items above?
It's time now.)
The "current" symlink needs to be updated if this release is the
highest-versioned release. Log in to dinsdale.python.org, and
update a symlink in the doc/ tree:
# on dinsdale:
$ cd /data/ftp.python.org/pub/www.python.org/doc/
$ rm current && ln -s $VERSION current
Now it's time to do some cleaning up. These steps are very important! Now it's time to do some cleaning up. These steps are very important!
___ If you made a non-maintenance branch, be sure to merge it into ___ If you made a non-maintenance branch, be sure to merge it into
@ -522,7 +548,7 @@ Final Release Notes
three major releases: Windows, Mac, and source. So we add this three major releases: Windows, Mac, and source. So we add this
extra step to the release process for a final release: extra step to the release process for a final release:
___ Hold up the final release until the WE and ME approve, or until we ___ Hold up the final release until the Experts approve, or until we
lose patience <wink>. lose patience <wink>.

View File

@ -59,9 +59,10 @@ Release Schedule
Jul 17 2008: Python 2.6b2 and 3.0b2 are released Jul 17 2008: Python 2.6b2 and 3.0b2 are released
Aug 20 2008: Python 2.6b3 and 3.0b3 are released Aug 20 2008: Python 2.6b3 and 3.0b3 are released
Sep 12 2008: Python 2.6rc1 is released Sep 12 2008: Python 2.6rc1 is released
Sep 17 2008: Python 2.6rc2 and 3.0rc1 planned Sep 17 2008: Python 2.6rc2 and 3.0rc1 released
Oct 01 2008: Python 2.6final and 3.0rc2 planned Oct 01 2008: Python 2.6 final released
Oct 15 2008: Python 3.0final planned ??? ?? 2008: Python 3.0rc2 planned
??? ?? 2008: Python 3.0final planned
See the public `Google calendar`_ See the public `Google calendar`_