Updating External Products for use with Build Framework

This article describes how to update external ups products needed by uboone suite. The procedure described here will accomplish the following two things:

  • Generating an external products tarball for upload to scisoft.
  • Building external products in an mrb test release.

Environment setup

The procedure described below refers to mrb environment variables such as $MRB_SOURCE and $MRB_INSTALL. These environment variables should be defined by sourcing your test release's localProducts*/setup script. This is the only mrb environment initialization you should do. Do not run mrbsetenv or mrbslp.

Create a new uboone suite test release

Create a new mrb test release and check out all uboone suite packages.

$ source /cvmfs/
$ mkdir <some empty directory>
$ cd <some empty directory>
$ mrb newDev -v <larsoft-version> -q <larsoft-qualifiers>
$ source localProducts*/setup
$ mrb g uboone_suite

Update ssi-build packages

MicroBooNE currently has three external products that can built using the method described in this article. Check these out from the build-framework redmine repositories using the following "git clone" commands.

$ git clone ssh://
$ git clone ssh://
$ git clone ssh://

Or use the following commands for read-only access.

$ git clone
$ git clone
$ git clone

You should be on the master branch.

These package contain the following files.
  • Bootstrap script
  • Autobuild script
  • Build script build_<package>.sh.
  • Ups table file in subdirectory ups.
Scripts and build_<package>.sh may need the following updates.
  • New ups version (variable $pkgver).
  • Source code tag (variable $origpkgver).
  • ssibuildshims version (use latest version available on scisoft).

The table file may need updating if dependent ups products have changed.

Script usually shouldn't need to be updated.

If the source code of the underlying package has changed, the souce code repository will need to have been updated and tagged as well. If only the table file needs to be updated, the source code geneerally doesn't need a new tag.

Commit and push the updated packages back to the origin repo. Do this for each ssi-build package.

$ cd $MRB_SOURCE/build-framework-<package>-ssi-build
$ git commit
$ git push origin master

Generate source tarball

The source code tarball is generated using script Do this for each ssi-biuld package.

$ cd $MRB_SOURCE/build-framework-<package>-ssi-build

Besides $MRB_INSTALL this command will work with any valid ups products area.

Upload source tarballs to scisoft

The source code tarballs are generated in the $MRB_INSTALL directory. Do this for each package tarball.

$ copyToSciSoft <package>-<version>-source.tar.bz2

Build external packages

Checked out sources for each external package can also be found in the $MRB_INSTALL directory. Manually invoke the build script, usually like this:

$ cd $MRB_INSTALL/<package>/<version>
$ ./build_<package>.sh $MRB_INSTALL <qual> <buildtype>

If the package does not require a base qualifier (<qual>), invoke the build script like this:

$ cd $MRB_INSTALL/<package>/<version>
$ ./build_<package>.sh $MRB_INSTALL <buildtype>

In an actual build framework build, the build script will be invoked by

Here <qual> is the ups qualifier (something like e17 or c2), and <buildtype> is debug or prof.

After this step, a newly built ups product should be declared in the $MRB_INSTALL ups products area.

Update uboone suite external product versions

Update the external product dependencies in product_deps and CMakeLists.txt of the checked out uboone suite packages. Use command "mrb uv".

$ mrb uv swtrigger <swtrigger-version>
$ mrb uv larlite <larlite-version>
$ mrb uv larcv <larcv-version>

Update larsoft version

If the larsoft base release version has changed, update that as well. You can use "mrb uv" commands for each larsoft package, or you can use script "".

$ -q <quals> <larsoft-version>

Here the larsoft ups qualifiers should include a base (compiler) qualifier, such as e17 or c2, an s-qualifier, and a build type qualifier (debug or prof).

Build release

You are now ready to build the release.

$ mrbsetenv
$ mrb i -j<n>