Commit fd03c446 authored by mvdbeek's avatar mvdbeek
Browse files

Fix mulled singularity building

This used to fail with
```
[May 13 12:53:06] DEBU Container [8a432293fb2f step-adb59c6b2d] started, waiting for completion
[May 13 12:53:06] SERR mkdir: missing operand
[May 13 12:53:06] SERR Try 'mkdir --help' for more information.
[May 13 12:53:06] ERRO Task processing failed: Unexpected exit code [1] of container [8a432293fb2f step-adb59c6b2d], container preserved
```
Involucro interpretes comma-separated arguments in `.run` as individual
commands. You can see the full error in https://github.com/BioContainers/multi-package-containers/pull/1713/checks?check_run_id=2575472382

Broke in https://github.com/mvdbeek/galaxy/commit/71a70ea1f12cca48c33ee5569bd74035f96376f7
parent d6992b2b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -101,11 +101,11 @@ inv.task('build')
if VAR.SINGULARITY ~= '' then
    inv.task('singularity')
        .using(singularity_image)
        .withHostConfig({binds = {"build:/data", "'" .. singularity_image_dir .. "':/import"}, privileged = true})
        .withHostConfig({binds = {"build:/data", singularity_image_dir .. ":/import"}, privileged = true})
        .withConfig({entrypoint = {'/bin/sh', '-c'}})
        .run('mkdir', '-p', '/usr/local/var/singularity/mnt/container')
        .run('singularity', 'build', '/import/' .. VAR.SINGULARITY_IMAGE_NAME, '/import/Singularity.def')
        .run('chown', VAR.USER_ID, '/import/' .. VAR.SINGULARITY_IMAGE_NAME)
        .run('mkdir -p /usr/local/var/singularity/mnt/container && '
            .. 'singularity build /import/' .. VAR.SINGULARITY_IMAGE_NAME .. ' /import/Singularity.def && '
            .. 'chown ' .. VAR.USER_ID .. ' /import/' .. VAR.SINGULARITY_IMAGE_NAME)
end

inv.task('cleanup')
+9 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ from galaxy.tool_util.deps.mulled.mulled_build import (
    build_target,
    DEFAULT_BASE_IMAGE,
    DEFAULT_EXTENDED_BASE_IMAGE,
    mull_targets,
)
from ..util import external_dependency_management

@@ -18,3 +19,11 @@ from ..util import external_dependency_management
def test_base_image_for_targets(target, version, base_image):
    target = build_target(target, version=version)
    assert base_image_for_targets([target]) == base_image


@external_dependency_management
def test_mulled_build_files_cli(tmpdir):
    singularity_image_dir = tmpdir.mkdir('singularity_image_dir')
    target = build_target('zlib')
    mull_targets([target], command='build-and-test', singularity=True, singularity_image_dir=singularity_image_dir)
    assert singularity_image_dir.join('zlib').exists()