User Tools

Site Tools


The DiFX Release Process

The guidelines here are not strict and may change version to version, but document the typical process used in releasing a new DiFX version.

General principles

  • We aim for a major release every ~12 months
  • In between major releases, minor releases are made on an as-needed basis. Minor releases should really only be for bugfixes or very minor feature additions.

How to do a minor release

  • Test your change in trunk
  • Test your change in master_tags/DiFX-2.X/
  • Update the ChangeLog(s) and update package version requirements if needed
  • Update the wiki changelog
  • Email difx-developers and announce the intention to make a new minor release:
    • Request testing of the updated DiFX-2.X
    • Indicate timeline and community requirements (with respect to schedule)
  • After testing is complete:
    • svn copy master_tags/DiFX-2.X/ master_tags/DiFX-2.X.Y/
    • update the setup.bash and setup.csh with the new DIFX_VERSION identifier
    • Compile test the new tag
    • Update news and installation with the new version number
    • Update difx2.0tonow with major changes
    • email difx-users and announce the new release
    • update the versions section of the userguide (doc/userguide/trunk/difx_versions.tex)

How to do a major release

  1. Upon nearing feature completeness or some other indicator that a release is due, somebody should email the DiFX Developers email list, encouraging a quick wrap-up of current developments for the upcoming release.
  2. A countdown page like this may be created at this time to track remaining work to be done and start building release notes.
  3. A second email indicating feature completeness and transition to bug fix only state is sent out when the countdown list contains only testing and documentation items.
  4. Upon general agreement that the tree is ready for tagging a final email is sent suggesting that.
  5. The release tagging operation involves the following steps
    1. Make the subversion tree for the release, including the version directory (e.g., DiFX-2.6) and its subdirectories (libraries, applications, …)
    2. Update ChangeLog entries to include the new DiFX version and possibly a date.
    3. Commit the ChangeLog
    4. Make sure the for each package requires proper versions of libraries (usually statements starting with PKG_CHECK_MODULES)
    5. If you copy the above line, be sure to change the quotes to normal quotes or else the svn cp command will fail with a misleading error message!
    6. Go back to the trunk version of each package and bump the version (usually in and note this in the ChangeLog.
    7. Recommit the trunk version.
  6. Run through the minor release procedure to create DiFX-2.X.1/ from your new DiFX-2.X/ tag.

A script, current for DiFX-2.8, is below. For future versions change NEW_VERSION and check for package completeness.

export NEW_VERSION=DiFX-2.8

svn mkdir${NEW_VERSION}/ -m "top directory for ${NEW_VERSION} release"

svn cp${NEW_VERSION}/mpifxcorr -m "Branching ${NEW_VERSION}"

svn mkdir${NEW_VERSION}/libraries -m "for ${NEW_VERSION} release"
svn cp${NEW_VERSION}/libraries/difxio -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/dirlist -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/difxmessage -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/mark5access -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/perl -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/python -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/mark6sg -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/mark6meta -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/vdifio -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/codifio -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/libraries/vex -m "Branching ${NEW_VERSION}"

svn mkdir${NEW_VERSION}/applications -m "for ${NEW_VERSION} release"
svn cp${NEW_VERSION}/applications/calcif2  -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/calcserver -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/difxcalc11 -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/difx2fits -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/difx2mark4 -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/difxfilterbank -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/difx_monitor -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/espresso -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/guiServer -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/hops -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/mk5daemon -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/vex2difx -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/datasim -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/applications/polconvert -m "Branching ${NEW_VERSION}"

svn mkdir${NEW_VERSION}/utilities -m "for ${NEW_VERSION} release"
svn cp${NEW_VERSION}/utilities/autozoom -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/utilities/bench -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/utilities/difxdb -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/utilities/misc -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/utilities/pulsar -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/utilities/vis2screen -m "Branching ${NEW_VERSION}"

svn mkdir${NEW_VERSION}/sites -m "for ${NEW_VERSION} release"
svn mkdir${NEW_VERSION}/sites/MPIfR -m "for ${NEW_VERSION} release"
svn mkdir${NEW_VERSION}/sites/NRAO -m "for ${NEW_VERSION} release"
svn cp${NEW_VERSION}/sites/NRAO/difxdb -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/sites/NRAO/SniffPlots -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/sites/NRAO/rcwlib -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/sites -m "Branching ${NEW_VERSION}"

#other setup things
svn cp${NEW_VERSION}/ -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/ -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/ -m "Branching ${NEW_VERSION}"
svn cp${NEW_VERSION}/ -m "Branching ${NEW_VERSION}"
difx/release.txt · Last modified: 2023/02/22 20:53 by helgerottmann