Building Offline with cmake

From Mu2eWiki
Jump to navigation Jump to search

Introduction

Use of CMake to build Offline in the DAQ environment.

Building Offline with CMake

Using UPS

The UPS-based build of Offline is supported in SL7 environments, in two distinct flavors:

Package-based build

The Offline CMake uses the cetmodules package for several CMake convenience functions, and can be built using the standard cetmodules invocation:

source /cvmfs/mu2e.opensciencegrid.org/setupmu2e-art.sh
git clone https://github.com/Mu2e/Offline.git
mkdir build_Offline && cd build_Offline
source ../Offline/ups/setup_for_development -p e28:s126:trig # -d or -p are supported, see Offline/ups/product_deps for supported qualifier combinations
export CETPKG_J=$((`cat /proc/cpuinfo|grep processor|tail -1|awk '{print $3}'` + 1)) # Set build parallelism to number of CPUs on host
buildtool # -p to create a UPS-redistributable package, -i to install in a UPS area (-I to specify which)

MRB-based build

Offline is also compatible with MRB-based development:

source /cvmfs/mu2e.opensciencegrid.org/setupmu2e-art.sh
setup mrb
mkdir my_mrb_working_area
export CETPKG_J=$((`cat /proc/cpuinfo|grep processor|tail -1|awk '{print $3}'` + 1)) # Set build parallelism to number of CPUs on host
export MRB_PROJECT=Mu2e
mrb newDev -v v1_00_00 -q e28:s126:trig:prof # Version here is mostly meaningless, but required to silence certain CMake warnings
cd srcs
mrb gitCheckout https://github.com/Mu2e/Offline.git
mrb uc
mrb z
mrbsetenv
mrb b

Using Spack

An "Offline" Spack recipe has been created and added to https://github.com/Mu2e/mu2e-spack. To build and install Offline in a Spack area, use the following commands:

git clone https://github.com/FNALssi/spack.git -b fnal-develop

echo 'export SPACK_DISABLE_LOCAL_CONFIG=true
source spack/share/spack/setup-env.sh' >setup-env.sh

source setup-env.sh

git clone https://github.com/fnalssi/fermi-spack-tools.git
./fermi-spack-tools/bin/make_packages_yaml spack # Examine output, several system packages are required to be installed for the spack concretize/install steps to work properly

mkdir repos && cd repos
git clone https://github.com/FNALssi/fnal_art.git && spack repo add fnal_art
git clone https://github.com/art-daq/artdaq-spack.git && spack repo add artdaq-spack
git clone https://github.com/Mu2e/mu2e-spack.git && spack repo add mu2e-spack
cd ..

spack compiler find
spack env create offline
spack env activate offline

spack add art-suite@s126
spack add Offline
spack develop Offline@main

spack concretize
spack install

To use this area in future sessions:

source setup-env.sh
spack env activate offline
mu2e -c ... # Offline is now setup in your PATH

When to Update CMakeLists.txt

In general, CMakeLists.txt in affected packages should be updated when:

  1. Files are added, removed, or renamed
  2. Library dependencies for a package change (e.g. a #include referring to another package is added or removed)
  3. Data files are added to a package and should be installed when Offline is built