Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Current Practice

Currently 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:

Code Block

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:

  1. Determine most recent HEAD tag for the container
  2. 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.
  3. Parse user input to determine which packages to add, remove or upgrade.  Modify the HEADTMP tag accordingly.
  4. Add a new tag cc-HEAD-1-nnn to the files now in HEADTMP
  5. Delete the HEADTMP tag (unless in verbose mode).