Quick checkin of an updated version by Neal Norwitz.
No guarantees that this is correct, but it's definitely better than what we had before. At least *some* of the CVS references have been replaced by SVN references.
This commit is contained in:
parent
191e84b988
commit
ec44b2c139
261
pep-0101.txt
261
pep-0101.txt
|
@ -2,7 +2,7 @@ PEP: 101
|
||||||
Title: Doing Python Releases 101
|
Title: Doing Python Releases 101
|
||||||
Version: $Revision$
|
Version: $Revision$
|
||||||
Last-Modified: $Date$
|
Last-Modified: $Date$
|
||||||
Author: barry@python.org (Barry Warsaw), guido@python.org (Guido van Rossum)
|
Author: barry@python.org (Barry A. Warsaw), guido@python.org (Guido van Rossum)
|
||||||
Status: Active
|
Status: Active
|
||||||
Type: Informational
|
Type: Informational
|
||||||
Created: 22-Aug-2001
|
Created: 22-Aug-2001
|
||||||
|
@ -20,25 +20,31 @@ Abstract
|
||||||
recipe and you can actually print this out and check items off as
|
recipe and you can actually print this out and check items off as
|
||||||
you complete them.
|
you complete them.
|
||||||
|
|
||||||
|
XXX: This version is a partial update by Neal Norwitz. There are
|
||||||
|
undoubtedly still many places where reality differs!
|
||||||
|
|
||||||
|
|
||||||
How to Make A Release
|
How to Make A Release
|
||||||
|
|
||||||
Here are the steps taken to make a Python release. Some steps are
|
Here are the steps taken to make a Python release. Some steps are
|
||||||
more fuzzy than others because there's little that can be
|
more fuzzy than others because there's little that can be
|
||||||
automated (e.g. writing the NEWS entries). Where a step is
|
automated (e.g. writing the NEWS entries). Where a step is
|
||||||
usually performed by An Expert, the name of that expert is given.
|
usually performed by An Expert, the role of that expert is given.
|
||||||
Otherwise, assume the step is done by the Release Manager (RM),
|
Otherwise, assume the step is done by the Release Manager (RM),
|
||||||
the designated person performing the release. Almost every place
|
the designated person performing the release. The roles and their
|
||||||
the RM is mentioned below, this step can also be done by the BDFL
|
current experts are:
|
||||||
of course!
|
|
||||||
|
* WE = Windows: Martin von Loewis
|
||||||
|
* ME = Mac: Ronald Oussoren
|
||||||
|
* DE = Documentation: Fred Drake
|
||||||
|
|
||||||
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
|
||||||
steps.
|
steps.
|
||||||
|
|
||||||
We use the following conventions in the examples below. Where a
|
We use the following conventions in the examples below. Where a
|
||||||
release number is given, it is of the form X.YaZ, e.g. 2.5a3 for
|
release number is given, it is of the form X.YaZ, e.g. 2.6a3 for
|
||||||
Python 2.5 alpha 3, where "a" == alpha, "b" == beta, "rc" ==
|
Python 2.6 alpha 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
|
||||||
|
@ -48,19 +54,20 @@ How to Make A Release
|
||||||
say X.Y.MaZ.
|
say X.Y.MaZ.
|
||||||
|
|
||||||
Note: This document has been updated to reflect the more
|
Note: This document has been updated to reflect the more
|
||||||
streamlined procedures used to release Python 2.5 (including the
|
streamlined procedures used to release Python 2.6 (including the
|
||||||
alphas and betas).
|
alphas and betas).
|
||||||
|
|
||||||
___ Impose a check-in freeze. Send a message to
|
___ Impose a check-in freeze. Send a message to
|
||||||
python-dev@python.org telling people not to make any check-ins
|
python-dev@python.org telling people not to make any check-ins
|
||||||
on the tree until further notice.
|
on the tree until further notice.
|
||||||
|
|
||||||
At this point, nobody except the RM should make any commits to
|
At this point, nobody except the RM or his duly assigned agents
|
||||||
the branch (or his duly assigned agents, i.e. Guido the BDFL,
|
should make any commits to the branch. The assigned agents are
|
||||||
Fred Drake for documentation, or Martin v. Loewis for Windows).
|
either from the list above or by coordination as necessary. If
|
||||||
If the RM screwed up and some desperate last minute change to the
|
a checkin needs to made, make sure to state in the checkin
|
||||||
branch is necessary, it can mean extra work for Fred and Martin.
|
comment that the change was approved. If the RM screwed up and
|
||||||
So try to avoid this!
|
some desperate last minute change to the branch is necessary, it
|
||||||
|
can mean extra work for others. So try to avoid this!
|
||||||
|
|
||||||
___ Log into irc.freenode.net and join the #python-dev channel.
|
___ Log into irc.freenode.net and join the #python-dev channel.
|
||||||
|
|
||||||
|
@ -68,38 +75,36 @@ How to Make A Release
|
||||||
world. This IRC channel is where we've arranged to meet.
|
world. This IRC channel is where we've arranged to meet.
|
||||||
|
|
||||||
___ The most important thing to do is to update the Misc/NEWS file.
|
___ The most important thing to do is to update the Misc/NEWS file.
|
||||||
Tim will need this in order to do the Windows release and he
|
This step can be pretty tedious, so it's best to get to it
|
||||||
likes to stay up late. This step can be pretty tedious, so it's
|
immediately after making the branch, or even before you've made
|
||||||
best to get to it immediately after making the branch, or even
|
the branch.
|
||||||
before you've made the branch.
|
|
||||||
|
|
||||||
Add high level items new to this release. E.g. if we're
|
Add high level items new to this release. E.g. if we're
|
||||||
releasing 2.5a3, there must be a section at the top of the file
|
releasing 2.6a3, there must be a section at the top of the file
|
||||||
explaining "What's new in Python 2.5a3". It will be followed by
|
explaining "What's new in Python 2.6a3". It will be followed by
|
||||||
a section entitled "What's new in Python 2.5a2".
|
a section entitled "What's new in Python 2.6a2".
|
||||||
|
|
||||||
Note that you /hope/ that as developers add new features to the
|
Note that you /hope/ that as developers add new features to the
|
||||||
trunk, they've updated the NEWS file accordingly. You can't be
|
trunk, they've updated the NEWS file accordingly. You can't be
|
||||||
positive, so double check. If you're a Unix weenie, it helps to
|
positive, so double check. It helps to verify with the Windows
|
||||||
verify with Tim Peters about changes on Windows, and Jack Jansen
|
and Mac experts.
|
||||||
about changes on the Mac.
|
|
||||||
|
|
||||||
This command should help you:
|
This command should help you:
|
||||||
|
|
||||||
% cvs log | python Tools/scripts/logmerge.py > /tmp/news.txt
|
% svn log -r '{YYYY-MM-DD}:HEAD' > /tmp/news.txt
|
||||||
|
|
||||||
IOW, you're printing out all the cvs log entries from the
|
IOW, you're printing out all the svn log entries from the
|
||||||
previous release until now. You can then troll through the
|
previous release date until now. You can then troll through the
|
||||||
news.txt file looking for interesting things to add to NEWS.
|
news.txt file looking for interesting things to add to NEWS.
|
||||||
|
|
||||||
___ For major releases (e.g. 2.5 final), move any historical "what's
|
___ For major releases (e.g. 2.6 final), move any historical "what's
|
||||||
new" entries from Misc/NEWS to Misc/HISTORY.
|
new" entries from Misc/NEWS to Misc/HISTORY.
|
||||||
|
|
||||||
___ 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.
|
||||||
|
|
||||||
___ For final (non-alpha/beta/candidate) releases, make sure the
|
___ Make sure the release date is fully spelled out in
|
||||||
release date is fully spelled out in Doc/commontex/boilerplate.tex.
|
Doc/commontex/boilerplate.tex.
|
||||||
|
|
||||||
___ Tag and/or branch the tree for release X.YaZ
|
___ Tag and/or branch the tree for release X.YaZ
|
||||||
|
|
||||||
|
@ -114,31 +119,30 @@ How to Make A Release
|
||||||
a short-lived release branch.
|
a short-lived release branch.
|
||||||
|
|
||||||
Practically speaking, we tag and branch just before making the
|
Practically speaking, we tag and branch just before making the
|
||||||
release. Tagging too early causes too much merging work.
|
release. Branching too early causes too much merging work.
|
||||||
|
|
||||||
___ Do a CVS update with the -A, -d, and -P flags, e.g.
|
When making a major release (e.g., for 2.6), you should branch.
|
||||||
% cvs -q update -d -P -A
|
To create a _branch_ (e.g., release26-maint), do the following:
|
||||||
|
|
||||||
To tag the tree, do the following:
|
___ svn copy \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/trunk \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/branches/release26-maint
|
||||||
|
|
||||||
___ cvs tag rXYaZ
|
When making a minor release (e.g., for 2.6a1 or 2.6.1), you should tag.
|
||||||
|
To create a _tag_ (e.g., r26a1), do the following:
|
||||||
|
|
||||||
To create a maintenance branch the following steps are taken:
|
___ svn copy \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/branches/release26-maint \
|
||||||
___ CVS tag the trunk with the symbolic name "releaseXY-fork", e.g.
|
svn+ssh://pythondev@svn.python.org/python/tags/r26a1
|
||||||
% cvs tag releaseXY-fork
|
|
||||||
|
|
||||||
___ Make the branch with the symbolic name "releaseXY-maint", e.g.
|
|
||||||
% cvs tag -b releaseXY-maint
|
|
||||||
|
|
||||||
___ Check out a clean version of the branch into a new directory.
|
___ Check out a clean version of the branch into a new directory.
|
||||||
You'll be doing a lot of work in this directory and you want
|
You'll be doing a lot of work in this directory and you want
|
||||||
to keep it straight from your trunk working directory. E.g.
|
to keep it straight from your trunk working directory. E.g.
|
||||||
|
|
||||||
% export CVSROOT=cvs.sf.net:/cvsroot/python
|
% svn co \
|
||||||
% cvs -q co -d python-25a3 -r release25-maint python/dist/src
|
svn+ssh://pythondev@svn.python.org/python/branches/release26-maint
|
||||||
|
|
||||||
___ cd into the branch directory.
|
___ cd relesae26-maint # cd into the branch directory.
|
||||||
|
|
||||||
___ Change Include/patchlevel.h in two places, to
|
___ Change Include/patchlevel.h in two places, to
|
||||||
reflect the new version number you've just created. You'll want
|
reflect the new version number you've just created. You'll want
|
||||||
|
@ -151,6 +155,9 @@ How to Make A Release
|
||||||
release date. Then update Lib/idlelib/idlever.py to show a matching
|
release date. Then update Lib/idlelib/idlever.py to show a matching
|
||||||
version.
|
version.
|
||||||
|
|
||||||
|
___ distutils also maintains its own versioning file
|
||||||
|
(Lib/distutils/__init__.py). Update this file with the Python version.
|
||||||
|
|
||||||
___ Change the "%define version" line of Misc/RPM/python-2.5.spec to
|
___ Change the "%define version" line of Misc/RPM/python-2.5.spec to
|
||||||
the same string as PY_VERSION was changed to above. E.g.
|
the same string as PY_VERSION was changed to above. E.g.
|
||||||
|
|
||||||
|
@ -169,10 +176,8 @@ How to Make A Release
|
||||||
different than is in the name of the current
|
different than is in the name of the current
|
||||||
"Misc/RPM/python-*.spec" file, rename the file:
|
"Misc/RPM/python-*.spec" file, rename the file:
|
||||||
|
|
||||||
% mv python-2.5.spec python-2.6.spec
|
% svn rename python-2.5.spec python-2.6.spec
|
||||||
% cvs remove python-2.5.spec
|
% svn commit
|
||||||
% cvs add python-2.6.spec
|
|
||||||
% cvs commit
|
|
||||||
|
|
||||||
___ If this is a release candidate, mail Sean <jafo@tummy.com>
|
___ If this is a release candidate, mail Sean <jafo@tummy.com>
|
||||||
noting the impending release, so that RPMs can be built and
|
noting the impending release, so that RPMs can be built and
|
||||||
|
@ -185,7 +190,11 @@ How to Make A Release
|
||||||
number changes, also update the LICENSE file.
|
number changes, also update the LICENSE file.
|
||||||
|
|
||||||
___ There's a copy of the license in
|
___ There's a copy of the license in
|
||||||
Doc/commontex/license.tex; Fred usually takes care of that.
|
Doc/commontex/license.tex; the DE usually takes care of that.
|
||||||
|
|
||||||
|
___ If the minor (middle) digit of the version number changes, update:
|
||||||
|
|
||||||
|
___ Doc/tut/tut.tex (4 references to [Pp]ython26)
|
||||||
|
|
||||||
___ Check the years on the copyright notice. If the last release
|
___ Check the years on the copyright notice. If the last release
|
||||||
was some time last year, add the current year to the copyright
|
was some time last year, add the current year to the copyright
|
||||||
|
@ -193,7 +202,7 @@ How to Make A Release
|
||||||
|
|
||||||
___ README
|
___ README
|
||||||
|
|
||||||
___ LICENSE
|
___ LICENSE (make sure to change on trunk and the branch)
|
||||||
|
|
||||||
___ Python/getcopyright.c
|
___ Python/getcopyright.c
|
||||||
|
|
||||||
|
@ -215,9 +224,9 @@ How to Make A Release
|
||||||
Doc/whatsnew/whatsnewXX.tex to include the actual release date;
|
Doc/whatsnew/whatsnewXX.tex to include the actual release date;
|
||||||
e.g. "Python 2.5 was released on August 1, 2003."
|
e.g. "Python 2.5 was released on August 1, 2003."
|
||||||
There's no need to edit this for alpha or beta releases. Note
|
There's no need to edit this for alpha or beta releases. Note
|
||||||
that Andrew often takes care of this.
|
that Andrew Kuchling often takes care of this.
|
||||||
|
|
||||||
___ At this point, Fred will create the formatted versions of the
|
___ At this point, the DE will create the formatted versions of the
|
||||||
documentation and push the appropriate files out to their FTP
|
documentation and push the appropriate files out to their FTP
|
||||||
locations on www.python.org. The HTML format is used to build
|
locations on www.python.org. The HTML format is used to build
|
||||||
the HTML Help format for the Windows installer, but the RM
|
the HTML Help format for the Windows installer, but the RM
|
||||||
|
@ -225,7 +234,7 @@ How to Make A Release
|
||||||
Help format will typically be generated by whoever builds the
|
Help format will typically be generated by whoever builds the
|
||||||
Windows installer.
|
Windows installer.
|
||||||
|
|
||||||
Once Fred is done, there can be no further checkins on the
|
Once the DE is done, there can be no further checkins on the
|
||||||
branch in the Doc/ directory -- not even by the RM.
|
branch in the Doc/ directory -- not even by the RM.
|
||||||
|
|
||||||
Building the documentation is done using the Makefile in the
|
Building the documentation is done using the Makefile in the
|
||||||
|
@ -311,36 +320,40 @@ How to Make A Release
|
||||||
required actions are described in a separate step of this
|
required actions are described in a separate step of this
|
||||||
checklist.
|
checklist.
|
||||||
|
|
||||||
___ Martin grabs the HTML to build the Windows helpfile.
|
___ Ping Neal Norwitz (or anyone else with access to the PSF box
|
||||||
|
which runs the automated builds) to fix conflicts that arise
|
||||||
|
in the checked out working areas.
|
||||||
|
|
||||||
|
___ The WE grabs the HTML to build the Windows helpfile.
|
||||||
The HTML files are unpacked into a new src/html directory, and
|
The HTML files are unpacked into a new src/html directory, and
|
||||||
runs this command to create the project files for MS HTML
|
runs this command to create the project files for MS HTML
|
||||||
Workshop:
|
Workshop:
|
||||||
|
|
||||||
% python ..\Doc\tools\prechm.py -v 2.5 python25
|
% python ..\Doc\tools\prechm.py -v 2.6 python26
|
||||||
|
|
||||||
HTML Workshop is then fired up on the created python25.hhp file,
|
HTML Workshop is then fired up on the created python25.hhp file,
|
||||||
finally resulting in an python25.chm file. He then copies the
|
finally resulting in an python26.chm file. He then copies the
|
||||||
file into the Doc directories of the build trees (once for
|
file into the Doc directories of the build trees (once for
|
||||||
each target architecture).
|
each target architecture).
|
||||||
|
|
||||||
___ Martin then generates Windows installer files for each Windows
|
___ The WE then generates Windows installer files for each Windows
|
||||||
target architecture (for Python 2.5, this means x86, Itanium,
|
target architecture (for Python 2.6, this means x86
|
||||||
and AMD64). He has one checkout tree per target architecture,
|
and AMD64). He has one checkout tree per target architecture,
|
||||||
and builds the pcbuild.sln project for the appropriate
|
and builds the pcbuild.sln project for the appropriate
|
||||||
architecture. He then edits Tools/msi/config.py to update
|
architecture. He then edits Tools/msi/config.py to update
|
||||||
full_current_version, and runs msi.py with ActivePython 2.5.
|
full_current_version, and runs msi.py with ActivePython 2.5.
|
||||||
For that to work, the following prerequisites must be met:
|
For that to work, the following prerequisites must be met:
|
||||||
|
|
||||||
- PC/icons.mak must have been run with nmake.
|
- PC\icons.mak must have been run with nmake.
|
||||||
|
|
||||||
- The cmd.exe window in which this is run must have Cygwin/bin
|
- The cmd.exe window in which this is run must have Cygwin/bin
|
||||||
in its path (atleast for x86).
|
in its path (atleast for x86).
|
||||||
|
|
||||||
- The cmd.exe window must have MS compiler tools for the target
|
- The cmd.exe window must have MS compiler tools for the target
|
||||||
architecture in its path (VS 2003 for x86, the platform
|
architecture in its path (VS 2003 for x86, the platform
|
||||||
SDK for Itanium and AMD64).
|
SDK for AMD64).
|
||||||
|
|
||||||
Martin checksums the files (*.msi and *.chm), uploads them to
|
The WE checksums the files (*.msi and *.chm), uploads them to
|
||||||
some place in the net, and emails you the location and md5sums.
|
some place in the net, and emails you the location and md5sums.
|
||||||
|
|
||||||
___ Sean Reifschneider grabs the HTML and uses this to build the
|
___ Sean Reifschneider grabs the HTML and uses this to build the
|
||||||
|
@ -351,48 +364,50 @@ 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-25a3
|
% cd .../python-26a3
|
||||||
|
|
||||||
___ Do a "cvs update" in this directory. Do NOT include the -A flag
|
___ Do a "svn update ; svn status" in this directory.
|
||||||
if you're working on a branch, but do include it if you're
|
|
||||||
working on the trunk.
|
|
||||||
|
|
||||||
You should not see any "M" files, but you may see several "P" or
|
You should not see any files. I.e. you better not have any
|
||||||
"U" files. I.e. you better not have any uncommitted changes in
|
uncommitted changes in your working directory, but you may pick
|
||||||
your working directory, but you may pick up some of Fred's or
|
up some of the expert's last minute changes.
|
||||||
Martin's last minute changes.
|
|
||||||
|
|
||||||
___ If you've seen updates to existing files, update the cvs tag:
|
___ If you've seen updates to existing files, update the svn tag:
|
||||||
|
|
||||||
% cvs tag -F r25a3
|
% svn copy \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/trunk \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/tags/r26a3
|
||||||
|
|
||||||
If you created a maintenance branch and you've changed any files
|
If you created a maintenance branch and you've changed any files
|
||||||
since you branched, tag the tree -- in the branch -- now with
|
since you branched, tag the tree -- in the branch -- now with
|
||||||
something like
|
something like
|
||||||
|
|
||||||
% cvs tag r25
|
% svn copy \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/trunk \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/tags/r26
|
||||||
|
|
||||||
This is the tag you will use below.
|
This is the tag you will use below.
|
||||||
|
|
||||||
___ Change to a neutral directory, i.e. one in which you can do a
|
___ Change to a neutral directory, i.e. one in which you can do a
|
||||||
fresh, virgin, cvs export of the branch. You will be creating a
|
fresh, virgin, svn export of the branch. You will be creating a
|
||||||
new directory at this location, to be named "Python-X.YaZ". Do
|
new directory at this location, to be named "Python-X.YaZ". Export
|
||||||
a CVS export of the tagged branch.
|
the tagged branch.
|
||||||
|
|
||||||
% cd ~
|
% cd ~
|
||||||
% export CVSROOT=cvs.sf.net:/cvsroot/python
|
% svn export -rr26c2 -d Python-2.6c2 python
|
||||||
% cvs export -rr25c2 -d Python-2.5c2 python/dist/src
|
|
||||||
|
|
||||||
___ Generate the tarball. Note that we're not using the `z' option
|
___ Generate the tarballs. Note that we're not using the `z' option
|
||||||
on the tar command because 1) that's only supported by GNU tar
|
on the tar command because 1) that's only supported by GNU tar
|
||||||
as far as we know, and 2) we're going to max out the compression
|
as far as we know, and 2) we're going to max out the compression
|
||||||
level, which isn't a supported option.
|
level, which isn't a supported option.
|
||||||
|
|
||||||
% tar cf - Python-2.5c2 | gzip -9 > Python-2.5c2.tgz
|
% tar cf - Python-2.6c2 | gzip -9 > Python-2.6c2.tgz
|
||||||
|
% tar cf - Python-2.6c2 | bzip2 -9 > Python-2.6c2.tar.bz2
|
||||||
|
|
||||||
___ Calculate the MD5 checksum of the tgz file you just created
|
___ Calculate the MD5 checksums of the files you just created
|
||||||
|
|
||||||
% md5sum Python-2.5c2.tgz
|
% md5sum Python-2.6c2.tgz
|
||||||
|
% md5sum Python-2.6c2.tar.bz2
|
||||||
|
|
||||||
Note that if you don't have the md5sum program, there is a
|
Note that if you don't have the md5sum program, there is a
|
||||||
Python replacement in the Tools/scripts/md5sum.py file.
|
Python replacement in the Tools/scripts/md5sum.py file.
|
||||||
|
@ -403,8 +418,8 @@ How to Make A Release
|
||||||
steps to take:
|
steps to take:
|
||||||
|
|
||||||
% cd /tmp
|
% cd /tmp
|
||||||
% tar zxvf ~/Python-2.5c2.tgz
|
% tar zxvf ~/Python-2.6c2.tgz # tar xjvf ~/Python-2.6c2.tar.bz2
|
||||||
% cd Python-2.5c2
|
% cd Python-2.6c2
|
||||||
% ls
|
% ls
|
||||||
(Do things look reasonable?)
|
(Do things look reasonable?)
|
||||||
% ./configure
|
% ./configure
|
||||||
|
@ -424,22 +439,26 @@ How to Make A Release
|
||||||
|
|
||||||
___ Upload the tgz file to dinsdale.python.org using scp.
|
___ Upload the tgz file to dinsdale.python.org using scp.
|
||||||
|
|
||||||
|
# XXX(nnorwitz): this entire section dealing with the website is outdated.
|
||||||
|
# The website uses SVN and the build process has changed.
|
||||||
___ While you're waiting, you can start twiddling the web pages to
|
___ While you're waiting, you can start twiddling the web pages to
|
||||||
include the announcement.
|
include the announcement.
|
||||||
|
|
||||||
___ If necessary, and if you have the right permissions (the
|
___ If necessary, and if you have the right permissions (the
|
||||||
python.org sysadmins must set this up for you), check out the
|
python.org sysadmins must set this up for you), check out the
|
||||||
web site CVS tree by doing:
|
web site tree by doing:
|
||||||
|
|
||||||
% cvs -d :ext:<you>@dinsdale.python.org:/usr/local/cvsroot co pydotorg
|
% cvs -d :ext:<you>@dinsdale.python.org:/usr/local/cvsroot co pydotorg
|
||||||
|
|
||||||
___ In the python.org web site CVS tree, cd to the X.Y
|
XXX: what's the svn equivalent?
|
||||||
|
|
||||||
|
___ In the python.org web site SVN tree, cd to the X.Y
|
||||||
subdirectory, and copy index.ht to new-index.ht. Be sure to
|
subdirectory, and copy index.ht to new-index.ht. Be sure to
|
||||||
do a "cvs update" first!
|
do a "svn update" first!
|
||||||
|
|
||||||
% cd .../pydotorg
|
% cd .../pydotorg
|
||||||
% cvs -q up -P -d
|
% svn up
|
||||||
% cd 2.5
|
% cd 2.6
|
||||||
% cp index.ht new-index.ht
|
% cp index.ht new-index.ht
|
||||||
|
|
||||||
___ Edit the file for content: usually you can globally replace
|
___ Edit the file for content: usually you can globally replace
|
||||||
|
@ -475,29 +494,29 @@ How to Make A Release
|
||||||
releases. We keep all old releases, moving them into a "prev"
|
releases. We keep all old releases, moving them into a "prev"
|
||||||
subdirectory when we have a new release.
|
subdirectory when we have a new release.
|
||||||
|
|
||||||
So, there's a directory called "2.5" which contains
|
So, there's a directory called "2.6" which contains
|
||||||
Python-2.5a2.exe and Python-2.5a2.tgz, along with a "prev"
|
Python-2.5a2.exe and Python-2.6a2.tgz, along with a "prev"
|
||||||
subdirectory containing Python-2.5a1.exe and Python-2.5a1.tgz.
|
subdirectory containing Python-2.6a1.msi, Python-2.6a1.tgz,
|
||||||
|
Python-2.6a1.tar.bz2, etc.
|
||||||
|
|
||||||
So...
|
So...
|
||||||
|
|
||||||
___ On dinsdale, cd to ~ftp/pub/python/X.Y creating it if
|
___ On dinsdale, cd /data/ftp.python.org/pub/python/X.Y[.Z]
|
||||||
necessary.
|
creating it if necessary.
|
||||||
|
|
||||||
___ Move the previous release files to a directory called "prev"
|
___ Move the previous release files to a directory called "prev"
|
||||||
creating the directory if necessary (make sure the directory
|
creating the directory if necessary (make sure the directory
|
||||||
has g+ws bits on). If this is the first alpha release of a
|
has g+ws bits on). If this is the first alpha release of a
|
||||||
new Python version, skip this step.
|
new Python version, skip this step.
|
||||||
|
|
||||||
___ Move the .tgz file and the .exe file to this directory. Make
|
___ Move the .tgz, tar.bz2, and .msi files to this directory. Make
|
||||||
sure they are world readable. They should also be group
|
sure they are world readable. They should also be group
|
||||||
writable, and group-owned by webmaster.
|
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.
|
||||||
|
|
||||||
|
|
||||||
___ Update the X.Y/bugs.ht file if necessary. It is best to get
|
___ Update the X.Y/bugs.ht file if necessary.
|
||||||
BDFL input for this step.
|
|
||||||
|
|
||||||
___ Now preview the new-index.ht file once more. IMPORTANT: follow
|
___ Now preview the new-index.ht file once more. IMPORTANT: follow
|
||||||
every link on the page to make sure it goes where you expect it
|
every link on the page to make sure it goes where you expect it
|
||||||
|
@ -510,8 +529,7 @@ How to Make A Release
|
||||||
|
|
||||||
___ Now it's time to write the announcement for the mailing lists.
|
___ Now it's time to write the announcement for the mailing lists.
|
||||||
This is the fuzzy bit because not much can be automated. You
|
This is the fuzzy bit because not much can be automated. You
|
||||||
can use one of Guido's earlier announcements as a template, but
|
can use an earlier announcement as a template, but edit it for content!
|
||||||
please edit it for content!
|
|
||||||
|
|
||||||
Once the announcement is ready, send it to the following
|
Once the announcement is ready, send it to the following
|
||||||
addresses:
|
addresses:
|
||||||
|
@ -524,16 +542,6 @@ How to Make A Release
|
||||||
pydotorg:doc/faq/general.ht (section "How stable is
|
pydotorg:doc/faq/general.ht (section "How stable is
|
||||||
Python?")
|
Python?")
|
||||||
|
|
||||||
___ Send a SourceForge News Item about the release. From the
|
|
||||||
project's "menu bar", select the "News" link; once in News,
|
|
||||||
select the "Submit" link. Type a suitable subject (e.g. "Python
|
|
||||||
2.5c1 released" :-) in the Subject box, add some text to the
|
|
||||||
Details box (at the very least including the release URL at
|
|
||||||
www.python.org and the fact that you're happy with the release)
|
|
||||||
and click the SUBMIT button.
|
|
||||||
|
|
||||||
Feel free to remove any old news items.
|
|
||||||
|
|
||||||
___ Make the last change to the documentation area on
|
___ Make the last change to the documentation area on
|
||||||
python.org. (Remember those from the documentation items above?
|
python.org. (Remember those from the documentation items above?
|
||||||
It's time now.)
|
It's time now.)
|
||||||
|
@ -560,11 +568,12 @@ How to Make A Release
|
||||||
___ Check out a completely clean, virgin working directory of the
|
___ Check out a completely clean, virgin working directory of the
|
||||||
trunk, by doing this in the directory that is the parent of
|
trunk, by doing this in the directory that is the parent of
|
||||||
your branch working directory python-XYaZ:
|
your branch working directory python-XYaZ:
|
||||||
% cvs -d <cvsroot> co -d python-clean python/dist/src
|
% svn co \
|
||||||
|
svn+ssh://pythondev@svn.python.org/python/trunk python-clean
|
||||||
|
|
||||||
___ Run a diff against your branch by doing this in the common
|
___ Run a diff against your branch by doing this in the common
|
||||||
parent directory containing both python-clean and python-XYaZ:
|
parent directory containing both python-clean and python-XYaZ:
|
||||||
% diff -r python-clean python-25a2 | grep ^diff | grep -v CVS \
|
% diff -r python-clean python-26a2 | grep ^diff | grep -v /.svn/ \
|
||||||
> /tmp/diffcmd.sh
|
> /tmp/diffcmd.sh
|
||||||
|
|
||||||
___ Edit diffcmd.sh to get rid of files that you know don't have
|
___ Edit diffcmd.sh to get rid of files that you know don't have
|
||||||
|
@ -594,7 +603,7 @@ How to Make A Release
|
||||||
patch, try using -p0 instead of -p1. Otherwise, your diff
|
patch, try using -p0 instead of -p1. Otherwise, your diff
|
||||||
command was messed up, so try again.
|
command was messed up, so try again.
|
||||||
|
|
||||||
___ cd to python-clean and do a "cvs commit". Use as your log
|
___ cd to python-clean and do a "svn commit". Use as your log
|
||||||
message something like "Merging the rXYaZ-maint tag back into
|
message something like "Merging the rXYaZ-maint tag back into
|
||||||
the trunk".
|
the trunk".
|
||||||
|
|
||||||
|
@ -603,7 +612,7 @@ How to Make A Release
|
||||||
indicating that the trunk is going to be moving forward with
|
indicating that the trunk is going to be moving forward with
|
||||||
development. E.g. the line should look like:
|
development. E.g. the line should look like:
|
||||||
|
|
||||||
#define PY_VERSION "2.5a2+"
|
#define PY_VERSION "2.6a2+"
|
||||||
|
|
||||||
Make sure that the other PY_ version macros contain the
|
Make sure that the other PY_ version macros contain the
|
||||||
correct values. Commit this change.
|
correct values. Commit this change.
|
||||||
|
@ -640,15 +649,6 @@ What Next?
|
||||||
|
|
||||||
You've just made a Python release!
|
You've just made a Python release!
|
||||||
|
|
||||||
Actually, there is one more step. You should turn over ownership
|
|
||||||
of the branch to Jack Jansen. All this means is that now he will
|
|
||||||
be responsible for making commits to the branch. He's going to
|
|
||||||
use this to build the MacOS versions. He may send you information
|
|
||||||
about the Mac release that should be merged into the informational
|
|
||||||
pages on www.python.org. When he's done, he'll tag the branch
|
|
||||||
something like "rX.YaZ-mac". He'll also be responsible for
|
|
||||||
merging any Mac-related changes back into the trunk.
|
|
||||||
|
|
||||||
|
|
||||||
Final Release Notes
|
Final Release Notes
|
||||||
|
|
||||||
|
@ -658,13 +658,10 @@ Final Release Notes
|
||||||
of weeks, but final releases can last for years!).
|
of weeks, but final releases can last for years!).
|
||||||
|
|
||||||
For this reason we want to have a higher coordination between the
|
For this reason we want to have a higher coordination between the
|
||||||
three major releases: Windows, Mac, and source. The Windows and
|
three major releases: Windows, Mac, and source. So we add this
|
||||||
source releases benefit from the close proximity of the respective
|
extra step to the release process for a final release:
|
||||||
release-bots. But the Mac-bot, Jack Jansen, is 6 hours away. So
|
|
||||||
we add this extra step to the release process for a final
|
|
||||||
release:
|
|
||||||
|
|
||||||
___ Hold up the final release until Jack approves, or until we
|
___ Hold up the final release until the WE and ME approve, or until we
|
||||||
lose patience <wink>.
|
lose patience <wink>.
|
||||||
|
|
||||||
|
|
||||||
|
@ -675,7 +672,7 @@ Windows Notes
|
||||||
precompiled "foreign" binaries (Tcl/Tk, expat, etc). So Windows
|
precompiled "foreign" binaries (Tcl/Tk, expat, etc). So Windows
|
||||||
testing is tiresome but very necessary.
|
testing is tiresome but very necessary.
|
||||||
|
|
||||||
Concurrent with uploading the installer, Martin installs Python
|
Concurrent with uploading the installer, the WE installs Python
|
||||||
from it twice: once into the default directory suggested by the
|
from it twice: once into the default directory suggested by the
|
||||||
installer, and later into a directory with embedded spaces in its
|
installer, and later into a directory with embedded spaces in its
|
||||||
name. For each installation, he runs the full regression suite
|
name. For each installation, he runs the full regression suite
|
||||||
|
@ -687,8 +684,8 @@ Windows Notes
|
||||||
Help -> Python Documentation works. When trying pydoc this way
|
Help -> Python Documentation works. When trying pydoc this way
|
||||||
(the "Module Docs" Start menu entry), make sure the "Start
|
(the "Module Docs" Start menu entry), make sure the "Start
|
||||||
Browser" button works, and make sure you can search for a random
|
Browser" button works, and make sure you can search for a random
|
||||||
module (Tim uses "random" <wink>) and then that the "go to
|
module (like "random" <wink>) and then that the "go to selected"
|
||||||
selected" button works.
|
button works.
|
||||||
|
|
||||||
It's amazing how much can go wrong here -- and even more amazing
|
It's amazing how much can go wrong here -- and even more amazing
|
||||||
how often last-second checkins break one of these things. If
|
how often last-second checkins break one of these things. If
|
||||||
|
@ -701,7 +698,7 @@ Windows Notes
|
||||||
can, also test the installer on Windows 9x.
|
can, also test the installer on Windows 9x.
|
||||||
|
|
||||||
WRT Step 5 above (verify the release media), since by the time
|
WRT Step 5 above (verify the release media), since by the time
|
||||||
release files are ready to download Tim has generally run many
|
release files are ready to download the WE has generally run many
|
||||||
Windows tests on the installer he uploaded, he usually doesn't do
|
Windows tests on the installer he uploaded, he usually doesn't do
|
||||||
anything for Step 5 except a full byte-comparison ("fc /b" if
|
anything for Step 5 except a full byte-comparison ("fc /b" if
|
||||||
using a Windows shell) of the downloaded file against the file he
|
using a Windows shell) of the downloaded file against the file he
|
||||||
|
|
Loading…
Reference in New Issue