1 Create the branch
When any IcedTea release is made, you must make it from the appropriate release branch. For a major release, create a new branch by cloning the Mercurial repository with a command like
ssh icedtea.classpath.org hg-remote-clone /hg/icedtea6 /hg/release/icedtea6-1.6
which copies from the IcedTea trunk to a new release branch called, in this case, icedtea6-1.6.
You may also wish to add a description for this repository. To do that, edit
/hg/release/icedtea6-1.6/.hg/hgrc and add the two lines below to the end of the file:
[web] description = Release 1.6 of the Free Software build environment for OpenJDK6
Once branched, bump HEAD to <next major version>pre.
Once this is done, tag the trunk at the point from which the release branch was made:
$ cd icedtea6 $ hg tag -r 9420faca6468 icedtea6-1.6-branchpoint
Make sure you use an explicit Revision ID here, as there may have been a commit to the trunk since you made the branch.
While you're on the trunk, update the version to the next release version by editing the first line of configure.ac:
--- a/configure.ac Thu Aug 13 15:53:39 2009 +0100 +++ b/configure.ac Thu Aug 13 16:23:44 2009 +0100 @@ -1,4 +1,4 @@ -AC_INIT([icedtea6], [1.6pre], [firstname.lastname@example.org]) +AC_INIT([icedtea6], [1.7pre], [email@example.com]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile])
Tag the branch:
$ hg clone ssh://icedtea.classpath.org/hg/release/icedtea6-1.6/ $ cd icedtea6-1.6 $ hg tag icedtea6-1.6-branch
And send out an email that the branch is ready for commits.
When the branch is in a state where a release can be made, send a message to distro-pkg-dev to the effect that the release branch is now frozen.
Update the NEWS file in the top level IcedTea directory (make sure bug IDs and CVE numbers, if any, are complete) and the version:
--- a/configure.ac Fri Aug 07 11:58:27 2009 +0200 +++ b/configure.ac Thu Aug 13 12:26:57 2009 +0100 @@ -1,4 +1,4 @@ -AC_INIT([icedtea6], [1.6pre], [firstname.lastname@example.org]) +AC_INIT([icedtea6], [1.6], [email@example.com]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile])
Don't forget to update the ChangeLog too. Speaking about Changelog, dont miss ITW specific part at bottom.
Make sure that the autogenerated files in the checkout are updated:
$ cd <location of icedtea hg checkout> $ ./autogen.sh
Create the tarball in a fresh build directory e.g.:
$ cd /tmp $ mkdir icedtea6-release $ cd icedtea6-release $ <absolute path to location of icedtea hg checkout>/configure $ make dist
Ensure that the new tarball builds and the result is sane e.g.:
$ cd /tmp $ tar xzf icedtea6-release/icedtea6-1.6.tar.gz $ cd icedtea6-1.6 $ ./configure $ make
Copy the tarball to icedtea.classpath.org:
scp icedtea6-1.6.tar.gz icedtea.classpath.org:/var/lib/public-download/source/
You might also want to create a signature and upload that:
$ gpg -b icedtea6-1.6.tar.gz $ scp icedtea6-1.6.tar.gz.sig icedtea.classpath.org:/var/lib/public-download/source/
Commit any outstanding changes used in the release, tag and push the release.
$ hg commit $ hg tag icedtea6-1.6 $ hg push
Send the announcement to distro-pkg-dev: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2011-March/012602.html and post it on your blog (if you have one).
3.1 IcedTea-Web specific
ITW have autogenerated runtime help and docs.
- ensure changelog is long enough:
- in target stamps/netx-html-gen.stamp:
- modify/add html-gen.sh's parameter to match number of entries since last release
- Ensure static docs are correct
- check icedtea-web-docs directory
- upload html docs to http://icedtea.wildebeest.org/download/
- check manpages
- check icedtea-web-docs directory
- Ensure runtime help is correct
- check runtime html help (in gui)
- check runtime plaintext help (in commandline [with/without -verbose])
4 Post-release updates
- Update the versions on http://icedtea.classpath.org and http://en.wikipedia.org/wiki/IcedTea.
- Add the new version to the IcedTea product on Bugzilla and the new version + 1 to the milestones.
- Prepare the branch for future releases by setting the version in configure.ac to <next minor version>pre and adding a new NEWS section.
- Update NEWS on HEAD.
- Close relevant bugs.
5 Tips on Building
A release is useless if it won't build.
- Build with as many configure options as possible. A release not building with a simple
./configure(exception: various paths used with
--with*options) is a No-Go.
- Build with an older version of ecj (3.6 recommended). This version does not support Java 7 and will catch more bootstrap issues.