Skip to content

Required secondaryFiles outputs do not work in CWL CommandLineTools which run in Docker #1869

Closed
@ThomasHickman

Description

@ThomasHickman

Expected Behavior

If you have a CommandLineTool with an output of something like:

  output:
    type: File
    secondaryFiles:
      - pattern: ^.ext2
        required: true
    outputBinding:
      glob: file.ext1

cwltool should succeed if output files with extensions .ext1 and .ext2 exist in the output folder, when using:

requirements:
  DockerRequirement:
    dockerPull: ubuntu:20.04

Actual Behavior

This causes an error.

Workflow Code

#!/usr/bin/env cwl-runner

cwlVersion: v1.2
class: CommandLineTool
requirements:
  DockerRequirement:
    dockerPull: ubuntu:20.04

baseCommand:
    - bash
    - -c
    - touch file.ext1 && touch file.ext2

inputs: []


outputs:
  output:
    type: File
    secondaryFiles:
      - pattern: ^.ext2
        required: true
    outputBinding:
      glob: file.ext1

Full Traceback

$ cwltool --debug test.cwl
INFO /home/user/.local/bin/cwltool 3.1.20230624081518
INFO Resolved 'test.cwl' to 'file:///home/user/test.cwl'
DEBUG Parsed job order from command line: {
    "id": "test.cwl"
}
DEBUG [job test.cwl] initializing from file:///home/user/test.cwl
DEBUG [job test.cwl] {}
DEBUG [job test.cwl] path mappings is {}
DEBUG [job test.cwl] command line bindings is [
    {
        "position": [
            -1000000,
            0
        ],
        "datum": "bash"
    },
    {
        "position": [
            -1000000,
            1
        ],
        "datum": "-c"
    },
    {
        "position": [
            -1000000,
            2
        ],
        "datum": "touch file.ext1 && touch file.ext2"
    }
]
DEBUG [job test.cwl] initial work dir {}
INFO [job test.cwl] /tmp/hr1231gc$ docker \
    run \
    -i \
    --mount=type=bind,source=/tmp/hr1231gc,target=/ejjPTP \
    --mount=type=bind,source=/tmp/m9f50qdw,target=/tmp \
    --workdir=/ejjPTP \
    --read-only=true \
    --net=none \
    --user=1000:1000 \
    --rm \
    --cidfile=/tmp/6_1oisyz/20230630162631-435717.cid \
    --env=TMPDIR=/tmp \
    --env=HOME=/ejjPTP \
    ubuntu:20.04 \
    bash \
    -c \
    'touch file.ext1 && touch file.ext2'
INFO [job test.cwl] Max memory used: 0MiB
ERROR [job test.cwl] Job error:
("Error collecting output for parameter 'output': test.cwl:20:5: Missing required secondary file '/ejjPTP/file.ext2'", {})
WARNING [job test.cwl] completed permanentFail
DEBUG [job test.cwl] outputs {}
DEBUG [job test.cwl] Removing input staging directory /tmp/ov123yse
DEBUG [job test.cwl] Removing temporary directory /tmp/m9f50qdw
DEBUG Removing intermediate output directory /tmp/hr1231gc
{}WARNING Final process status is permanentFail

ERROR [job test.cwl] Job error:
("Error collecting output for parameter 'output': test.cwl:20:5: Missing required secondary file '/BBMzhN/file.ext2'", {})
WARNING [job test.cwl] completed permanentFail
DEBUG [job test.cwl] outputs {}
DEBUG [job test.cwl] Removing input staging directory /tmp/bhsgvfzk
DEBUG [job test.cwl] Removing temporary directory /tmp/afj9_yrv
DEBUG Removing intermediate output directory /tmp/h6ucwttr
{}
WARNING Final process status is permanentFail

Your Environment

  • cwltool version: 3.1.20220830195442

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions