External ups products

There are three MicroBooNE-supported "external" ups products that are required for building uboone suite offline products. The external products are as follows.

  • swtrigger
  • larlite
  • larcv

Here, the term "external" refers to the fact that these products are hosted on a github repository (as opposed to a Fermilab redmine repository), and they are not able to be built and packaged as ups products using cetbuildtools. The source code for these products changes only rarely, if ever. However, each of these products has a dependency on root, and they need to be rebuilt each time the root version used by larsoft changes.

Some basic parameters of these products are listed in the following table.

UPS Product Github repository (user/repo) Git branch Jenkins build script Jenkins build project
swtrigger twongjirad/fememulator master build-swtrigger
larlite larlight/larlite trunk build-larlite
larcv LArbys/LArCV ups_larbys build-larcv

Code for the swtrigger ups product is shared with online. Larlite and larcv are specific to offline.

Checking out source code.

Use the following command to check out the source code from github.

git clone<user>/<repo>

where <user> and <repo> are as listed in the above table.

Build scripts

The Jenkins build scripts listed in the above table are available in the "larutils" package, in subdirectory "buildScripts." These build scripts are written to work on the Jenkins build system, but they can also be invoked manually by setting certain environment variables, or reverse-engineered to discover the author-supplied build procedure.

Ups table files

Each package includes a hand-maintained ups table file, which can be found in subdirectory "ups." Should it be necessary to update the table file, for example to support a new root version, simply check out the source code from github, and edit the table file.

Tagging a new version for release

New release tags should be placed on the heads of the branches listed in the above table. The preferred way to get these packages updated is to make your personal clone of the repository on github, edit your clone, then generate a github pull request. Include in the comments of the pull request that there should be a new tag.

Building distribution tarballs using Jenkins

Here are the steps for building and distributing any of the above packages.

  • Make sure that source code (including ups table file) is updated and tagged.
  • Click on the "uboone" tab and select the appropriate build project.
  • Click on "Configure" and edit the desired tag into the build configuration.
  • Click on "Build with Parameters." This should build all supported flavors. Wait for build to complete successfully.

Uploading distribution tarballs to scisoft products server

Do this step after a successfully building distribution tarballs manually or using Jenkins. Make sure you have access to scisoft scripts copyFromJenkins (if you used Jenkins) and copyToSciSoft on your execution path.

First, go to an empty directory on any machine where you have kerberized scp access to (uboonegpvmXX login machines are fine). You will assemble in this directory all tarballs that will be uploaded to

Fetching tarballs from Jenkins

Fetch results of Jenkins build using copyFromJenkins. This script is normally invoked with a single argument specifying the Jenkins project name.

copyFromJenkins <build-project>

This command will fetch Jenkins build "artifacts." There should be one tarball for each binary flavor.

Upload to scisoft

Upload all files (tarballs) to scisoft using copyToSciSoft. Specify all files that you want to upload on the command line, which should be all of the files your current directory.

copyToSciSoft *

You will need a kerberos ticket and login access to

Installing distribution tarballs in /grid/fermiapp/products/uboone

Install distribution tarballs created in previous step in /grid/fermiapp/products/uboone. You can download these from the scisoft products server, or just use the ones you copied from Jenkins.

  • Log in to any uboonegpvmXX machine as user uboone.
  • Go to the microboone products directory.
    cd /grid/fermiapp/products/uboone
  • Unroll the tarball for each binary flavor into this directory.
    tar xf <tarball-path>
  • You can unroll many tarballs using a single shell command.
    for tb in <tarball-dir>/*; do tar xf $tb; done

Uploading swtrigger to cvmfs

Follow instructions in this article, but usually just invoke the script as user uboone on any uboonegpvmXX machine.