Skip to content
trz42 edited this page Feb 1, 2023 · 11 revisions

Welcome to the software-layer wiki!

Using the eessi_container.sh script

Prerequisites

  • Linux machine
  • Singularity 3.7.x or newer
  • git
  • direct access to Internet

Get the script

git clone https://github.com/EESSI/software-layer.git PR216
export PATH="${PATH}:${PWD}/PR216" # possibly add it to your shell startup script
cd PR216
git fetch origin pull/216/head:PR216
git checkout PR216

Simple run (--help)

eessi_container.sh --help

produces output

usage: /home/thomarob/PR216/eessi_container.sh [OPTIONS] [SCRIPT]
 OPTIONS:
  -a | --access {ro,rw} - ro (read-only), rw (read & write) [default: ro]
  -c | --container IMG  - image file or URL defining the container to use
                          [default: docker://ghcr.io/eessi/build-node:debian10]
  -h | --help           - display this usage information [default: false]
  -g | --storage DIR    - directory space on host machine (used for
                          temporary data) [default: 1. TMPDIR, 2. /tmp]
  -m | --mode MODE      - with MODE==shell (launch interactive shell) or
                          MODE==run (run a script) [default: shell]
  -r | --repository CFG - configuration file or identifier defining the
                          repository to use [default: EESSI-pilot]
  -u | --resume DIR/TGZ - resume a previous run from a directory or tarball,
                          where DIR points to a previously used tmp directory
                          (check for output 'Using DIR as tmp ...' of a previous
                          run) and TGZ is the path to a tarball which is
                          unpacked the tmp dir stored on the local storage space
                          (see option --storage above) [default: not set]
  -s | --save DIR/TGZ   - save contents of tmp directory to a tarball in
                          directory DIR or provided with the fixed full path TGZ
                          when a directory is provided, the format of the
                          tarball's name will be {REPO_ID}-{TIMESTAMP}.tgz
                          [default: not set]

 If value for --mode is 'run', the SCRIPT provided is executed.

 FEATURES/OPTIONS to be implemented:
  -d | --dry-run           -  run script except for executing the container,
                              print information about setup [default: false]
  -i | --info              -  display configured repositories [default: false]

Simple run (get access to EESSI pilot, read-only mode)

eessi_container.sh

After a number of messages shows a prompt: Singularity> or Apptainer>. Source the EESSI pilot init script and wait until the EESSI prompt is shown.

Singularity> source /cvmfs/pilot.eessi-hpc.org/latest/init/bash
Found EESSI pilot repo @ /cvmfs/pilot.eessi-hpc.org/versions/2021.12!
archspec says x86_64/intel/skylake_avx512
Using x86_64/intel/skylake_avx512 as software subdirectory.
Using /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/skylake_avx512/modules/all as the directory to be added to MODULEPATH.
Found Lmod configuration file at /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/skylake_avx512/.lmod/lmodrc.lua
Initializing Lmod...
Prepending /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/skylake_avx512/modules/all to $MODULEPATH...
Environment set up to use EESSI pilot software stack, have fun!
[EESSI pilot 2021.12] $

Run module avail and load a module, say EasyBuild:

[EESSI pilot 2021.12] $ module avail
... lots of modules ...
[EESSI pilot 2021.12] $ module load EasyBuild
[EESSI pilot 2021.12] $ eb --version
This is EasyBuild 4.5.1 (framework: 4.5.1, easyblocks: 4.5.1) on host srl-login1.

Try to write to /cvmfs/pilot.eessi-hpc.org

[EESSI pilot 2021.12] $ touch /cvmfs/pilot.eessi-hpc.org/foo
touch: cannot touch '/cvmfs/pilot.eessi-hpc.org/foo': Function not implemented

Simple run (get access to EESSI pilot, read & write mode)

eessi_container.sh

After a number of messages shows a prompt: Singularity> or Apptainer>. Source the EESSI pilot init script and wait until the EESSI prompt is shown.

Singularity> source /cvmfs/pilot.eessi-hpc.org/latest/init/bash
Found EESSI pilot repo @ /cvmfs/pilot.eessi-hpc.org/versions/2021.12!
archspec says x86_64/intel/skylake_avx512
Using x86_64/intel/skylake_avx512 as software subdirectory.
Using /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/skylake_avx512/modules/all as the directory to be added to MODULEPATH.
Found Lmod configuration file at /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/skylake_avx512/.lmod/lmodrc.lua
Initializing Lmod...
Prepending /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/skylake_avx512/modules/all to $MODULEPATH...
Environment set up to use EESSI pilot software stack, have fun!
[EESSI pilot 2021.12] $

Try to write to /cvmfs/pilot.eessi-hpc.org

[EESSI pilot 2021.12] $ touch /cvmfs/pilot.eessi-hpc.org/foo
[EESSI pilot 2021.12] $ ls -ltr /cvmfs/pilot.eessi-hpc.org/
total 10
drwxr-xr-x 2 thomarob uib 4096 Jun 22  2021 2021.06
lrwxrwxrwx 1 thomarob uib   10 Jun 30  2021 host_injections -> /opt/eessi
drwxr-xr-x 3 thomarob uib 4096 Dec 10  2021 versions
lrwxrwxrwx 1 thomarob uib   16 May  4  2022 latest -> versions/2021.12
-rw-r--r-- 1 thomarob uib    0 Feb  1 23:11 foo

Configure it to use a specific CernVM-FS repository