Current Practice
RM's determination of what to build is rooted in CVS tags:
LATEST builds are triggered when the RM detects a new package tag. For each watched container which includes the changed package, a new LATEST tag (e.g. GlastRelease-LATEST-1-4765) is added, package by package, to the latest package tags of all packages belonging to the container.
HEAD and release builds are triggered when a tag of the respective proper form (e.g. ScienceTools-HEAD-1-894 or ScienceTools-09-23-01) is detected and there is no existing RM build for it. Such tags are made by invoking the script tagCollector.py.
tagCollector.py logic
To create a release tag for a container like ScienceTools, tagCollector determines the most recent HEAD tag and adds a new tag to the same set of files, like this:
cvs rtag -r ScienceTools-HEAD-1-nnn ScienceTools-xx-yy-zz ScienceTools-scons
Support is envisioned but not yet implemented for tagging along branches as well.
The procedure for creating a new HEAD tag is more complicated because the caller specifies packages to be addeed, removed or upgraded. It includes the following steps:
- Determine most recent HEAD tag for the container
- Add new tag of form cc-HEADTMP-1-nnn to all files belonging to the most recent HEAD tag, where "cc" is the container name and "nnn" is one more than the number of the HEAD tag.
- Parse user input to determine which packages to add, remove or upgrade. Modify the HEADTMP tag accordingly.
- Add a new tag cc-HEAD-1-nnn to the files now in HEADTMP
- Delete the HEADTMP tag (unless in verbose mode).