Test phase
- First thing to do when planning a release is to propose it.
- If no-one complains branch off a release candidate which must be used for testing and bugfixing only - and finally will be released:
# cp -a <old directory name> <new directory name>
# cd <new directory name>
# cvs update
# cvs tag -b <release tag name>-rc
# cvs update -r <release tag name>-rc
Normal glob2 development takes place in the original HEAD (i.e. MAIN)
branch as usual.
- Now announce that you branched off the release candidate and that everyone who wants to help testing or fixing it must do:
# cp -a <old directory name> <new directory name>
# cd <new directory name>
# cvs update -r <release tag name>-rc
And also every bugfix must be done for both branches HEAD and the release candidate to avoid cvs merging weaknesses.
- Put a line like: "Changes in <release tag> (release soon)" under "Changes since latest release" in: Changes
- Increment version number in configure.in
- Increment Debian version number by doing debchange -i in debian/ (this must be done by nct on the mailing list)
- Do a release dry run, i.e.: all the release steps below except the "cvs tag" and only propagate news about a release candidate - not a release.
- Now wait about a week.
Release phase
Here is a detailed description of the remaining release process applied for all the alpha releases:
- Go into the directory containing glob2 the release candidate
- Check that the local cvs is up to date (through "cvs up")
- Check that all the required graphics and maps are in the server (through "./mkdata" and "./mkmap")
- Run "make distclean"
- Set CXXFLAGS to "-O2 -g $CXXFLAGS", final release could be compiled without the -g and with -O3 but right now -g -O2 is a reasonable tradeoff between speed and debugability
- Run "./bootstrap"
- Run "./configure"; if any problem occurs, well, the release candidate is not ready for release!
- Run "make"; if any problem occurs, well, the release candidate is *still* not ready for release!
- Test the resulting binary; if any problem occurs, well, you should fix your code instead of releasing stuff!
- Run "cvs tag RELEASE_NAME", in order to tag the CVS so that packagers can fetch this *exact* source tree for this release
- Run "make dist" to make the .tar.gz
- Run "fakeroot debian/rules binary" to make the debian package
- Upload them to glob2@www.globulation2.org:/home/glob2/public_html/releases/X.Y.Z (for example, alpha20 = 0.8.20).
- Send a mail to the ml, update web site, savannah news, and rest of the Worlds about the "Good news" ;-)