Releasing the iLCSoft framework

This document puts together a bunch of steps and procedures needed for releasing and deploying the ilc software framework.

It starts from the very beginning of creating and installing a new "developers release" on afs, goes through the iterative process of testing and validating the "developer releases" and ends with the installation and announcement of the final "production release".

The release procedure is based on an even-odd versioning scheme where "developers releases" are odd numbered and "production releases" are evenly numbered. In this document the releases used for demonstration purposes are v01-19 (developers) v01-20 (production) for the x86_64_gcc41_sl5 architecture.

Table of Contents:

Step 1

Back to TOC

Installing an initial ilcsoft "developers release" on afs.

The first step in an ilcsoft release cycle is to provide a new "developers release" installation on afs.

1. ssh into a machine with the required platform for compiling the software, e.g.:

ssh sl5-64bit-machine

2. Download ilcinstall from svn

svn co https://svnsrv.desy.de/desy/ilctools/ilcinstall/trunk ilcinstall-trunk cd ilcinstall-trunk

3. Update version of ilcsoft-install script

edit ./ilcsoft-install # change line: _version = "v01-19"

4. Rename the ilcinstall configuration files:

svn mv releases/OLD releases/v01-19 # if a new package is added in this release you may also need to edit the following configuration files: releases/v01-19/release-base.cfg releases/v01-19/release-ilcsoft.cfg releases/v01-19/release-scratch.cfg

5. Update versions in releases/v01-19/release-versions.py

edit ./releases/v01-19/release-versions.py # update ilcsoft version ilcsoft_release='v01-19-pre00' # uncomment the following line to automatically set the installation path, e.g.: # /afs/desy.de/project/ilcsoft/sw/x86_64_gcc41_sl5/v01-19-pre00 ilcsoft_install_prefix = ilcsoft_afs_path[ arch ] # update other package versions as needed

6. Install base tools (only if required)

# preview ./ilcsoft-install releases/v01-19/release-base.cfg # install ./ilcsoft-install -i releases/v01-19/release-base.cfg

7. Launch the ilcsoft installation

# preview ./ilcsoft-install releases/v01-19/release-ilcsoft.cfg # install ./ilcsoft-install -i releases/v01-19/release-ilcsoft.cfg

8. Test installation

# e.g. run the 3 event test in ILDConfig svn co https://svnsrv.desy.de/desy/marlinreco/ILDConfig/trunk ildconfig-trunk cd ildconfig-trunk/StandardConfig/current less README # follow steps in README ...

9. Commit the version changes into svn

svn ci -m"installed v01-19-pre00"

Step 2

Back to TOC

Announce the upcoming release.

All ilcsoft developers need to be notified about the upcoming release in order to meet the required preparation steps.

mailto: ild-software-discussion@desy.de Dear all, -- apologies if you get this email more than once -- A new iLCSoft release cycle has started. The release cycle ends in ~ 9 weeks from now. An initial ilcsoft installation for testing purposes is available in afs under the following path: /afs/desy.de/project/ilcsoft/sw/x86_64_gcc41_sl5/v01-19-pre00/ New "developer releases" will follow under a new sequence number: v01-19-preXX If you are planning to update or add a new package in this release the following steps are recommended: 1. compile your package against the latest "developers release" installation referenced above 2. iterate on source code until it is properly tested and running 3. create a new pre-tag in your package svn repository (branches/vXX-YY-pre) 4. reply to this email and let us know that the new pre-tag should be included 5. if step 3 has been completed and a bug is found: 5.1. create a new pre-tag (-pre01) including the bugfix (branches/vXX-YY-pre01) 5.2. repeat step 3 5.3. follow this procedure until all bugs have been fixed :) P.S. The -pre suffix in the version string is required! The iLCSoft team.

Step 3

Back to TOC

Iterating on "developer releases".

After having installed the initial "developers release" one needs to iterate on the whole software chain until the release is "production-ready".

This is basically done by receiving feedback from the ilcsoft developers and repeating Step 1 with updated versions in release-versions.py

edit releases/v01-19/release-versions.py # update ilcsoft version ilcsoft_release='v01-19-pre01' # update other package versions as needed

Step 4

Back to TOC

Installing the ilcsoft "production release" on afs.

The release is usually "production-ready" after iterating on the "developers releases" until most bugs/issues have been found and fixed."

The "production release" is installed by following the procedures described in Step 1 with a few changes:

Update version of ilcsoft-install script

edit ./ilcsoft-install # change line: _version = "v01-20"

Rename the ilcinstall configuration files:

svn mv releases/v01-19 releases/v01-20

