5.2.5 : Le install_singularity.sh



Notre script de compilation va devoir utiliser les dossiers /source et /build que nous avons définit précédemment (voir section 5.2.4).
1
#!/bin/bash


On défini notre dossier de compilation :
1
2
BUILD_DIR="/build"
cd ${BUILD_DIR}


On appelle CMake en lui explicitant le dossier des sources et celui de la compilation noteUne autre preuve que nous serons bien dans l'image Apptainer est que nous appelons cmake et non cmake3 :
1
cmake -S /source -B /build


Puis Make :
1
make


Et enfin, notre programme :
1
./simple_hadamard_product


Le install_singularity.sh complet :
1
2
3
4
5
6
7
#!/bin/bash
BUILD_DIR="/build"
cd ${BUILD_DIR}

cmake -S /source -B /build
make
./simple_hadamard_product
Le fichier complet est disponible ici.

Pourquoi ne pas appeler cmake .. comme d'habitude ? Tout simplement parce que le dossier /source n'est pas le parent du dossier /build.
Le dossier courrant est buggé sur MUST. Depuis toujours, Apptainer (et donc Singularity) transmettent le dossier courrant PWD ce qui permet d'exécuter des scripts relativement, du moment qu'ils sont dans le dossier courant. Cette fonctionnalité est vallable sur toutes les installations du monde, sauf sur MUST où le dossier courrant pointe vers HOME ce qui n'a absolument aucun sens car il n'est pas visible par les jobs. Et si on redéfinit HOME à la volée, le dossier courrant pointe quand même vers le vrai HOME donc c'est vraiment un truc moche écrit en dur.
D'une manière générale, il est plus sûr d'expliciter les différents dossiers que l'on veut utiliser dans l'image Apptainer car ça évite les mauvaises surprises.