Skip to content

Commit d6a4196

Browse files
authored
Merge pull request #4 from legend-exp/fixes
execenv: support podman and do not mount XDG_RUNTIME_DIR with shifter
2 parents b62cdbb + fa467c2 commit d6a4196

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

src/legenddataflowscripts/workflow/execenv.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
log = logging.getLogger(__name__)
2020

21+
OCI_ENGINES = ["docker", "podman", "podman-hpc", "shifter"]
22+
2123

2224
def _execenv2str(cmd_expr: Iterable, cmd_env: Mapping) -> str:
2325
return " ".join([f"{k}={v}" for k, v in cmd_env.items()]) + " " + " ".join(cmd_expr)
@@ -27,12 +29,7 @@ def apptainer_env_vars(cmdenv: Mapping) -> list[str]:
2729
return [f"--env={var}={val}" for var, val in cmdenv.items()]
2830

2931

30-
def docker_env_vars(cmdenv: Mapping) -> list[str]:
31-
# same syntax
32-
return apptainer_env_vars(cmdenv)
33-
34-
35-
def shifter_env_vars(cmdenv: Mapping) -> list[str]:
32+
def oci_engine_env_vars(cmdenv: Mapping) -> list[str]:
3633
# same syntax
3734
return apptainer_env_vars(cmdenv)
3835

@@ -69,20 +66,20 @@ def execenv_prefix(
6966
if has_xdg:
7067
cmdline += [f"--bind={xdg_runtime_dir}"]
7168

72-
elif "docker" in config.execenv.cmd:
73-
cmdline += docker_env_vars(config.execenv.env)
74-
75-
elif "shifter" in config.execenv.cmd:
76-
cmdline += shifter_env_vars(config.execenv.env)
69+
elif any(engine in config.execenv.cmd for engine in OCI_ENGINES):
70+
cmdline += oci_engine_env_vars(config.execenv.env)
7771

72+
# no XDG mount with shifter
7873
if (
79-
any(exe in config.execenv.cmd for exe in ("docker", "shifter"))
74+
any(exe in config.execenv.cmd for exe in OCI_ENGINES)
8075
and has_xdg
76+
and "shifter" not in config.execenv.cmd
8177
):
8278
cmdline += [f"--volume={xdg_runtime_dir}:{xdg_runtime_dir}"]
8379

8480
# now we can add the arguments
85-
cmdline += shlex.split(config.execenv.arg)
81+
_arg = config.execenv.arg
82+
cmdline += shlex.split(_arg if isinstance(_arg, str) else " ".join(_arg))
8683

8784
if as_string:
8885
return _execenv2str(cmdline, cmdenv) + " "
@@ -192,7 +189,7 @@ def dataflow() -> None:
192189
)
193190
)
194191

195-
logger = logging.getLogger("legenddataflow")
192+
logger = logging.getLogger("legenddataflowscripts")
196193
logger.setLevel(logging.DEBUG)
197194
logger.addHandler(handler)
198195

tests/test_execenv.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ def test_execenv_prefix(config):
6868
"shifter",
6969
"--env=VAR1=val1",
7070
"--env=VAR2=val2",
71-
"--volume=whatever:whatever",
7271
"--image=legendexp/legend-base:latest",
7372
]
7473
assert cmd_env == config.execenv.env
@@ -77,7 +76,6 @@ def test_execenv_prefix(config):
7776
assert cmd_str == (
7877
"VAR1=val1 VAR2=val2 "
7978
"shifter --env=VAR1=val1 --env=VAR2=val2 "
80-
"--volume=whatever:whatever "
8179
"--image=legendexp/legend-base:latest "
8280
)
8381

@@ -99,7 +97,6 @@ def test_execenv_pyexe(config):
9997
assert cmd_str == (
10098
"VAR1=val1 VAR2=val2 "
10199
"shifter --env=VAR1=val1 --env=VAR2=val2 "
102-
"--volume=whatever:whatever "
103100
"--image=legendexp/legend-base:latest "
104101
".snakemake/software/bin/dio-boe "
105102
)

0 commit comments

Comments
 (0)