5.2.4 : Le singularity_run.sh



Ce script va nous permettre de compiler et exécuter notre programme de test avec Apptainer noteQui s'appelle encore Singularity sur MUST.

Nous allons définir deux dossiers à la racine de notre image Apptainer :
  • /source : les sources de notre projet
  • /build : le dossier de comilation de notre projet


Voici un exemple où on relie un dossier extérieur noteDonc, du système de fichiers courrant à l'image Apptainer noteDonc, au système de fichiers à l'intérieur de l'image Apptainer
apptainer run --bind /path/to/source/:/source --bind /path/to/build/:/build image.sif command
Écrivons le script singularity_run.sh :
1
#!/bin/bash


Commençons par le prefix de notre programme (si on considère que nous lancerons nos jobs depuis les sources) :
1
PREFIX=${PWD}


On affiche sur quelle machine on tourne :
1
echo "Used machine is $(uname -a)"


On définit un dossier build unique pour que plusieurs jobs ne se marchent pas dessus :
1
2
3
4
5
6
7
BUILD_DIR="${PREFIX}/build_cmake_$(uname -n)"

if [ -d ${BUILD_DIR} ]
then
    	echo "Remove existing directory $BUILD_DIR"
        rm -fr ${BUILD_DIR}
fi


Créons notre dossier de compilation :
1
2
mkdir -p ${BUILD_DIR}
echo "BUILD_DIR = '${BUILD_DIR}'"


Définition notre image Apptainer :
1
CONTAINER_IMAGE="./ubuntu2204-TBB.sif"


On appelle le script d'installation que nous définirons dans la section 5.2.5 :
1
singularity run --bind $PREFIX:/source --bind ${BUILD_DIR}:/build ${CONTAINER_IMAGE} /source/install_singularity.sh


Le singularity_run.sh complet :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
PREFIX=${PWD}

echo "Used machine is $(uname -a)"
BUILD_DIR="${PREFIX}/build_cmake_$(uname -n)"

if [ -d ${BUILD_DIR} ]
then
    	echo "Remove existing directory $BUILD_DIR"
        rm -fr ${BUILD_DIR}
fi
mkdir -p ${BUILD_DIR}
echo "BUILD_DIR = '${BUILD_DIR}'"
CONTAINER_IMAGE="./ubuntu2204-TBB.sif"

singularity run --bind $PREFIX:/source --bind ${BUILD_DIR}:/build ${CONTAINER_IMAGE} /source/install_singularity.sh
Le fichier complet est disponible ici.