Building with Spack
Spack is a package manager designed to handle software used in scientific computing, including computing in high-energy physics. The Spack package manager can be used to more easily install ACTS’ dependencies. Builds using Spack are not officially supported. In order to start using Spack, follow the instructions on the official Spack documentation.
Installing dependencies
Once Spack has been installed, we are ready to create a development environment; for example:
$ spack env create acts
This new environment can then be activated and deactivated as follows:
$ spack env activate acts
$ despacktivate
Tip
The creation of a Spack environment is persistent, i.e. you should only need to create your environment once. The activation of the environment, on the other hand, affects only your current shell. As a result, you will need to activate the environment every time you open a new shell.
With the Spack environment activated, you are ready to install ACTS’ dependencies. You can either do this manually, or you can rely on Spack’s definition of how to do this. To use the Spack definition, execute the following command (tuned for ACTS version 36.1.0; make sure you update the version number to match the version of ACTS you want to build):
$ spack install --add --only dependencies "acts@36.1.0"
This specification will suffice to build the core ACTS library. If you want to build ACTS plugins, you will need to add additional variants; the following is a spec which can be used to build ACTS and all its plugins:
$ spack install --add --only dependencies "acts@36.1.0+tgeo+geomodel+podio+edm4hep+examples+odd+fatras+json+dd4hep+geant4+fatras_geant4+hepmc3+pythia8+python+svg+traccc"
The string starting with acts
in the commands above is the so-called spec,
and it consists of three parts. The first part is the name of the package,
which is acts
. The second part is the version of the package, in this case
36.1.0
; Spack will pull in a set of dependencies suitable for that given
version, so it is recommended to tune the version number to match the version
of ACTS you want to build. The final part is a series of variants, marked with
the +
symbol. The command above allows you to build virtually all components
of ACTS, but it also pulls in a large number of dependencies. You can remove
variants you do not need in order to speed up the Spack build.
Once Spack has concretized and installed the ACTS dependencies, you can build ACTS as normal using CMake.
Build caches
Work on build caches for ACTS is in progress.
Support
Spack support is experimental and not officially supported. Because ACTS’ dependencies are constantly changing, it is possible that Spack’s database may at times be out of date. If you encounter any problems using Spack to build ACTS, unofficial support is available in the #Spack channel on the ACTS Mattermost.