Skip to content

InputWorkDirRequirement error with Directories #614

Closed
@kmhernan

Description

@kmhernan

Expected Behavior

The directory in the Dirent should be created in the workdir for docker-based executions.

Actual Behavior

It seems to work ok with run locally (not in container); however, some invalid field records are output to the logs (see traceback). When running within a container, there is an OSError because cwltool seems to try and make the /var/spool/cwl workdir locally.

Workflow Code

cwlVersion: v1.0

class: CommandLineTool

requirements:
  - class: InlineJavascriptRequirement
  - class: InitialWorkDirRequirement
    listing:
      - entry: |
          ${
             return {"class": "Directory", "basename": inputs.out_dir, "listing": []}
           }
        writable: true

hints:
  - class: DockerRequirement
    dockerPull: alpine

inputs:
  out_dir:
    type: string?
    default: "out"

outputs:
  staged_dir:
    type: Directory
    outputBinding:
      glob: $(inputs.out_dir)

baseCommand: "true"

Full Traceback

When running with docker image:

Traceback (most recent call last):
  File "/home/ubuntu/.virtualenvs/cwltool/local/lib/python2.7/site-packages/cwltool/main.py", line 298, in single_job_executor
    r.run(**kwargs)
  File "/home/ubuntu/.virtualenvs/cwltool/local/lib/python2.7/site-packages/cwltool/job.py", line 427, in run
    self.add_volumes(self.generatemapper, runtime)
  File "/home/ubuntu/.virtualenvs/cwltool/local/lib/python2.7/site-packages/cwltool/job.py", line 344, in add_volumes
    os.makedirs(vol.target, 0o0755)
  File "/home/ubuntu/.virtualenvs/cwltool/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/home/ubuntu/.virtualenvs/cwltool/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/spool/cwl'
Workflow error, try again with --debug for more information:
[Errno 13] Permission denied: '/var/spool/cwl'
Traceback (most recent call last):
  File "/home/ubuntu/.virtualenvs/cwltool/local/lib/python2.7/site-packages/cwltool/main.py", line 976, in main
    **vars(args))
  File "/home/ubuntu/.virtualenvs/cwltool/local/lib/python2.7/site-packages/cwltool/main.py", line 306, in single_job_executor
    raise WorkflowException(Text(e))
WorkflowException: [Errno 13] Permission denied: '/var/spool/cwl'

While running with --no-container:

invalid field `nameext`, expected one of: 'class', 'location', 'path', 'basename', 'listing'
invalid field `nameroot`, expected one of: 'class', 'location', 'path', 'basename', 'listing'
[job error.cwl] completed success
[job error.cwl] {
    "staged_dir": {
        "basename": "out",
        "nameext": "",
        "nameroot": "out",
        "location": "file:///mnt/tmp/tmpgvqeFT/out",
        "class": "Directory"
    }
}

Your Environment

  • cwltool version: 1.0.20180116213856

Edit: also saw this on 1.0.20171017195544 version

Edit2: it seems to work on cwltool==1.0.20170723124118

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions