Preparing the source release

  1. Bring the software into a stable state.

  2. Make sure that the NEWS file for each package is complete -- this file contains our "release notes", so make sure it is good.

  3. Select a CVS tag for the overall ISIS release; to give yourself some tips, run "cvs status -v ChangeLog" in your Genie CVS checkout. The convention I have been using is to base the overall tag on the Genie version number, and to have other tags in the other repositories. For example, at the time of writing we are about to release Genie 0.99.4, so the overall ISIS release tag would be isis-release-0-99-4.

  4. Select a release tag for afreet (eg, afreet-release-2-1), libhfa (eg, libhfa-release-0-2), aladdin (eg, aladdin-release-1-52), MPgenie (eg, mpgenie-release-0-1).

    Currently, this is done by hand, but the script will help out.

  5. Modify the configure.in files to have the up-to-date version number. Then cvs commit.

  6. Tag all the CVS repositories with the overall ISIS release tag, and on top of that tag them all with package-specific tags. Note that the overall tag is a "branch tag" and that the package-specific tags are ordinary tags. Note also that you must update your repositories to the branch before assigning the ordinary tags.

    cd src/isis
    cd genie
    cvs tag -b isis-release-0-99-4 
    cvs update -r isis-release-0-99-4 
    cd ../libhfa
    cvs tag -b isis-release-0-99-4 
    cvs update -r isis-release-0-99-4 
    cvs tag libhfa-release-0-2 
    cd ../aladdin
    cvs tag -b isis-release-0-99-4 
    cvs update -r isis-release-0-99-4 
    cvs tag aladdin-release-1-60 
    cd ../afreet
    cvs tag -b isis-release-0-99-4 
    cvs update -r isis-release-0-99-4 
    cvs tag afreet-release-2-2 
    cd ../MPgenie
    cvs tag -b isis-release-0-99-4 
    cvs update -r isis-release-0-99-4 
    cvs tag mpgenie-release-0-1 
    	    
    Note that this is pretty tedious. There is a script in the isis-infra repository which helps out with this; it is still in preliminary stages, though, so what it does is writes all these statements to stdout. You can then cut and paste -- after checking on the overall sanity of the suggested commands.

  7. Build tarballs from CVS. The simplest command for this is a make dist in a fresh cvs checkout; eg, the ones you tagged above. You may prefer to use make distcheck for an extra degree of safety. This is best done on a Linux system with a working docbook setup (soon to be fixed on the scheme, but not yet -- for speed and less-bad results use tamino for now!) These tarballs are also created as part of the nightly build, or you can run the script

    isis-build-tarball-from-cvs.sh /tmp/isis-checkout /tmp/isis-build -r isis-release-0-99-4 package
    for each of the isis packages (genie, libhfa, aladdin, afreet, chroMX, and MPgenie).

  8. Copy the tarballs to the ISIS project release area. In this case you would type:

    cp /tmp/isis-build/genie/genie-0.99.4.tar.gz $ISIS_DIR/releases/0.99.4/
    cp /tmp/isis-build/libhfa/libhfa-0.2.tar.gz $ISIS_DIR/releases/0.99.4/
    cp /tmp/isis-build/aladdin/aladdin-0.60.tar.gz $ISIS_DIR/releases/0.99.4/
    cp /tmp/isis-build/afreet/afreet-2.2.tar.gz $ISIS_DIR/releases/0.99.4/
    cp /tmp/isis-build/chroMX/chroMX-0.2.tar.gz $ISIS_DIR/releases/0.99.4/
    cp /tmp/isis-build/MPgenie/MPgenie-0.1.tar.gz $ISIS_DIR/releases/0.99.4/