2001-08-22 18:43:42 -04:00
|
|
|
|
PEP: 101
|
|
|
|
|
Title: Doing Python Releases 101
|
|
|
|
|
Version: $Revision$
|
|
|
|
|
Last-Modified: $Date$
|
2009-01-07 22:44:48 -05:00
|
|
|
|
Author: barry@python.org (Barry Warsaw), guido@python.org (Guido van Rossum)
|
2001-08-22 18:43:42 -04:00
|
|
|
|
Status: Active
|
|
|
|
|
Type: Informational
|
|
|
|
|
Created: 22-Aug-2001
|
|
|
|
|
Post-History:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Abstract
|
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Making a Python release is a thrilling and crazy process. You've heard
|
|
|
|
|
the expression "herding cats"? Imagine trying to also saddle those
|
|
|
|
|
purring little creatures up, and ride them into town, with some of their
|
|
|
|
|
buddies firmly attached to your bare back, anchored by newly sharpened
|
|
|
|
|
claws. At least they're cute, you remind yourself.
|
|
|
|
|
|
2008-09-12 20:22:56 -04:00
|
|
|
|
Actually, no that's a slight exaggeration <wink>. The Python release
|
2008-05-08 19:52:56 -04:00
|
|
|
|
process has steadily improved over the years and now, with the help of our
|
2008-09-12 20:22:56 -04:00
|
|
|
|
amazing community, is really not too difficult. This PEP attempts to
|
2008-05-08 19:52:56 -04:00
|
|
|
|
collect, in one place, all the steps needed to make a Python release. It
|
|
|
|
|
is organized as a recipe and you can actually print this out and check
|
|
|
|
|
items off as you complete them.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2013-08-04 02:52:51 -04:00
|
|
|
|
Things You'll Need
|
|
|
|
|
|
|
|
|
|
As a release manager there are a lot of resources you'll need to access.
|
|
|
|
|
Here's a hopefully-complete list.
|
|
|
|
|
|
|
|
|
|
* A GPG key.
|
|
|
|
|
|
|
|
|
|
Python releases are digitally signed with GPG; you'll need a key,
|
|
|
|
|
which hopefully will be on the "web of trust" with at least one of
|
|
|
|
|
the other release managers.
|
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
* Access to ``dl-files.iad1.psf.io``, the server that hosts download files,
|
|
|
|
|
and ``docs.iad1.psf.io``, the server that hosts the documentation.
|
2014-08-30 17:25:09 -04:00
|
|
|
|
You'll be uploading files directly here.
|
2013-08-04 02:52:51 -04:00
|
|
|
|
|
2014-03-17 02:23:38 -04:00
|
|
|
|
* Shell access to ``hg.python.org``, the Python Mercurial host. You'll
|
|
|
|
|
have to adapt repository configuration there.
|
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
* An administratior account on www.python.org, including an "API key".
|
|
|
|
|
|
2013-08-04 02:52:51 -04:00
|
|
|
|
* Write access to the PEP repository.
|
|
|
|
|
|
|
|
|
|
If you're reading this, you probably already have this--the first
|
|
|
|
|
task of any release manager is to draft the release schedule. But
|
|
|
|
|
in case you just signed up... sucker! I mean, uh, congratulations!
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2014-08-01 16:39:37 -04:00
|
|
|
|
* Posting access to http://blog.python.org, a Blogger-hosted weblog.
|
|
|
|
|
The RSS feed from this blog is used for the 'Python News' section
|
|
|
|
|
on www.python.org.
|
|
|
|
|
|
2015-06-05 21:55:54 -04:00
|
|
|
|
* A subscription to the super secret release manager mailing list, which may
|
|
|
|
|
or may not be called ``python-cabal``. Bug Barry about this.
|
|
|
|
|
|
2001-08-22 18:43:42 -04:00
|
|
|
|
How to Make A Release
|
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
Here are the steps taken to make a Python release. Some steps are more
|
|
|
|
|
fuzzy than others because there's little that can be automated (e.g.
|
|
|
|
|
writing the NEWS entries). Where a step is usually performed by An
|
|
|
|
|
Expert, the role of that expert is given. Otherwise, assume the step is
|
|
|
|
|
done by the Release Manager (RM), the designated person performing the
|
|
|
|
|
release. The roles and their current experts are:
|
|
|
|
|
|
2016-06-11 22:58:03 -04:00
|
|
|
|
* RM = Release Manager: Ned Deily <nad@python.org> (US),
|
2016-06-11 22:37:39 -04:00
|
|
|
|
Larry Hastings <larry@hastings.org> (US),
|
|
|
|
|
Benjamin Peterson <benjamin@python.org> (US)
|
|
|
|
|
* WE = Windows: Steve Dower <steve.dower@microsoft.com>
|
2016-06-11 22:58:03 -04:00
|
|
|
|
* ME = Mac: Ned Deily <nad@python.org> (US)
|
2008-12-05 03:19:56 -05:00
|
|
|
|
* DE = Docs: Georg Brandl <georg@python.org> (Central Europe)
|
2016-06-11 22:37:39 -04:00
|
|
|
|
* IE = Idle Expert: Terry Reedy <tjreedy@udel.edu> (US)
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
You should not make the release public (by updating the website and
|
|
|
|
|
sending announcements) before all experts have updated their bits.
|
|
|
|
|
In rare cases where the expert for Windows or Mac is MIA, you may add
|
|
|
|
|
a message "(Platform) binaries will be provided shortly" and proceed.
|
2008-12-05 18:33:03 -05:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
XXX: We should include a dependency graph to illustrate the steps that can
|
|
|
|
|
be taken in parallel, or those that depend on other steps.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
As much as possible, the release steps are automated and guided by the
|
2011-05-08 05:14:12 -04:00
|
|
|
|
release script, which is available in a separate repository:
|
2008-05-08 19:52:56 -04:00
|
|
|
|
|
2015-05-17 00:14:10 -04:00
|
|
|
|
https://hg.python.org/release/
|
2008-05-08 19:52:56 -04:00
|
|
|
|
|
2008-10-01 23:10:35 -04:00
|
|
|
|
We use the following conventions in the examples below. Where a release
|
2012-03-04 09:59:45 -05:00
|
|
|
|
number is given, it is of the form X.Y.ZaN, e.g. 3.3.0a3 for Python 3.3.0
|
|
|
|
|
alpha 3, where "a" == alpha, "b" == beta, "rc" == release candidate.
|
2003-07-31 10:21:07 -04:00
|
|
|
|
|
2012-03-04 09:59:45 -05:00
|
|
|
|
Release tags are named "vX.Y.ZaN". The branch name for minor release
|
2011-05-08 05:14:12 -04:00
|
|
|
|
maintenance branches is "X.Y".
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-04-03 21:19:32 -04:00
|
|
|
|
This helps by performing several automatic editing steps, and guides you
|
|
|
|
|
to perform some manual editing steps.
|
2008-02-21 07:00:38 -05:00
|
|
|
|
|
2008-09-12 20:22:56 -04:00
|
|
|
|
___ Log into irc.freenode.net and join the #python-dev channel.
|
2008-08-20 23:04:15 -04:00
|
|
|
|
|
2008-10-01 23:10:35 -04:00
|
|
|
|
You probably need to coordinate with other people around the world.
|
|
|
|
|
This IRC channel is where we've arranged to meet.
|
2008-09-12 20:22:56 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ Check to see if there are any showstopper bugs.
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Go to http://bugs.python.org and look for any open bugs that can block
|
|
|
|
|
this release. You're looking at the Priority of the open bugs for the
|
|
|
|
|
release you're making; here are the relevant definitions:
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
release blocker - Stops the release dead in its tracks. You may not
|
2008-10-01 23:10:35 -04:00
|
|
|
|
make any release with any open release blocker bugs.
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2008-09-12 20:22:56 -04:00
|
|
|
|
deferred blocker - Doesn't block this release, but it will block a
|
2011-01-15 11:39:01 -05:00
|
|
|
|
future release. You may not make a final or
|
2008-10-01 23:10:35 -04:00
|
|
|
|
candidate release with any open deferred blocker
|
|
|
|
|
bugs.
|
2008-09-12 20:22:56 -04:00
|
|
|
|
|
2008-10-01 23:10:35 -04:00
|
|
|
|
critical - Important bugs that should be fixed, but which does not block
|
|
|
|
|
a release.
|
2003-12-04 19:45:14 -05:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Review the release blockers and either resolve them, bump them down to
|
2008-09-12 20:22:56 -04:00
|
|
|
|
deferred, or stop the release and ask for community assistance. If
|
2008-10-01 23:10:35 -04:00
|
|
|
|
you're making a final or candidate release, do the same with any open
|
|
|
|
|
deferred.
|
2005-09-28 00:21:36 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ Check the stable buildbots.
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2015-12-05 19:54:44 -05:00
|
|
|
|
Go to http://buildbot.python.org/all/waterfall
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2015-12-05 21:01:21 -05:00
|
|
|
|
Look at the buildbots for the release
|
2008-05-08 19:52:56 -04:00
|
|
|
|
you're making. Ignore any that are offline (or inform the community so
|
2008-10-01 23:10:35 -04:00
|
|
|
|
they can be restarted). If what remains are (mostly) green buildbots,
|
|
|
|
|
you're good to go. If you have non-offline red buildbots, you may want
|
|
|
|
|
to hold up the release until they are fixed. Review the problems and
|
|
|
|
|
use your judgement, taking into account whether you are making an alpha,
|
|
|
|
|
beta, or final release.
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Make a release clone.
|
|
|
|
|
|
|
|
|
|
Create a local clone of the cpython repository (called the "release
|
|
|
|
|
clone" from now on).
|
2014-03-09 05:01:33 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
Also clone the repo at http://hg.python.org/cpython using the
|
|
|
|
|
server-side clone feature. The name of the new clone should preferably
|
|
|
|
|
have a "releasing/" prefix. The other experts will use the release
|
|
|
|
|
clone for making the binaries, so it is important that they have access
|
|
|
|
|
to it!
|
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
It's best to set up your local release clone to push to the remote
|
2011-05-08 05:14:12 -04:00
|
|
|
|
release clone by default (by editing .hg/hgrc to that effect).
|
|
|
|
|
|
|
|
|
|
___ Notify all committers by sending email to python-committers@python.org.
|
|
|
|
|
|
|
|
|
|
Since we're now working with a distributed version control system, there
|
|
|
|
|
is no need to stop everyone from pushing to the main repo; you'll just
|
|
|
|
|
work in your own clone. Therefore, there won't be any checkin freezes.
|
|
|
|
|
|
|
|
|
|
However, all committers should know the point at which your release
|
|
|
|
|
clone was made, as later commits won't make it into the release without
|
|
|
|
|
extra effort.
|
|
|
|
|
|
|
|
|
|
___ Make sure the current branch of your release clone is the branch you
|
2015-09-07 21:39:54 -04:00
|
|
|
|
want to release from. (``hg id``)
|
2011-05-08 05:14:12 -04:00
|
|
|
|
|
2015-05-30 19:56:30 -04:00
|
|
|
|
___ Check the docs for markup errors.
|
2008-10-02 17:51:11 -04:00
|
|
|
|
|
2015-05-30 19:56:30 -04:00
|
|
|
|
cd to the Doc directory and run ``make suspicious``. If any markup
|
|
|
|
|
errors are found, fix them.
|
2011-05-08 05:14:12 -04:00
|
|
|
|
|
2015-05-30 19:56:30 -04:00
|
|
|
|
___ Regenerate Lib/pydoc-topics.py.
|
2010-10-06 06:26:59 -04:00
|
|
|
|
|
2015-05-30 19:56:30 -04:00
|
|
|
|
While still in the Doc directory, run ``make pydoc-topics``. Then copy
|
|
|
|
|
``build/pydoc-topics/topics.py`` to ``../Lib/pydoc_data/topics.py``.
|
2008-10-02 17:51:11 -04:00
|
|
|
|
|
2015-05-30 19:56:30 -04:00
|
|
|
|
___ Commit your changes to pydoc_topics.py
|
|
|
|
|
(and any fixes you made in the docs).
|
2011-05-08 05:14:12 -04:00
|
|
|
|
|
2015-12-05 20:04:15 -05:00
|
|
|
|
___ Make sure the SOURCE_URI in ``Doc/tools/extensions/pyspecific.py``
|
2011-07-23 03:53:12 -04:00
|
|
|
|
points to the right branch in the hg repository (or ``default`` for
|
|
|
|
|
unstable releases of the default branch).
|
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ Bump version numbers via the release script.
|
2001-09-07 14:58:47 -04:00
|
|
|
|
|
2012-03-04 09:59:45 -05:00
|
|
|
|
$ .../release/release.py --bump X.Y.ZaN
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2016-06-11 23:49:59 -04:00
|
|
|
|
Reminder: X, Y, Z, and N should be integers.
|
|
|
|
|
a should be one of "a", "b", or "rc" (e.g. "3.4.3rc1").
|
|
|
|
|
For final releases omit the aN ("3.4.3"). For the first
|
|
|
|
|
release of a new version Z should be 0 ("3.6.0").
|
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
This automates updating various release numbers, but you will have to
|
|
|
|
|
modify a few files manually. If your $EDITOR environment variable is
|
|
|
|
|
set up correctly, release.py will pop up editor windows with the files
|
|
|
|
|
you need to edit.
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2008-10-01 23:10:35 -04:00
|
|
|
|
It is important to update the Misc/NEWS file, however in recent years,
|
|
|
|
|
this has become easier as the community is responsible for most of the
|
|
|
|
|
content of this file. You should only need to review the text for
|
|
|
|
|
sanity, and update the release date with today's date.
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2013-09-07 07:33:30 -04:00
|
|
|
|
___ Make sure all changes have been committed. (``release.py --bump``
|
|
|
|
|
doesn't check in its changes for you.)
|
2011-05-08 05:14:12 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ Check the years on the copyright notice. If the last release
|
|
|
|
|
was some time last year, add the current year to the copyright
|
|
|
|
|
notice in several places:
|
2003-09-21 21:11:35 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ README
|
|
|
|
|
___ LICENSE (make sure to change on trunk and the branch)
|
|
|
|
|
___ Python/getcopyright.c
|
|
|
|
|
___ Doc/copyright.rst
|
|
|
|
|
___ Doc/license.rst
|
2016-06-12 01:31:41 -04:00
|
|
|
|
___ PC/python_ver_rc.h sets up the DLL version resource for Windows
|
2008-05-08 19:52:56 -04:00
|
|
|
|
(displayed when you right-click on the DLL and select
|
2016-06-12 01:31:41 -04:00
|
|
|
|
Properties). This isn't a C include file, it's a Windows
|
|
|
|
|
"resource file" include file.
|
2003-09-21 21:11:35 -04:00
|
|
|
|
|
2008-12-05 18:33:03 -05:00
|
|
|
|
___ Check with the IE (if there is one <wink>) to be sure that
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Lib/idlelib/NEWS.txt has been similarly updated.
|
2002-01-10 10:41:21 -05:00
|
|
|
|
|
2013-04-10 03:30:46 -04:00
|
|
|
|
___ For a final major release, edit the first paragraph of
|
2008-05-08 19:52:56 -04:00
|
|
|
|
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
|
|
|
|
|
alpha or beta releases. Note that Andrew Kuchling often takes care of
|
|
|
|
|
this.
|
2008-01-17 19:31:21 -05:00
|
|
|
|
|
2012-03-04 09:59:45 -05:00
|
|
|
|
___ Tag the release for X.Y.ZaN.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2012-03-04 09:59:45 -05:00
|
|
|
|
$ .../release/release.py --tag X.Y.ZaN
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2012-03-17 19:13:39 -04:00
|
|
|
|
NOTE: when forward, i.e. "null" merging your changes to newer branches,
|
|
|
|
|
e.g. 2.6 -> 2.7, do *not* revert your changes to the .hgtags file or you
|
|
|
|
|
will not be able to run the --export command below. Revert everything
|
|
|
|
|
else but leave .hgtags alone.
|
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ If this is a final major release, branch the tree for X.Y.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
When making a major release (e.g., for 3.2), you must create the
|
|
|
|
|
long-lived maintenance branch.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Note down the current revision ID of the tree.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ hg identify
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ First, set the original trunk up to be the next release.
|
|
|
|
|
|
|
|
|
|
$ .../release/release.py --bump 3.3a0
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
|
|
|
|
___ Edit all version references in the README
|
|
|
|
|
|
|
|
|
|
___ Move any historical "what's new" entries from Misc/NEWS to
|
|
|
|
|
Misc/HISTORY.
|
|
|
|
|
|
2014-03-23 13:14:54 -04:00
|
|
|
|
___ Edit Doc/tutorial/interpreter.rst (2 references to '[Pp]ython3x',
|
|
|
|
|
one to 'Python 3.x', also make the date in the banner consistent).
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2014-03-23 13:14:54 -04:00
|
|
|
|
___ Edit Doc/tutorial/stdlib.rst and Doc/tutorial/stdlib2.rst, which
|
|
|
|
|
have each one reference to '[Pp]ython3x'.
|
|
|
|
|
|
|
|
|
|
___ Add a new whatsnew/3.x.rst file (with the comment near the top
|
|
|
|
|
and the toplevel sections copied from the previous file) and
|
2016-05-03 05:03:16 -04:00
|
|
|
|
add it to the toctree in whatsnew/index.rst.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2012-09-29 03:17:57 -04:00
|
|
|
|
___ Update the version number in configure.ac and re-run autoconf.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
|
|
|
|
___ Update the version numbers for the Windows builds in PC/ and
|
2011-05-08 05:14:12 -04:00
|
|
|
|
PCbuild/, which have references to python32.
|
|
|
|
|
|
|
|
|
|
$ find PC/ PCbuild/ -type f | xargs sed -i 's/python32/python33/g'
|
|
|
|
|
$ hg mv -f PC/os2emx/python32.def PC/os2emx/python33.def
|
2012-09-29 08:49:38 -04:00
|
|
|
|
$ hg mv -f PC/python32stub.def PC/python33stub.def
|
|
|
|
|
$ hg mv -f PC/python32gen.py PC/python33gen.py
|
2011-05-08 05:14:12 -04:00
|
|
|
|
|
|
|
|
|
___ Commit these changes to the default branch.
|
2014-03-09 05:01:33 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Now, go back to the previously noted revision and make the
|
|
|
|
|
maintenance branch *from there*.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ hg update deadbeef # revision ID noted down before
|
|
|
|
|
$ hg branch 3.2
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2014-03-17 02:23:38 -04:00
|
|
|
|
___ When you want to push back your new branch to the main CPython
|
|
|
|
|
repository, the new branch name must be added to the "allow-branches"
|
|
|
|
|
hook configuration, which protects against stray named branches being
|
|
|
|
|
pushed. Login to hg.python.org and edit (as the "hg" user)
|
|
|
|
|
``/data/hg/repos/cpython/.hg/hgrc`` to that effect.
|
|
|
|
|
|
2014-09-30 16:57:38 -04:00
|
|
|
|
___ For a final major release, Doc/tools/static/version_switch.js
|
2014-03-17 02:30:58 -04:00
|
|
|
|
must be updated in all maintained branches, so that the new maintenance
|
|
|
|
|
branch is not "dev" anymore and there is a new "dev" version.
|
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Push your commits to the remote release clone.
|
2009-06-26 08:54:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ hg push ssh://hg.python.org/releasing/...
|
2008-03-02 01:51:20 -05:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Notify the experts that they can start building binaries.
|
2002-12-30 20:30:28 -05:00
|
|
|
|
|
2008-12-05 18:33:03 -05:00
|
|
|
|
___ STOP STOP STOP STOP STOP STOP STOP STOP
|
|
|
|
|
|
|
|
|
|
At this point you must receive the "green light" from other experts in
|
|
|
|
|
order to create the release. There are things you can do while you wait
|
|
|
|
|
though, so keep reading until you hit the next STOP.
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
___ The WE builds the Windows helpfile, using (in Doc/)
|
2008-05-08 19:52:56 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
% make.bat htmlhelp (on Windows)
|
2003-09-30 00:49:33 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
to create suitable input for HTML Help Workshop in build/htmlhelp. HTML
|
2014-03-09 05:01:33 -04:00
|
|
|
|
Help Workshop is then fired up on the created python33.hhp file, finally
|
|
|
|
|
resulting in an python33.chm file.
|
2008-10-02 09:41:14 -04:00
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
___ The WE then generates Windows installer files for each Windows
|
|
|
|
|
target architecture (for Python 3.3, this means x86 and AMD64).
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2014-03-10 03:04:10 -04:00
|
|
|
|
- He has one checkout tree per target architecture, and builds the
|
|
|
|
|
pcbuild.sln project for the appropriate architecture.
|
|
|
|
|
|
|
|
|
|
- PC\icons.mak must have been run with nmake.
|
|
|
|
|
|
|
|
|
|
- The cmd.exe window in which this is run must have Cygwin/bin in its
|
|
|
|
|
path (at least for x86).
|
|
|
|
|
|
|
|
|
|
- The cmd.exe window must have MS compiler tools for the target
|
|
|
|
|
architecture in its path (VS 2010 for Python 3.3).
|
|
|
|
|
|
|
|
|
|
- The WE then edits Tools/msi/config.py (a file only present locally)
|
|
|
|
|
to update full_current_version and sets snapshot to false. Currently
|
|
|
|
|
for a release config.py looks like
|
|
|
|
|
|
|
|
|
|
snapshot=0
|
|
|
|
|
full_current_version="3.3.5rc2"
|
|
|
|
|
certname="Python Software Foundation
|
|
|
|
|
PCBUILD='PCbuild\\amd64'
|
|
|
|
|
|
|
|
|
|
The last line is only present for the amd64 checkout.
|
|
|
|
|
|
|
|
|
|
- Now he runs msi.py with ActivePython or Python with pywin32.
|
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
The WE checksums the files (*.msi, *.chm, *-pdb.zip), uploads them to
|
2014-11-24 21:08:44 -05:00
|
|
|
|
dl-files.iad1.psf.io together with gpg signature files, and emails you the
|
2014-08-30 17:25:09 -04:00
|
|
|
|
location and md5sums.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2014-11-24 21:08:44 -05:00
|
|
|
|
___ The ME builds Mac installer packages and uploads them to
|
|
|
|
|
dl-files.iad1.psf.io together with gpg signature files.
|
2001-10-24 19:18:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Time to build the source tarball. Be sure to update your clone to the
|
|
|
|
|
correct branch. E.g.
|
2008-05-08 19:52:56 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ hg update 3.2
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Do a "hg status" in this directory.
|
2001-10-24 19:18:46 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
You should not see any files. I.e. you better not have any uncommitted
|
2011-05-08 05:14:12 -04:00
|
|
|
|
changes in your working directory.
|
2001-10-24 19:18:46 -04:00
|
|
|
|
|
2015-02-26 09:01:00 -05:00
|
|
|
|
___ Make sure you have virtualenv installed (for Python 2.7). The release
|
|
|
|
|
script installs Sphinx in a virtualenv when building the docs.
|
2014-03-09 05:01:33 -04:00
|
|
|
|
|
2014-10-12 02:55:48 -04:00
|
|
|
|
For building the PDF docs, you also need a fairly complete installation
|
|
|
|
|
of a recent TeX distribution such as texlive.
|
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
___ Use the release script to create the source gzip and xz tarballs,
|
|
|
|
|
documentation tar and zip files, and gpg signature files.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2012-03-04 09:59:45 -05:00
|
|
|
|
$ .../release/release.py --export X.Y.ZaN
|
2003-07-24 22:34:02 -04:00
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
This can take a while for final releases, and it will leave all the
|
|
|
|
|
tarballs and signatures in a subdirectory called 'X.Y.ZaN/src', and the
|
|
|
|
|
built docs in 'X.Y.ZaN/docs' (for final releases).
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2014-11-24 21:08:44 -05:00
|
|
|
|
___ scp or rsync all the files to your home directory on dl-files.iad1.psf.io.
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
|
|
|
|
While you're waiting for the files to finish uploading, you can continue
|
2008-12-05 18:33:03 -05:00
|
|
|
|
on with the remaining tasks. You can also ask folks on #python-dev
|
|
|
|
|
and/or python-committers to download the files as they finish uploading
|
|
|
|
|
so that they can test them on their platforms as well.
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
2001-10-24 19:18:46 -04:00
|
|
|
|
___ Now you want to perform the very important step of checking the
|
2001-08-22 18:43:42 -04:00
|
|
|
|
tarball you just created, to make sure a completely clean,
|
|
|
|
|
virgin build passes the regression test. Here are the best
|
|
|
|
|
steps to take:
|
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ cd /tmp
|
|
|
|
|
$ tar xvf ~/Python-3.2rc2.tgz
|
|
|
|
|
$ cd Python-3.2rc2
|
|
|
|
|
$ ls
|
2001-08-22 18:43:42 -04:00
|
|
|
|
(Do things look reasonable?)
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ ls Lib
|
2008-10-02 09:41:14 -04:00
|
|
|
|
(Are there stray .pyc files?)
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ ./configure
|
2001-08-22 18:43:42 -04:00
|
|
|
|
(Loads of configure output)
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ make test
|
2001-08-22 18:43:42 -04:00
|
|
|
|
(Do all the expected tests pass?)
|
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
If you're feeling lucky and have some time to kill, or if you are making
|
|
|
|
|
a release candidate or final release, run the full test suite:
|
2003-07-29 19:31:14 -04:00
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
$ make testall
|
2003-07-29 19:31:14 -04:00
|
|
|
|
|
2001-08-22 18:43:42 -04:00
|
|
|
|
If the tests pass, then you can feel good that the tarball is
|
2001-10-24 19:18:46 -04:00
|
|
|
|
fine. If some of the tests fail, or anything else about the
|
2001-08-22 18:43:42 -04:00
|
|
|
|
freshly unpacked directory looks weird, you better stop now and
|
|
|
|
|
figure out what the problem is.
|
|
|
|
|
|
2014-11-24 21:08:44 -05:00
|
|
|
|
___ Now you need to go to dl-files.iad1.psf.io and move all the files in place
|
|
|
|
|
over there. Our policy is that every Python version gets its own
|
2014-03-09 05:01:33 -04:00
|
|
|
|
directory, but each directory contains all releases of that version.
|
2002-01-10 11:22:46 -05:00
|
|
|
|
|
2014-11-24 21:08:44 -05:00
|
|
|
|
___ On dl-files.iad1.psf.io, cd /srv/www.python.org/ftp/python/X.Y.Z
|
|
|
|
|
creating it if necessary. Make sure it is owned by group 'downloads'
|
|
|
|
|
and group-writable.
|
2008-01-17 19:31:21 -05:00
|
|
|
|
|
2014-02-09 04:27:17 -05:00
|
|
|
|
___ Move the release .tgz, and .tar.xz files into place, as well as the
|
|
|
|
|
.asc GPG signature files. The Win/Mac binaries are usually put there
|
|
|
|
|
by the experts themselves.
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
|
|
|
|
Make sure they are world readable. They should also be group
|
2014-08-30 17:25:09 -04:00
|
|
|
|
writable, and group-owned by downloads.
|
2002-04-11 10:30:51 -04:00
|
|
|
|
|
2015-06-01 00:59:28 -04:00
|
|
|
|
___ Use ``gpg --verify`` to make sure they got uploaded intact.
|
2001-09-07 14:58:47 -04:00
|
|
|
|
|
2016-06-16 00:33:14 -04:00
|
|
|
|
___ If this is a final or rc release: Move the doc zips and tarballs to
|
2014-08-30 17:25:09 -04:00
|
|
|
|
/srv/www.python.org/ftp/python/doc/X.Y.Z, creating the directory
|
2010-08-24 10:16:59 -04:00
|
|
|
|
if necessary, and adapt the "current" symlink in .../doc to point to
|
|
|
|
|
that directory. Note though that if you're releasing a maintenance
|
|
|
|
|
release for an older version, don't change the current link.
|
2008-10-02 09:41:14 -04:00
|
|
|
|
|
2016-06-16 00:33:14 -04:00
|
|
|
|
___ If this is a final or rc release (even a maintenance release), also
|
|
|
|
|
unpack the HTML docs to /srv/docs.python.org/release/X.Y.Z[rcA] on
|
2015-09-15 04:10:50 -04:00
|
|
|
|
docs.iad1.psf.io. Make sure the files are in group "docs" and are
|
|
|
|
|
group-writeable. If it is a release of a security-fix-only version,
|
|
|
|
|
tell the DE to build a version with the "version switcher"
|
|
|
|
|
and put it there.
|
2008-12-05 03:19:56 -05:00
|
|
|
|
|
|
|
|
|
___ Let the DE check if the docs are built and work all right.
|
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
___ If this is a final major release: Tell the DE to adapt redirects for
|
2010-03-13 09:39:14 -05:00
|
|
|
|
docs.python.org/X.Y in the Apache config for docs.python.org, update
|
|
|
|
|
the script Doc/tools/dailybuild.py to point to the right
|
|
|
|
|
stable/development branches, and to install it and make the initial
|
2012-10-28 03:28:24 -04:00
|
|
|
|
checkout. The Doc's version_switcher.js script also needs to be
|
2015-02-27 10:29:03 -05:00
|
|
|
|
updated. In general, please don't touch things in the toplevel
|
|
|
|
|
/srv/docs.python.org/ directory unless you know what you're doing.
|
2010-03-13 09:39:14 -05:00
|
|
|
|
|
2014-09-09 11:47:10 -04:00
|
|
|
|
___ Note both the documentation and downloads are behind a caching CDN. If
|
|
|
|
|
you change archives after downloading them through the website, you'll
|
|
|
|
|
need to purge the stale data in the CDN like this:
|
|
|
|
|
|
|
|
|
|
$ curl -X PURGE https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.xz
|
|
|
|
|
|
2014-03-09 05:01:33 -04:00
|
|
|
|
___ For the extra paranoid, do a completely clean test of the release.
|
|
|
|
|
This includes downloading the tarball from www.python.org.
|
2010-12-05 07:11:52 -05:00
|
|
|
|
|
|
|
|
|
Make sure the md5 checksums match. Then unpack the tarball,
|
|
|
|
|
and do a clean make test.
|
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
$ make distclean
|
|
|
|
|
$ ./configure
|
|
|
|
|
$ make test
|
2010-12-05 07:11:52 -05:00
|
|
|
|
|
|
|
|
|
To ensure that the regression test suite passes. If not, you
|
|
|
|
|
screwed up somewhere!
|
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Now it's time to twiddle the web site.
|
2001-09-07 14:58:47 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
To do these steps, you must have the permission to edit the website. If you
|
|
|
|
|
don't have that, ask someone on pydotorg@python.org for the proper
|
2015-09-07 21:39:54 -04:00
|
|
|
|
permissions. (Or ask Ewa, who coordinated the effort for the new newbsite
|
|
|
|
|
with RevSys.)
|
2001-09-07 14:58:47 -04:00
|
|
|
|
|
2016-07-11 11:14:08 -04:00
|
|
|
|
XXX This is completely out of date for Django-based python.org.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
This page will probably come in handy:
|
2003-07-25 09:54:43 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
http://docutils.sourceforge.net/docs/user/rst/quickref.html
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
None of the web site updates are automated by release.py.
|
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
___ Log in to http://www.python.org/admin .
|
2008-05-08 19:52:56 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
___ If this is the first release for this version (even a new patch
|
|
|
|
|
version), you'll need to create a "page" for the version.
|
|
|
|
|
Find the "Pages" section and click on "Add", then fill in the
|
|
|
|
|
form.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
Note that the easiest thing is probably to copy fields from
|
|
|
|
|
an existing Python release "page", editing as you go.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2015-09-13 10:17:21 -04:00
|
|
|
|
There should only be one "page" for a release (e.g. 3.5.0, 3.5.1).
|
|
|
|
|
Reuse the same page for all pre-releases, changing the version
|
|
|
|
|
number and the documentation as you go.
|
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
___ If this isn't the first release for a version, open the existing
|
|
|
|
|
"page" for editing and update it to the new release. Don't save yet!
|
|
|
|
|
|
|
|
|
|
___ Now create a new "release" for the release. Currently "Releases" are
|
|
|
|
|
sorted under "Downloads".
|
|
|
|
|
|
|
|
|
|
Again, the easiest thing is probably to copy fields from
|
|
|
|
|
an existing Python release "page", editing as you go.
|
|
|
|
|
|
|
|
|
|
The mysterious "Release page" field on the form needs the
|
|
|
|
|
ID number of the "page" for this version. You can get that
|
|
|
|
|
by examining the URL for the "change page" form for this
|
|
|
|
|
version. For example, the URL for editing the "page"
|
|
|
|
|
for Python 3.5 is:
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
https://www.python.org/admin/pages/page/1232/
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
The page's ID number is the last field; here it is 1232.
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
___ Note that by convention, the "Content" on the page and
|
|
|
|
|
the "Content" on the release are the same, *except* the
|
|
|
|
|
"page" has a section on where to download the software.
|
2008-10-01 23:10:35 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
___ "Save" the release.
|
2013-10-27 05:40:11 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
___ Populate the release with the downloadable files.
|
2001-09-07 14:58:47 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
Your friend and mine, Georg Brandl, made a lovely tool
|
|
|
|
|
called "add-to-pydotorg.py". You can find it in the
|
|
|
|
|
"release" tree (next to "release.py"). You run the
|
|
|
|
|
tool on dl-files.iad1.psf.io, like this:
|
2001-09-07 14:58:47 -04:00
|
|
|
|
|
2015-09-07 21:39:54 -04:00
|
|
|
|
% AUTH_INFO=<username>:<python.org-api-key> python add-to-pydotorg.py <version>
|
|
|
|
|
|
|
|
|
|
This walks the correct download directory for <version>,
|
|
|
|
|
looks for files marked with <version>, and populates
|
|
|
|
|
the "Release Files" for the correct "release" on the web
|
|
|
|
|
site with these files. Note that clears the "Release Files"
|
|
|
|
|
for the relevant version each time it's run. You may run
|
|
|
|
|
it from any directory you like, and you can run it as
|
|
|
|
|
many times as you like if the files happen to change.
|
|
|
|
|
Keep a copy in your home directory on dl-files and
|
|
|
|
|
keep it fresh.
|
|
|
|
|
|
|
|
|
|
If new types of files are added to the release
|
|
|
|
|
(e.g. the web-based installers or redistributable zip
|
|
|
|
|
files added to Python 3.5) someone will need to update
|
|
|
|
|
add-to-pydotorg.py so it recognizes these new files.
|
|
|
|
|
(It's best to update add-to-pydotorg.py when file types
|
|
|
|
|
are removed, too.)
|
2001-12-14 23:00:17 -05:00
|
|
|
|
|
2014-02-09 04:27:17 -05:00
|
|
|
|
___ If this is a final release...
|
2016-07-24 14:54:37 -04:00
|
|
|
|
|
|
|
|
|
___ Add the new version to `https://www.python.org/doc/versions/` and
|
|
|
|
|
remove the current version from any 'in development' section.
|
|
|
|
|
|
|
|
|
|
___ For X.Y.Z, edit all the previous X.Y releases' page(s) to
|
|
|
|
|
point to the new release. This includes the content field of the
|
|
|
|
|
`Downloads -> Releases` entry for the release::
|
|
|
|
|
|
|
|
|
|
Note: Python x.y.m has been superseded by
|
|
|
|
|
`Python x.y.n </downloads/release/python-xyn/>`_.
|
|
|
|
|
|
|
|
|
|
And, for those releases having separate release page entries
|
|
|
|
|
(phasing these out?), update those pages as well,
|
|
|
|
|
e.g. `download/releases/x.y.z::
|
|
|
|
|
|
|
|
|
|
Note: Python x.y.m has been superseded by
|
|
|
|
|
`Python x.y.n </download/releases/x.y.n/>`_.
|
|
|
|
|
|
|
|
|
|
___ Other steps (other update for new web site)??
|
2014-02-09 04:27:17 -05:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Now it's time to write the announcement for the mailing lists. This is the
|
|
|
|
|
fuzzy bit because not much can be automated. You can use an earlier
|
|
|
|
|
announcement as a template, but edit it for content!
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-12-05 18:33:03 -05:00
|
|
|
|
___ STOP STOP STOP STOP STOP STOP STOP STOP
|
|
|
|
|
|
|
|
|
|
___ Have you gotten the green light from the WE?
|
|
|
|
|
|
|
|
|
|
___ Have you gotten the green light from the DE?
|
|
|
|
|
|
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ Once the announcement is ready, send it to the following
|
2001-08-22 18:43:42 -04:00
|
|
|
|
addresses:
|
|
|
|
|
|
|
|
|
|
python-list@python.org
|
|
|
|
|
python-announce@python.org
|
|
|
|
|
python-dev@python.org
|
|
|
|
|
|
2015-06-01 00:59:28 -04:00
|
|
|
|
___ Also post the announcement to `The Python Insider blog
|
|
|
|
|
<http://blog.python.org>`_. To add a new entry, go to
|
|
|
|
|
`your Blogger home page, here. <https://www.blogger.com/home>`_
|
2014-08-01 16:39:37 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Now it's time to do some cleaning up. These steps are very important!
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
___ Do the guided post-release steps with the release script.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2012-03-04 09:59:45 -05:00
|
|
|
|
$ .../release/release.py --done X.Y.ZaN
|
2001-10-24 19:18:46 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
Review and commit these changes.
|
2001-10-24 19:18:46 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Merge your release clone into the main development repo:
|
|
|
|
|
|
|
|
|
|
$ cd ../cpython # your clone of the main repo
|
|
|
|
|
$ hg pull ssh://hg.python.org/cpython # update from remote first
|
|
|
|
|
$ hg pull ../cpython-releaseX.Y # now pull from release clone
|
|
|
|
|
|
|
|
|
|
Now merge your release clone's changes in every branch you touched
|
|
|
|
|
(usually only one, except if you made a new maintenance release).
|
|
|
|
|
Easily resolvable conflicts may appear in Misc/NEWS.
|
|
|
|
|
|
2015-03-02 14:47:01 -05:00
|
|
|
|
___ If releasing from other than the default branch, remember to carefully
|
2014-10-12 02:59:21 -04:00
|
|
|
|
merge any touched branches with higher level branches, up to default. For
|
|
|
|
|
example:
|
|
|
|
|
|
|
|
|
|
$ hg update -C default
|
|
|
|
|
$ hg resolve --list
|
|
|
|
|
$ hg merge --tool "internal:fail" 3.4
|
|
|
|
|
|
|
|
|
|
... here, revert changes that are not relevant for the default branch...
|
|
|
|
|
|
|
|
|
|
$ hg resolve --mark
|
|
|
|
|
|
2015-03-02 14:47:01 -05:00
|
|
|
|
___ Commit and push to the main repo.
|
2011-05-08 05:14:12 -04:00
|
|
|
|
|
|
|
|
|
___ You can delete the remote release clone, or simply reuse it for the next
|
|
|
|
|
release.
|
2014-03-09 05:01:33 -04:00
|
|
|
|
|
2011-05-08 05:14:12 -04:00
|
|
|
|
___ Send email to python-committers informing them that the release has been
|
|
|
|
|
published.
|
2001-09-08 01:17:56 -04:00
|
|
|
|
|
2008-12-05 18:33:03 -05:00
|
|
|
|
___ Update any release PEPs (e.g. 361) with the release dates.
|
2008-07-17 23:44:59 -04:00
|
|
|
|
|
2009-05-17 18:07:13 -04:00
|
|
|
|
___ Update the tracker at http://bugs.python.org:
|
|
|
|
|
|
|
|
|
|
___ Flip all the deferred blocker issues back to release blocker
|
|
|
|
|
for the next release.
|
|
|
|
|
|
|
|
|
|
___ Add version X.Y+1 as when version X.Y enters alpha.
|
|
|
|
|
|
|
|
|
|
___ Change non-doc RFEs to version X.Y+1 when version X.Y enters beta.
|
|
|
|
|
|
|
|
|
|
___ Update 'behavior' issues from versions that your release make
|
|
|
|
|
unsupported to the next supported version.
|
|
|
|
|
|
|
|
|
|
___ Review open issues, as this might find lurking showstopper bugs,
|
|
|
|
|
besides reminding people to fix the easy ones they forgot about.
|
2008-07-17 23:44:59 -04:00
|
|
|
|
|
2001-09-08 01:17:56 -04:00
|
|
|
|
|
2001-08-22 18:43:42 -04:00
|
|
|
|
What Next?
|
|
|
|
|
|
2010-07-31 09:26:15 -04:00
|
|
|
|
___ Verify! Pretend you're a user: download the files from python.org, and
|
|
|
|
|
make Python from it. This step is too easy to overlook, and on several
|
|
|
|
|
occasions we've had useless release files. Once a general server problem
|
|
|
|
|
caused mysterious corruption of all files; once the source tarball got
|
|
|
|
|
built incorrectly; more than once the file upload process on SF truncated
|
|
|
|
|
files; and so on.
|
|
|
|
|
|
|
|
|
|
___ Rejoice. Drink. Be Merry. Write a PEP like this one. Or be
|
|
|
|
|
like unto Guido and take A Vacation.
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2008-05-08 19:52:56 -04:00
|
|
|
|
You've just made a Python release!
|
2001-08-22 18:43:42 -04:00
|
|
|
|
|
2001-10-29 10:53:04 -05:00
|
|
|
|
|
2001-09-08 01:17:56 -04:00
|
|
|
|
Windows Notes
|
|
|
|
|
|
2006-09-10 13:07:43 -04:00
|
|
|
|
Windows has a MSI installer, various flavors of Windows have
|
2001-10-25 01:19:19 -04:00
|
|
|
|
"special limitations", and the Windows installer also packs
|
|
|
|
|
precompiled "foreign" binaries (Tcl/Tk, expat, etc). So Windows
|
|
|
|
|
testing is tiresome but very necessary.
|
|
|
|
|
|
2008-01-17 19:31:21 -05:00
|
|
|
|
Concurrent with uploading the installer, the WE installs Python
|
2006-09-10 13:07:43 -04:00
|
|
|
|
from it twice: once into the default directory suggested by the
|
2001-10-25 01:19:19 -04:00
|
|
|
|
installer, and later into a directory with embedded spaces in its
|
|
|
|
|
name. For each installation, he runs the full regression suite
|
2006-09-10 13:07:43 -04:00
|
|
|
|
from a DOS box, and both with and without -0. For maintenance
|
|
|
|
|
release, he also tests whether upgrade installations succeed.
|
2001-10-25 01:19:19 -04:00
|
|
|
|
|
|
|
|
|
He also tries *every* shortcut created under Start -> Menu -> the
|
|
|
|
|
Python group. When trying IDLE this way, you need to verify that
|
|
|
|
|
Help -> Python Documentation works. When trying pydoc this way
|
|
|
|
|
(the "Module Docs" Start menu entry), make sure the "Start
|
|
|
|
|
Browser" button works, and make sure you can search for a random
|
2008-01-17 19:31:21 -05:00
|
|
|
|
module (like "random" <wink>) and then that the "go to selected"
|
|
|
|
|
button works.
|
2001-10-25 01:19:19 -04:00
|
|
|
|
|
|
|
|
|
It's amazing how much can go wrong here -- and even more amazing
|
|
|
|
|
how often last-second checkins break one of these things. If
|
|
|
|
|
you're "the Windows geek", keep in mind that you're likely the
|
|
|
|
|
only person routinely testing on Windows, and that Windows is
|
|
|
|
|
simply a mess.
|
|
|
|
|
|
2012-09-09 05:12:29 -04:00
|
|
|
|
Repeat the testing for each target architecture. Try both an
|
|
|
|
|
Admin and a plain User (not Power User) account.
|
2001-09-08 01:17:56 -04:00
|
|
|
|
|
|
|
|
|
|
2001-08-22 18:43:42 -04:00
|
|
|
|
Copyright
|
|
|
|
|
|
|
|
|
|
This document has been placed in the public domain.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: indented-text
|
|
|
|
|
indent-tabs-mode: nil
|
|
|
|
|
End:
|