Skip to content

Commit

Permalink
Merge branch 'main' into on-error-abort
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexTate authored Nov 12, 2024
2 parents 4838434 + c3c92eb commit 23fbe19
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 14 deletions.
14 changes: 1 addition & 13 deletions conformance-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,19 +97,7 @@ if [[ "$VERSION" = *dev* ]]
then
CWLTOOL_OPTIONS+=" --enable-dev"
fi
if [[ "$CONTAINER" = "singularity" ]]; then
CWLTOOL_OPTIONS+=" --singularity"
# This test fails because Singularity and Docker have
# different views on how to deal with this.
exclusions+=(docker_entrypoint)
if [[ "${VERSION}" = "v1.1" ]]; then
# This fails because of a difference (in Singularity vs Docker) in
# the way filehandles are passed to processes in the container and
# wc can tell somehow.
# See issue #1440
exclusions+=(stdin_shorcut)
fi
elif [[ "$CONTAINER" = "podman" ]]; then
if [[ "$CONTAINER" = "podman" ]]; then
CWLTOOL_OPTIONS+=" --podman"
fi

Expand Down
20 changes: 19 additions & 1 deletion cwltool/singularity.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ def is_apptainer_1_or_newer() -> bool:
return v[0][0] >= 1


def is_apptainer_1_1_or_newer() -> bool:
"""Check if apptainer singularity distribution is version 1.1 or higher."""
v = get_version()
if v[1] != "apptainer":
return False
return v[0][0] >= 2 or (v[0][0] >= 1 and v[0][1] >= 1)


def is_version_2_6() -> bool:
"""
Check if this singularity version is exactly version 2.6.
Expand Down Expand Up @@ -119,6 +127,12 @@ def is_version_3_9_or_newer() -> bool:
return v[0][0] >= 4 or (v[0][0] == 3 and v[0][1] >= 9)


def is_version_3_10_or_newer() -> bool:
"""Detect if Singularity v3.10+ is available."""
v = get_version()
return v[0][0] >= 4 or (v[0][0] == 3 and v[0][1] >= 10)


def _normalize_image_id(string: str) -> str:
return string.replace("/", "_") + ".img"

Expand Down Expand Up @@ -464,14 +478,18 @@ def create_runtime(
) -> tuple[list[str], Optional[str]]:
"""Return the Singularity runtime list of commands and options."""
any_path_okay = self.builder.get_requirement("DockerRequirement")[1] or False

runtime = [
"singularity",
"--quiet",
"exec",
"run" if is_apptainer_1_1_or_newer() or is_version_3_10_or_newer() else "exec",
"--contain",
"--ipc",
"--cleanenv",
]
if is_apptainer_1_1_or_newer() or is_version_3_10_or_newer():
runtime.append("--no-eval")

if singularity_supports_userns():
runtime.append("--userns")
else:
Expand Down
3 changes: 3 additions & 0 deletions tests/test_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ def BIND(v: str, env: Env) -> bool:
return v.startswith(tmp_prefix) and v.endswith(":/tmp")

sing_vars["SINGULARITY_BIND"] = BIND
if vminor >= 10:
sing_vars["SINGULARITY_COMMAND"] = "run"
sing_vars["SINGULARITY_NO_EVAL"] = None

result.update(sing_vars)

Expand Down

0 comments on commit 23fbe19

Please sign in to comment.