Project

General

Profile

Building ifdhc for SciSoft

Ifdhc is treated as a third party product by the SciSoft build system. This means that after tagging ifdhc, the build scripts must also be updated.

Tag ifdhc

  • Use git flow from the head of develop
  • git flow release start <tag>
  • Make sure the version in util/ifdh_version.h is correct
  • Commit changes
  • git flow release finish <tag>
  • git push origin develop master <tag>

Update the build scripts

  • git clone ssh:///cvs/projects/build-framework-ifdhc-ssi-build
    • This repository works directly from the master branch.
  • Update origpkgver in both bootstrap.sh and build_ifdhc.sh
    • This is often the only required change.
  • There are patch files. Unless there are major changes in ifdhc, the patch files probably do not need to be updated.
  • source /cvmfs/larsoft.opensciencegrid.org/products/setup
  • ./bootstrap.sh <path to some local product directory>
    • This step makes a source code tarball, which must be tested.
  • ./build_ifdhc.sh <path to some local product directory> e17:p2715a prof >& log.e17 &
    • This is a test build. You can run it from the same directory as the bootstrap.
    • Fix problems if necessary. (Lynn Garren or Chris Green may be available for consultation.)
    • If you change anything, run bootstrap again to make a new source code tarball.
  • commit changes and tag using the same tag as on ifdhc
    • git push origin master <tag>
    • Only do this after you have successful builds with at least e17:p2715a and c2:p2715a
  • ./build_ifdhc.sh <path to some local product directory> e17:p2715a prof tar
    • Again, only do this after you have successful builds.
    • This step makes the ifdhc_config tarball
  • copyToSciSoft <path to some local product directory>/ifdhc-<dot_version>-source.source.tar.bz2
  • copyToSciSoft <path to some local product directory>/ifdhc_config-<dot_version>-noarch.source.tar.bz2
  • IMPORTANT: Although you might produce a flavored tarball during testing, please do not upload it to scisoft. All flavored builds should be produced on Jenkins.

ifbeam

  • The ifbeam repository works directly from the master branch.
  • Edit ups/ifbeam.table to use the new release of ifdhc.
  • commit and tag
  • git push origin master <tag>
  • git clone ssh:///cvs/projects/build-framework-ifbeam-ssi-build
  • Update origpkgver in bootstrap.sh and build_ifbeam.sh.
  • Make a test build as per ifdhc.
  • When you are happy, upload the source code tarball with copyToSciSoft.

nucondb

  • The nucondb repository works directly from the master branch.
  • Edit ups/nucondb.table to use the new release of ifdhc.
  • commit and tag
  • git push origin master <tag>
  • git clone ssh:///cvs/projects/build-framework-nucondb-ssi-build
  • Update origpkgver in bootstrap.sh and build_nucondb.sh.
  • Make a test build as per ifdhc.
  • When you are happy, upload the source code tarball with copyToSciSoft.

ifdh_art

  • ifdh_art uses cetbuildtools and is handled like any other package which uses art.
  • Note that a given release of ifdh_art may be built against other compatible releases of art.
  • This package contains branches used for different dependency sets.
    • The head of develop is compatible with art v3_03. It is not compatible with older releases.
    • The branch for_art_v3_02 is compatible with art v3_02.
    • The branch v2_07_for_art_v2 is compatible with art v2_13_00 and art v3_01. This branch is maintained for NOvA.
  • Consult Lynn Garren or Kyle Knopfel for help with this package.

Making an ifdh distribution

  • It can be useful to create a SciSoft ifdh distribution.
  • This step is optional.
  • Do this after tags are in place for libwda, ifdhc, ifbeam, nucondb, and ifdh_art.
  • git clone ssh:///cvs/projects/build-framework
  • git checkout for_art_v3_02
    • This is the branch used for nutools v3_02_00 with genie v2.
    • Note that for_art_v3_02_and_genie_v3 is available for nutools v3_02_01 and genie v3.
  • Edit the versions of libwda, ifdhc, ifbeam, nucondb, and ifdh_art in the top level CMakeLists.txt
    • Do not change anything else.
  • You may need to setup a cmake product - any release will work.
  • cd some empty directory
  • cmake <path to the build-framework clone>
  • cd art_externals
  • copyToSciSoft ifdh-cfg-<dot version>
    • The dot version will match the ifdh_art version
  • Start a Jenkins build

About copyToSciSoft

  • copyToSciSoft and copyFromJenkins can be downloaded from https://scisoft.fnal.gov/scisoft/bundles/tools/
  • copyToSciSoft uses scisoftportal.fnal.gov to install files on SciSoft.
  • Once a file has been uploaded to SciSoft, copyToSciSoft will NOT allow a replacement.
    • Usually this is a good thing and we use it to our advantage.
    • If necessary, login to scisoftportal and very carefully remove only the file in question from /nasroot/SciSoft/.
  • You will need valid Kerberos credentials, an authorized FermiCloud account, and write permissions for SciSoft.
  • See the SciSoft wiki page.

ifdhc_config and LArSoft

  • LArSoft includes the latest available ifdhc_config in their release distributions.
  • The version of ifdhc_config is updated in larsoft/releaseDB/CMakeLists.txt
    • This step is usually done by the larsoft release manager.
  • Note that a new release of ifdhc will require new releases of other packages such as nugen and an updated nulite distribution. This will generally be handled by the SciSoft team.