Any system can be used as a build node to create additional software installations that should be added to the EESSI CernVM-FS repository.
OS and software:
- GNU/Linux (any distribution) as operating system;
- a recent version of Singularity (>= 3.6 is recommended);
- check with
- check with
tmuxis highly recommended;
Admin privileges are not required, as long as Singularity is installed.
- 8 or more cores is recommended (though not strictly required);
- at least 50GB of free space on a local filesystem (like
- at least 16GB of memory (2GB/core or higher recommended);
Instructions to install Singularity and screen (click to show commands):
CentOS 8 (
Setting up the container¶
It is highly recommended to start a
tmux session first!
A container image is provided that includes everything that is required to set up a writable overlay on top of the EESSI CernVM-FS repository.
First, pick a location on a local filesystem for the temporary directory:
- Do not use a shared filesystem like NFS, Lustre or GPFS.
- There should be at least 50GB of free disk space in this local filesystem (more is better).
- There should be no automatic cleanup of old files via a cron job on this local filesystem.
- Try to make sure the directory is unique (not used by anything else).
If you are going to install on a separate drive (due to lack of space on /), then you need to set some variables to
point to that location. You will also need to bind mount it in the
singularity command. Let's say that you drive is
mounted in /srt. Then you change the relevant commands below to this:
export EESSI_TMPDIR=/srt/$USER/EESSI mkdir -p $EESSI_TMPDIR mkdir /srt/tmp export SINGULARITY_BIND="$EESSI_TMPDIR/var-run-cvmfs:/var/run/cvmfs,$EESSI_TMPDIR/var-lib-cvmfs:/var/lib/cvmfs,/srt/tmp:/tmp" singularity shell -B /srt --fusemount "$EESSI_PILOT_READONLY" --fusemount "$EESSI_PILOT_WRITABLE_OVERLAY" docker://ghcr.io/eessi/build-node:debian10
We will assume that
/tmp/$USER/EESSI meets these requirements:
Create some subdirectories in this temporary directory:
Configure Singularity cache directory, bind mounts, and (fake) home directory:
Define values to pass to
--fusemount` insingularity`` command:
export EESSI_PILOT_READONLY="container:cvmfs2 pilot.eessi-hpc.org /cvmfs_ro/pilot.eessi-hpc.org" export EESSI_PILOT_WRITABLE_OVERLAY="container:fuse-overlayfs -o lowerdir=/cvmfs_ro/pilot.eessi-hpc.org -o upperdir=$EESSI_TMPDIR/overlay-upper -o workdir=$EESSI_TMPDIR/overlay-work /cvmfs/pilot.eessi-hpc.org"
Once the container image has been downloaded and converted to a Singularity image (SIF format), you should get a prompt like this:
and the EESSI CernVM-FS repository should be mounted:
Setting up the environment¶
Set up the environment by starting a Gentoo Prefix session using the
Make sure you use the correct version of the EESSI pilot repository!
Clone the software-layer repository:
Run the software installation script in
This script will figure out the CPU microarchitecture of the host automatically (like
To build generic software installations (like
x86_64/generic), use the
Once all missing software has been installed, you should see a message like this:
Creating tarball to ingest¶
Before tearing down the build node, you should create tarball to ingest into the EESSI CernVM-FS repository.
To create a tarball of all installations, assuming your build host is
To create a tarball for specific installations, make sure you pick up both the software installation directories and the corresponding module files:
This tarball should be uploaded to the Stratum 0 server for ingestion.
If needed, you can ask for help in the
#software-layer Slack channel