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.
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
Create a new uboone suite test release¶
Create a new mrb test release and check out all uboone suite packages.
$ source /cvmfs/uboone.opensciencegrid.org/products/setup_uboone.sh $ mkdir <some empty directory> $ cd <some empty directory> $ mrb newDev -v <larsoft-version> -q <larsoft-qualifiers> $ source localProducts*/setup $ cd $MRB_SOURCE $ 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.
$ cd $MRB_SOURCE $ git clone ssh://firstname.lastname@example.org/cvs/projects/build-framework-swtrigger-ssi-build $ git clone ssh://email@example.com/cvs/projects/build-framework-larlite-ssi-build $ git clone ssh://firstname.lastname@example.org/cvs/projects/build-framework-larcv-ssi-build
Or use the following commands for read-only access.
$ git clone http://cdcvs.fnal.gov/projects/build-framework-swtrigger-ssi-build $ git clone http://cdcvs.fnal.gov/projects/build-framework-larlite-ssi-build $ git clone http://cdcvs.fnal.gov/projects/build-framework-larcv-ssi-build
You should be on the master branch.These package contain the following files.
- Bootstrap script
- Autobuild script
- Build script
- Ups table file in subdirectory ups.
build_<package>.shmay need the following updates.
- New ups version (variable
- Source code tag (variable
- ssibuildshims version (use latest version available on scisoft).
The table file may need updating if dependent ups products have changed.
autobuild.sh 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
bootstrap.sh. Do this for each ssi-biuld package.
$ cd $MRB_SOURCE/build-framework-<package>-ssi-build $ ./bootstrap.sh $MRB_INSTALL
$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.
$ cd $MRB_INSTALL $ 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
<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 "
$ update_larsoft_version.sh -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).
You are now ready to build the release.
$ cd $MRB_BUILDDIR $ mrbsetenv $ mrb i -j<n>