Releasing Class Ads

Punchlist for creating a new ClassAds release

  • Ensure src/classad/CHANGELOG has all relevant changes. Add a section for the new version if necessary.

  • Update the version number and release date in the follow files:
    • src/classad/CHANGELOG
    • src/classad/do_packaging : DIST_VERSION
    • src/classad/README : first line
    • src/classad/classad.cpp : ClassAdLibraryVersion() Update both functions with this name!
    • src/classad/Doxyfile : PROJECT_NUMBER

  • Update the shared library version number in src/classad/Makefile.am.m4 . Look for these two lines:
    libclassad_la_LDFLAGS = -version-info 1:0:0
    libclassad_ns_la_LDFLAGS = -version-info 1:0:0
    
    If the ABI has changed (such that programs linked against an older version won't work with the new version), you should increment the first number and set the second and third ones to zero. If the ABI has only been expanded (new symbols added), increment the first and third numbers, and set the second one to zero. If the ABI hasn't changed, then increment the second number. See http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN135 for examples of things that will change the ABI incompatibly.

This ABI compliance checker program may be useful: http://ispras.linuxfoundation.org/index.php/ABI_compliance_checker

Note: The version given here isn't quite the version you'll see on the .so files. Libtool converts it like so: -version-info A:B:C results in libclassad.so. <A-C>.<C>.<B> . When releasing a version with incompatible ABI changes, you can end up with a big jump in the major version of the .so if you just increment A and set B and C to zero. Instead, you can set the new version like so: -version-info <1+A-C>:0:0 . This will result in the major version of the .so incrementing by one.

  • run do_packaging in src/classad

  • Ensure the release builds successfully
    cd classads-1.0.8
    ./configure
    make
    make check
    cd ..
    

  • Edit TAGS and add a new tag name for this version.

  • Ensure all of your changes are committed.

  • Tag the release:
    git tag classads_1_0_8
    git push origin classads_1_0_8
    

  • Copy the release tarball into /p/condor/public/ftp/classad/c++/ .

  • Copy src/classad/CHANGELOG to /p/condor/public/html/classad/c++changelogs/changes-<version>.txt .

  • Update /p/condor/public/html/classad/classad.html to mention the new release.

  • Update the Doxygen webpages:

/unsup/doxygen-1.7.1/bin/doxygen
mv /p/condor/public/html/classad/c++doc /p/condor/public/html/classad/c++doc.old
cp -r doc/html /p/condor/public/html/classad/c++doc
rm -rf /p/condor/public/html/classad/c++doc.old