Project

General

Profile

Dealing with ifdhc

When a new release of ifdhc is announced, we need to make ups products for ifdhc, ifdhc_config, ifbeam, nucondb, and ifdh_art. Note also that ifbeam and nucondb use libwda, which is rarely updated.

Code

  • libwda
    git clone https://cdcvs.fnal.gov/projects/ifdhc-libwda libwda
    git clone ssh://p-build-framework@cdcvs.fnal.gov/cvs/projects/build-framework-libwda-ssi-build libwda-ssi-build
    
  • ifhdc
    git clone ssh://p-ifdhc@cdcvs.fnal.gov/cvs/projects/ifdhc/ifdhc.git ifdhc
    git clone ssh://p-build-framework@cdcvs.fnal.gov/cvs/projects/build-framework-ifdhc-ssi-build ifdhc-ssi-build
    
  • ifbeam
    git clone ssh://p-ifdhc@cdcvs.fnal.gov/cvs/projects/ifdhc-ifbeam ifbeam
    git clone ssh://p-build-framework@cdcvs.fnal.gov/cvs/projects/build-framework-ifbeam-ssi-build ifbeam-ssi-build
    
  • nucondb
    git clone ssh://p-ifdhc@cdcvs.fnal.gov/cvs/projects/ifdhc-nucondb nucondb
    git clone ssh://p-build-framework@cdcvs.fnal.gov/cvs/projects/build-framework-nucondb-ssi-build nucondb-ssi-build
    
  • ifdh_art
    git clone ssh://p-ifdh-art@cdcvs.fnal.gov/cvs/projects/ifdh-art/ifdh_art.git
    

Building

Make a local product directory in scratch space.

mkdir <local product directory>
export MYPROD=<full path to local product directory>
cp -pr /products/.upsfiles $MYPROD/

Build order

ifdhc uses python. Both ifbeam and nucondb use ifdhc and libwda. ifdh_art uses ifbeam and nucondb directly, and ifdhc and libwda indirectly.

libwda

  • In libwda-ssi-build, update the libwda version in bootstrap.sh and build_libwda.sh. Use the same tag as in the libwda repository.
  • Run the bootstrap.
    source <product directory>/setup
    ./bootstrap.sh $MYPROD
    
  • libwda has a patch file. Check and update as needed.
  • make a test build
    build_libwda.sh $MYPROD
    
  • If you need to edit anything in libwda-ssi-build, make sure to run bootstrap again.
  • Once everything is fine, commit the changes, tag with the version you just built, and push to redmine.
    git commit -m"libwda v2_27_0" bootstrap.sh build_libwda.sh
    git tag -a -m"libwda v2_27_0" v2_27_0
    git push origin master v2_27_0
    
  • Upload the source code tarball to SciSoft.
    copyToSciSoft $MYPROD/libwda-2.27.0-source.tar.bz2
    

ifdhc

  • In ifdhc-ssi-build, update the ifdhc version in bootstrap.sh and build_ifdhc.sh. Use the same tag as in the libwda repository.
  • Run the bootstrap.
    source <product directory>/setup
    ./bootstrap.sh $MYPROD
    
  • ifdhc has a patch file. Check and update as needed.
  • make a test build
    build_ifdhc.sh $MYPROD e19:p372 prof
    
  • If you need to edit anything in ifdhc-ssi-build, make sure to run bootstrap again.
  • Once everything is fine, commit the changes, tag with the version you just built, and push to redmine.
    git commit -m"ifdhc v2_5_4" bootstrap.sh build_ifdhc.sh
    git tag -a -m"ifdhc v2_5_4" v2_5_4
    git push origin master v2_5_4
    
  • Make the ifdhc_config tarball by running the build command with tar
    build_ifdhc.sh $MYPROD e19:p372 prof tar
    
  • Upload the source code and ifdhc_config tarballs to SciSoft.
    copyToSciSoft $MYPROD/ifdhc-2.5.4-source.tar.bz2
    copyToSciSoft $MYPROD/ifdhc_config-2.5.4-noarch.tar.bz2
    

