diff --git a/km3buu/ctrl.py b/km3buu/ctrl.py index 2892f2a1bf42cd3d3fb41aa4e2125f4cd28c8033..ebf63e2250b4999e7f125eb6febda8cb0da18b9c 100644 --- a/km3buu/ctrl.py +++ b/km3buu/ctrl.py @@ -15,6 +15,7 @@ __status__ = "Development" from shutil import copy import subprocess from spython.main import Client +import os from os.path import join, abspath, basename, isdir, isfile from tempfile import NamedTemporaryFile, TemporaryDirectory from thepipe.logger import get_logger @@ -22,15 +23,10 @@ from thepipe.logger import get_logger from . import IMAGE_NAME from .config import Config from .jobcard import Jobcard, read_jobcard -from .environment import is_singularity_version_greater, MIN_SINGULARITY_VERSION +from .environment import check_singularity_version log = get_logger(basename(__file__)) -if not is_singularity_version_greater( - MIN_SINGULARITY_VERSION): # pragma: no cover - log.error("Singularity version lower than %s" % MIN_SINGULARITY_VERSION) - raise OSError("Singularity version below %s" % MIN_SINGULARITY_VERSION) - GIBUU_SHELL = """ #!/bin/bash @@ -84,6 +80,7 @@ def run_jobcard(jobcard, outdir, container=False): with open(jobcard_fpath, "w") as f: f.write(str(jobcard)) if container: + check_singularity_version() log.info("Create temporary file for associated runscript") script_fpath = join(input_dir.name, "run.sh") with open(script_fpath, "w") as f: @@ -106,6 +103,7 @@ def run_jobcard(jobcard, outdir, container=False): return output["return_code"] else: p = subprocess.Popen( - [os.environ["CONTAINER_GIBUU_EXEC"], "<", jobcard_fpath], + "%s < %s" % (os.environ["CONTAINER_GIBUU_EXEC"], jobcard_fpath), + shell=True, cwd=outdir) return p.wait() diff --git a/km3buu/environment.py b/km3buu/environment.py index 8a4c3f03f4b9b05b6263086e16d244a657719cdc..624a0915ab3af0a3795bdc69a4d96e1524c98c53 100644 --- a/km3buu/environment.py +++ b/km3buu/environment.py @@ -25,13 +25,17 @@ log = get_logger(basename(__file__)) MIN_SINGULARITY_VERSION = "3.3" +def check_singularity_version(): # pragma: no cover + if not is_singularity_version_greater(MIN_SINGULARITY_VERSION): + log.error("Singularity version lower than %s" % + MIN_SINGULARITY_VERSION) + raise OSError("Singularity version below %s" % MIN_SINGULARITY_VERSION) def is_singularity_version_greater(min_version): # pragma: no cover singularity_version = LooseVersion(get_singularity_version().split()[-1]) retval = singularity_version > LooseVersion(MIN_SINGULARITY_VERSION) return retval - def build_image(output_dir): if not isdir(output_dir): raise OSError("Directory not found!")