HEPnOS depends on the following libraries and tools (in addition to git and an MPI compiler supporting C++14):
- cmake - to build HEPnOS and Mercury
- yaml-cpp - git version, not a released archive
- Boost - the serialization library and the headers
- Mercury - and potential dependencies (e.g. transports)
- SDS-KeyVal - and potential dependencies (e.g. LevelDB, and/or BerkeleyDB)
- Bake - and its dependencies (libuuid and pmem)
- CppUnit (optional)
Given the large set of dependencies, it is highly recommended to install HEPnOS using Spack. The procedure is described in the following section.
Installing using Spack
Adding the SDS (Mochi) repository to Spack
Once you have Spack installed, clone the repository of Mochi packages, and make Spack aware of it:
git clone https://xgitlab.cels.anl.gov/sds/sds-repo.git cd sds-repo spack repo add .
Check that it worked:
spack repo list
You should see
Now that Spack is installed, you can install HEPnOS and its dependencies:
spack install hepnos
This should install all the dependencies. Note that MPI and Boost are two potentially large dependencies that will take some time to compile. If you already have MPI and/or Boost installed on your system (without Spack), you can tell Spack where to find them so it doesn't try to compile them.
Once installed, HEPnOS and its dependencies can be loaded as follows:
source <(spack module loads -m tcl --dependencies hepnos)
This command amends your environment variables (e.g. LD_LIBRARY_PATH, PATH, etc.) in your current shell to point to where Spack installed HEPnOS and its dependencies.
You can try out the installation by typing:
This command should give you the following message:
Usage: hepnos-daemon <config-file> <connection-file> <config-file> path to the YAML file containing the service configuration <connection-file> path to the YAML file to generate for clients
The next section will explain what arguments to provide.