ifbeam

  • In ifbeam itself, update ups/ifbeam.table with the correct versions of libwda and ifdhc.
  • Commit and tag with the next micro version (eg, v2_4_1 becomes v2_4_2).
    git clone ssh://p-ifdhc@cdcvs.fnal.gov/cvs/projects/ifdhc-ifbeam ifbeam
    cd ifbeam/ups
    edit ifbeam.table
    git commit -m"for ifdhc v2_5_4" ifbeam.table
    git tag -a -m"ifbeam v2_4_2 for ifdhc v2_5_4" v2_4_2
    git push origin master v2_4_2
    
  • In ifbeam-ssi-build, update the ifbeam version in bootstrap.sh and build_ifbeam.sh. Use the same tag as in the ifbeam repository.
  • Run the bootstrap.
    source <product directory>/setup
    ./bootstrap.sh $MYPROD
    
  • make a test build
    build_ifbeam.sh $MYPROD e19:p372 prof
    
  • If you need to edit anything in ifbeam-ssi-build, make sure to run bootstrap again.
  • Once everything is fine, commit the changes, tag with the version you just built, and push to redmine.
    git commit -m"ifbeam v2_4_2" bootstrap.sh build_ifbeam.sh
    git tag -a -m"ifbeam v2_4_2" v2_4_2
    git push origin master v2_4_2
    
  • Upload the source code tarball to SciSoft.
    copyToSciSoft $MYPROD/ifbeam-2.4.2-source.tar.bz2
    

nucondb

  • In nucondb itself, update ups/nucondb.table with the correct versions of libwda and ifdhc.
  • Commit and tag with the next micro version (eg, v2_4_1 becomes v2_4_2). Usually, nucondb and ifbeam have the same version.
    git clone ssh://p-ifdhc@cdcvs.fnal.gov/cvs/projects/ifdhc-nucondb nucondb
    cd nucondb/ups
    edit nucondb.table
    git commit -m"for ifdhc v2_5_4" nucondb.table
    git tag -a -m"nucondb v2_4_2 for ifdhc v2_5_4" v2_4_2
    git push origin master v2_4_2
    
  • In nucondb-ssi-build, update the nucondb version in bootstrap.sh and build_nucondb.sh. Use the same tag as in the nucondb repository.
  • Run the bootstrap.
    source <product directory>/setup
    ./bootstrap.sh $MYPROD
    
  • make a test build
    build_nucondb.sh $MYPROD e19:p372 prof
    
  • If you need to edit anything in nucondb-ssi-build, make sure to run bootstrap again.
  • Once everything is fine, commit the changes, tag with the version you just built, and push to redmine.
    git commit -m"nucondb v2_4_2" bootstrap.sh build_nucondb.sh
    git tag -a -m"nucondb v2_4_2" v2_4_2
    git push origin master v2_4_2
    
  • Upload the source code tarball to SciSoft.
    copyToSciSoft $MYPROD/ifbeam-2.4.2-source.tar.bz2
    

ifdh_art

  • ifdh_art depends on art and uses cetbuildtools.
    git clone ssh://p-ifdh-art@cdcvs.fnal.gov/cvs/projects/ifdh-art/ifdh_art.git
    cd ifdh_art
    git checkout develop (if necessary)
    
  • The head of develop is built with art 3.04, so it is appropriate for use with larsoft.
    • We use branch v2_07_for_art_v2 when building for the current NOvA distribution.
    • MicroBooNE production releases v08_00_00_MM with larsoft v08_05_00_NN use ifdh_art v2_07_03. There is no branch for this.
  • Determine if the head of develop has any changes since the last tag.
    • In this case, we are only updating product depedencies, and are changing the micro version.
    • If we were updating to a minor version of art (3.03 to 3.04), we would update the minor version of ifdh_art.
  • Note that as of art 3.04, the default build uses python 3. To test the build against python 2, add the py2 qualifier.
  • Use git flow when updating a release on the head of develop. In this case, we are only changing the micro version.
    git flow release start v2_10_02
    
  • Edit ups/product_deps, changing the parent version to v2_10_02. Also change nucondb and ifbeam versions appropriately.
  • Work in an empty build directory. It cannot be under the source code.
    mkdir <my build>
    cd <my build>
    
  • Build for e19
    source .../path/to/ifdh_art/ups/setup_for_development -p e19
    buildtool -I $MYPROD -bti -jN
    
  • If there are problems, fix them.
  • Build for c7
    source .../path/to/ifdh_art/ups/setup_for_development -p c7
    buildtool -I $MYPROD -bti -jN
    
  • If there are problems, fix them.
  • Once everything builds successfully, commit the changes and tag the release.
    git commit -m"ifdh_art v2_10_02 for ifdhc v2_5_4 and libwda v2_27_0" ups/product_deps
    git flow release finish -m"ifdh_art v2_10_02 for ifdhc v2_5_4 and libwda v2_27_0" 
    (:wq at prompts)
    git push origin master develop v2_10_02
    

Distribution

Nulite distribution

ifdh distribution

  • It can be useful to make an ifdh distribution. The config files that control the ifdh distribution are found in an appropriate branch of build-framework. We leave this to a build-framework expert.