Check which packages are still pre-tagged

grep '\-pre' releases/v01-20/release-versions.py

Follow this steps for each of the pre-tagged packages found in the previous step:

# 1. make sure the package release notes are updated # 2. run the tagpackage.sh script in the pre-tag directory, e.g.: ./scripts/tagpackage.sh /afs/desy.de/project/ilcsoft/sw/x86_64_gcc41_sl5/v01-19-preXX/lcio/vXX-YY-preXX # 3. make sure the version in the CMakeLists.txt file is correct # 4. create the tag # 5. remove the "-preXX" suffix from the package version in releases/v01-20/release-versions.py

Update ilcsoft version in releases/v01-20/release-versions.py

edit releases/v01-20/release-versions.py # change line: ilcsoft_release='v01-20'

Update the ilcsoft release notes

cp doc/release_notes_ilcsoft_OLD.txt doc/release_notes_ilcsoft_v01-20.txt svn mv doc/release_notes_ilcsoft_OLD.txt doc/older_release_notes/

Launch the installation

# preview ./ilcsoft-install releases/v01-20/release-ilcsoft.cfg # install ./ilcsoft-install -i releases/v01-20/release-ilcsoft.cfg

Tag ilcinstall

svn cp https://svnsrv.desy.de/desy/ilctools/ilcinstall/trunk https://svnsrv.desy.de/desy/ilctools/ilcinstall/tags/v01-20

Step 5

Back to TOC

Installing the ilcsoft release on the grid.

1. ssh into a machine with the required platform for compiling the software, e.g.:

ssh sl5-64bit-machine

2. Unpack previous release tarball with the appropriate architecture, e.g.:

rm -rf /tmp/ilcsoft tar xzf /afs/desy.de/project/ilcsoft/www/html/ilcsoft-bin-releases/ilcsoft-v01-19-x86_64_gcc41_sl5-full.tar.gz -C /tmp cd /tmp/ilcsoft

3. Check for correct versions of base tools, e.g.:

ls -ld g4data/* ls -ld x86_64_gcc41_sl5/{CLHEP,FastJet,gsl,geant4,mysql,root}/* # update versions (if needed) by copying from afs, e.g.: # rm -rf ./x86_64_gcc41_sl5/root/5.28.00f # cp -a /afs/desy.de/project/ilcsoft/sw/x86_64_gcc41_sl5/root/5.28.00h x86_64_gcc41_sl5/root

4. Run pack2Grid.py script

cd x86_64_gcc41_sl5 # preview pack2BinRelTool.py /afs/desy.de/project/ilcsoft/sw/x86_64_gcc41_sl5/v01-20 # copy binaries and libraries pack2BinRelTool.py -o /afs/desy.de/project/ilcsoft/sw/x86_64_gcc41_sl5/v01-20

5. Copy external library dependencies

for i in v01-20/{bin,lib}/* ; do packSharedLibDeps.sh $i ; done # dependencies from base tools (e.g. root, CLHEP) need to be checked separately!

6. Erase previous release and update init_ilcsoft.sh (if needed)

rm -rf v01-19 # edit ./init_ilcsoft.sh

7. Create release tarball

cd /tmp tar czf ilcsoft-v01-20-x86_64_gcc41_sl5-full.tar.gz ilcsoft

8. Copy tarball to the grid

# checkout gridtools svn co https://svnsrv.desy.de/desy/ilctools/mcprdsys/trunk/gridtools # initialize grid with lcgadmin rights ./gridtools/grid-ul-file.py ilcsoft-v01-20-x86_64_gcc41_sl5-full.tar.gz ilcsoft/

9. Send install job to the grid

send-install-job.sh desy.de /grid/ilc/ilcsoft/ilcsoft-v01-20-x86_64_gcc41_sl5-full.tar.gz

Step 6

Back to TOC

Updating the ilcsoft portal

The iLCsoft Portal can be updated using this link.

Step 7

Back to TOC

Announcing the new release

The new release should be announced in the Linear Collider Forum under Software Tools: Marlin et al.

mailto: ild-software-discussion@desy.de Dear all, -- apologies if you get this email more than once -- A new iLCSoft release (v01-20) is available. More details on the release can be found under the following link: http://forum.linearcollider.org/... Please report any problems and questions regarding this release in the forum referenced above. Don't forget to subscribe to the topic if you are interested in getting updates and feedback on the release. The iLCSoft team.

Links and References:

iLCSoft Portal

ilcinstall documentation

Desy SVN Repository

Grid computing at Desy

Last modified: 10th. December 2012

Author: Jan Engels, Desy - IT

Valid HTML 4.01