Building Offline with cmake: Difference between revisions
Jump to navigation
Jump to search
Line 46: | Line 46: | ||
<pre> | <pre> | ||
git clone https://github.com/FNALssi/spack.git -b fnal-develop | git clone https://github.com/FNALssi/spack.git -b fnal-develop | ||
echo 'export SPACK_DISABLE_LOCAL_CONFIG=true | echo 'export SPACK_DISABLE_LOCAL_CONFIG=true | ||
source spack/share/spack/setup-env.sh' >setup-env.sh | source spack/share/spack/setup-env.sh' >setup-env.sh | ||
source setup-env.sh | source setup-env.sh | ||
mkdir repos && cd repos | mkdir repos && cd repos | ||
git clone https://github.com/FNALssi/fnal_art.git && spack repo add fnal_art | git clone https://github.com/FNALssi/fnal_art.git && spack repo add fnal_art | ||
Line 54: | Line 57: | ||
git clone https://github.com/Mu2e/mu2e-spack.git && spack repo add mu2e-spack | git clone https://github.com/Mu2e/mu2e-spack.git && spack repo add mu2e-spack | ||
cd .. | cd .. | ||
spack compiler find | spack compiler find | ||
spack env create offline | spack env create offline | ||
spack env activate offline | spack env activate offline | ||
spack add otsdaq-suite@v2_07_00 s=126 artdaq=31207 | spack add otsdaq-suite@v2_07_00 s=126 artdaq=31207 | ||
spack add Offline | spack add Offline | ||
spack develop Offline@main | spack develop Offline@main | ||
spack concretize | spack concretize | ||
spack install | spack install |
Revision as of 22:27, 23 January 2024
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 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 otsdaq-suite@v2_07_00 s=126 artdaq=31207 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:
- Files are added, removed, or renamed
- Library dependencies for a package change (e.g. a #include referring to another package is added or removed)
- Data files are added to a package and should be installed when Offline is built