1. Building and Installing Gaudi

1.1. Introduction

Gaudi uses the CMake cross-platform build-generator tool as a build system. CMake does not build the project, it generates the files needed by your build tool (GNU make, Ninja, Visual Studio, etc.) for building Gaudi. Before attempting the build you need to have installed a number of mandatory prerequisites external packages on which Gaudi depends. Check the pre-requisites and supported platforms for the list of packages that will needed to install and setup before you starting the build. If your platform is one of the common platforms used by the HEP coummunity very likely all the required packages will be available in CVMFS, alternatively your can install them locally, for example using the lcgcmake packaging tool, or one of the alternative tools.

1.2. Using the externals from CVMFS

If your system has CVMFS installed, the simplest is to setup a build environment using the LCG views. This is done by executing

source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh <lcg-version> <platform-tag>

The list of available LCG versions with their content and availale platforms can be browsed at the lcginfo site. You can also use the latest build of the stack of externals using the lcg version dev4/latest or dev3/latest. For example:

source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh dev4/latest x86_64-centos7-gcc8-opt

1.3. Installing the externals locally

Alternatively you can install all the required external dependencies locally in your system. An easy way to achive this is to use the lcgcmake tool. The following are the basic instructions to install all the required packages for Gaudi in a <prefix> location.

  • Install lcgcmake by just cloning the lcgcmake package and ensure that the PATH environment variable contains the the bin directory

    git clone https://gitlab.cern.ch/sft/lcgcmake.git
    export PATH=$PWD/lcgcmake/bin:$PATH
    
  • Configure the software stack by selecting the compiler

    mkdir tmp; cd tmp
    lcgcmake configure --compiler=gcc8 --prefix=<prefix>
    
  • Install all the required packages. The target GAUDI-externals can be used to ease the job

    lcgcmake install GAUDI-externals
    
  • Setup the environment with the constructed local view

    source <prefix>/hsf/x86_64-centos7-gcc8-opt/setup.sh
    

1.4. Building Gaudi

Gaudi builds as any CMake based project. Once the externals packages are installed or accessible it is as simple as running the configuration with the command cmake <options> on a build area and to execute cmake --build.

git clone https://gitlab.cern.ch/gaudi/Gaudi.git
mkdir build; cd build
cmake ../Gaudi -DBoost_NO_BOOST_CMAKE=TRUE
cmake --build . [ -- -j8]

# for running all the builtin tests
ctest -j8

1.5. Running some examples

The examples can be run using the command run available in the buiold directory.

./run gaudirun.py --help
./run gaudirun.py Histograms.py
./run gaudirun.oy FunctionalAlgorithms/ProduceConsume.py

To start a shell with all the running environment start the bash executable

./run bash

1.6. Pre-requisites

This table lists the external dependencies of Gaudi. The ones marked as mandatory are the only ones essencial for building and running simple tests or examples.

Package Version Mandatory
ROOT >= 6.16 yes
Python >= 2.7 yes
Boost >= 1.67 yes
TBB   yes
LibLZMA   yes
uuid   yes
VDT   yes
AIDA   no, needed for RootHistCnv
XercesC   no, used for the XML file catalogue
CppUnit   no
HepPDT   no
CLHEP   no
OpenCL   no
unwind   no
gperftools   no
jemalloc   no
Rangev3   no, needed with option GAUDI_USE_SYSTEM_RANGES_V3
Doxygen   no, needed to generate documentation
cppgsl   no, needed with option GAUDI_USE_SYSTEM_CPP_GSL
zlib   no, needed for the profiling tools

1.7. Supported platforms

  • CentOS 7 with gcc 8
  • SCL 6
  • Ubuntu 18.04
  • MacOS 10.14 with Xcode (experimental)

1.8. Compilers