6 """A class containing all information necessary to run given bash commands in an arbitrary batch system."""
8 def __init__(self, name, hours=0, nCores=1, account=None, queue=None, memMB=0, mounts=[], basedir=""):
27 def write(self, useSingularity=True, useApptainer=False, extraDirs=[]):
28 executable =
"#!/bin/sh -\n"
32 platform =
str(os.environ[
'COMPILER_PATH']).
split(
'/')[-1].
replace(
'el9',
'almalinux9')
33 executable +=
'if [ "$1" != "--really" ]; then \n'
34 executable +=
' exec singularity exec -e --no-home'
35 for dir
in [
"/cvmfs",
"/var", self.
basedir,
"$(pwd | cut -d '/' -f 1-2)"] + extraDirs:
36 executable +=
' -B '+dir
37 executable +=
' /cvmfs/atlas.cern.ch/repo/containers/fs/singularity/'
38 executable += platform +
' /bin/bash -- "$0" --really "$@";\n'
40 executable +=
"shift;\n\n"
41 executable +=
"export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase\n"
42 executable +=
"source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh\n"
46 wrapperfilename = self.
basedir+
"/"+self.
name+
"_wrapper.sh"
47 platform =
str(os.environ[
'COMPILER_PATH']).
split(
'/')[-1].
replace(
'el9',
'almalinux9')
48 executable +=
'export ALRB_CONT_SWTYPE="apptainer"\n'
49 executable +=
'export ALRB_CONT_PRESETUP="hostname -f; date; id -a"\n'
50 executable +=
'export ALRB_testPath=",,,,,,,,,,,,,,,,,,,,,,,,"\n'
51 executable +=
'export ALRB_CONT_RUNPAYLOAD="'+wrapperfilename+
'"\n'
52 wrapper +=
"ulimit -f 1000000;\n"
53 wrapper +=
"cd "+self.
basedir+
";\n\n"
57 with open(wrapperfilename,
'w')
as f:
59 st = os.stat(wrapperfilename)
60 os.chmod(wrapperfilename, st.st_mode | stat.S_IEXEC)
61 executable +=
"export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase\n"
62 executable +=
"source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -c "+platform+
" -b -q"
67 executable +=
"exit $?\n"
70 executable +=
"ulimit -f 1000000;\n"
71 executable +=
"cd "+self.
basedir+
"\n\n"
74 executable += cmd+
"\n"
75 executable +=
"exit 0\n"
78 with open(filename,
'w')
as f:
82 st = os.stat(filename)
83 os.chmod(filename, st.st_mode | stat.S_IEXEC)