Project

General

Profile

Building and Installing Official Releases

Official releases are built for supported platforms and installed as UPS products in CVMFS. Tarballs of pre-built UPS products are also distributed via https://scisoft.fnal.gov. As of February 2021, SL7 is the only supported platform, but we have supported SL6 and macOS in the past (these are unlikely to return). CentOS8 may be the next supported flavor, or possibly an Ubuntu release, depending on interest and availability of personpower to support it.

The following steps will produce these products

Do a test build

Make sure that all desired versions of the externals are available. When updating to a new version of art or ROOT or the compiler, then the whole software stack has to be updated. The edepsim product and in the future garana will have to be released and installed in order for the test build to work and also for the official build.

Tag the garsoft release.

I like to tag the head of develop. Make sure your local git repository is in synch with the upstream with a git pull, and then

git tag tagname
git push --tags

Where tagname is a tag you would like to use, such as v02_09_00. The command

git tag

without any arguments or options lists the tags already defined in your local git repository.
A not-recommended workflow: you can delete a tag with

git tag --delete tagname
git push --delete origin tagname

The first command deletes the tag in your local clone of the garsoft git repository, and the second one deletes it from the remote.

Build garsoft using Jenkins

Note -- https://buildmaster.fnal.gov is available only on the Fermilab network. You can access this web site in one of four ways:
  1. Use a computer connected to the Fermilab network.
  2. Connect to Fermilab's network using VPN: https://vpn.fnal.gov The build node should be visible with this session.
  3. Tunnel the site's connection through SSH. An example of how to forward a web address through ssh is here: https://wiki.dunescience.org/wiki/DQM_Shifter_Manual#Accessing_the_system
  4. Run a web browser on a Fermilab machine such as one of the dunegpvm's and access it via VNC.

At https://buildmaster.fnal.gov, you will find a list of projects, one of which is garsoft-release-build. It has a web page in it for configuration. In the configuration page is a pointer to where to find the build script. It is in larutils/buildScripts/build-garsoft.sh. This script checks out the tagged version of garsoft source from the redmine repository, sets up a build environment, and runs mrb to build the package and make a bz2 tarball for each supported flavor and qualifier. Currently, we build with gcc (e19) and clang (c7), and we make debug and prof builds.

Since larutils, part of the larsoft suite, has migrated to GitHub and adopted a pull request model, it may take time to have pull requests approved and merged. If you need more rapid turnaround to debug a Jenkins build, you may want to move the build-garsoft.sh script to duneutil/buildScripts. The build script can be tested interactively. Write a wrapper script that creates a workspace directory and defines the environment variables referred to at the top of the build script, and execute it interactively to test it.

Download the tarballs from Jenkins and unwind them in a scratch directory

On a dunegpvm machine with an up-to-date Kerberos ticket, a bash script like this will download the latest tarballs:

#!/bin/sh
for qual in e19 c7
do
copyFromJenkins -q $qual garsoft-release-build
done

You will then have .bz2 tarballs of the most recent built versions. Update the qualifiers in the loop as needed. Check the version numbers which are part of the tarball names and delete ones that don't correspond to the version you just built.

for filename in $( ls *.tar.bz2); do
tar -xjf $filename
done

will unwind all the tarballs. You will find a directory called garsoft with subdirectories tagname and tagname.version in them.

.h3 Upload tarballs to scisoft.fnal.gov

Find the script copyToSciSoft on the scisoft web site.
copyToSciSoft *.bz2
You will need permission to do this.  Make sure you have an unexpired Kerberos ticket, and if you do not have the ability to copy to SciSoft, talk to the  mailing list.

Install in CVMFS

We use /grid/fermiapp as a staging area for products to be installed in CVMFS.
Log in as , which has /grid/fermaipp mounted with write permission. Your directory will be in /grid/fermiapp/products/dune.

cd garsoft
cp -r directory_you_unwound_those_tarballs_in/* .

You should have new tagname and tagname.version directories in /grid/fermiapp/products/dune/garsoft.

Now log as

dune-sync dune/garsoft

will launch the process to publish your files in CVMFS. It will take a few minutes for files to show up on other computers in /cvmfs/dune.opensciencegrid.org/products/dune/garsoft.

Extra credit: Make a dependency graph.

Use $DUNEUTIL_DIR/bin/dependency_graph.sh