diff --git a/cwltool/job.py b/cwltool/job.py index d6d7109c7..8d2b74d92 100644 --- a/cwltool/job.py +++ b/cwltool/job.py @@ -55,6 +55,18 @@ def run(self, dry_run=False, pull_image=True, rm_container=True, rm_tmpdir=True, env = os.environ img_id = docker.get_from_requirements(docker_req, docker_is_req, pull_image) + (docker_socket_req, _) = get_feature(self, "DockerSocketRequirement") + + gid = os.getgid() + + if docker_socket_req: + if kwargs.get("enable_docker_socket") is not True: + raise WorkflowException("DockerSocketRequirement is present but enable_docker_socket is not True") + if docker_socket_req.get("additionalDockerImages"): + for d in docker_socket_req["additionalDockerImages"]: + docker.get_from_requirements(docker_req, True, pull_image) + gid = os.stat("/var/run/docker.sock").st_gid + if docker_is_req and img_id is None: raise WorkflowException("Docker is required for running this tool.") @@ -67,7 +79,7 @@ def run(self, dry_run=False, pull_image=True, rm_container=True, rm_tmpdir=True, runtime.append("--volume=%s:%s:rw" % (os.path.abspath(self.tmpdir), "/tmp/job_tmp")) runtime.append("--workdir=%s" % ("/tmp/job_output")) euid = docker_vm_uid() or os.geteuid() - runtime.append("--user=%s" % (euid)) + runtime.append("--user=%s:%s" % (euid, gid)) if rm_container: runtime.append("--rm") @@ -77,6 +89,9 @@ def run(self, dry_run=False, pull_image=True, rm_container=True, rm_tmpdir=True, for t,v in self.environment.items(): runtime.append("--env=%s=%s" % (t, v)) + if docker_socket_req: + runtime.append("--volume=/var/run/docker.sock:/var/run/docker.sock:rw") + runtime.append(img_id) else: env = self.environment diff --git a/cwltool/main.py b/cwltool/main.py index d7db057cb..aa170cd05 100755 --- a/cwltool/main.py +++ b/cwltool/main.py @@ -77,7 +77,14 @@ def arg_parser(): dest="move_outputs") exgroup = parser.add_mutually_exclusive_group() - exgroup.add_argument("--enable-pull", default=True, action="store_true", + exgroup.add_argument("--enable-docker-socket", default=False, action="store_true", + help="Permit DockerSocketRequirement", dest="enable_docker_socket") + + exgroup.add_argument("--disable-docker-socket", default=False, action="store_false", + help="Disallow DockerSocketRequirement", dest="enable_docker_socket") + + exgroup = parser.add_mutually_exclusive_group() + exgroup.add_argument("--enable-", default=True, action="store_true", help="Try to pull Docker images", dest="enable_pull") exgroup.add_argument("--disable-pull", default=True, action="store_false", @@ -431,7 +438,8 @@ def main(args=None, tmpdir_prefix=args.tmpdir_prefix, rm_tmpdir=args.rm_tmpdir, makeTool=makeTool, - move_outputs=args.move_outputs + move_outputs=args.move_outputs, + enable_docker_socket=args.enable_docker_socket ) # This is the workflow output, it needs to be written stdout.write(json.dumps(out, indent=4)) diff --git a/cwltool/process.py b/cwltool/process.py index 1d5bbccc0..839489d21 100644 --- a/cwltool/process.py +++ b/cwltool/process.py @@ -28,7 +28,8 @@ "CreateFileRequirement", "ScatterFeatureRequirement", "SubworkflowFeatureRequirement", - "MultipleInputFeatureRequirement"] + "MultipleInputFeatureRequirement", + "DockerSocketRequirement"] def get_schema(): f = resource_stream(__name__, 'schemas/draft-3/cwl-avro.yml') @@ -167,6 +168,8 @@ def _init_job(self, joborder, input_basedir, **kwargs): for r in self.requirements: if r["class"] not in supportedProcessRequirements: raise WorkflowException("Unsupported process requirement %s" % (r["class"])) + if r["class"] == "DockerSocketRequirement" and kwargs.get("enable_docker_socket") is not True: + raise WorkflowException("DockerSocketRequirement is present but enable_docker_socket is not True") builder.files = [] builder.bindings = [] diff --git a/cwltool/schemas/draft-2/draft-2/dndtool.cwl b/cwltool/schemas/draft-2/draft-2/dndtool.cwl new file mode 100644 index 000000000..756494f64 --- /dev/null +++ b/cwltool/schemas/draft-2/draft-2/dndtool.cwl @@ -0,0 +1,29 @@ +class: CommandLineTool +description: "Reverse each line using the `rev` command" +reqirements: + - class: DockerRequirement + dockerId: docker_in_docker + dockerFile: | + FROM ubuntu:14.04 + MAINTAINER peter.amstutz@curoverse.com + + RUN apt-get update -qq && apt-get install -qqy \ + apt-transport-https \ + ca-certificates \ + curl \ + lxc \ + iptables \ + python-setuptools + + # Install Docker from Docker Inc. repositories. + RUN curl -sSL https://get.docker.com/ubuntu/ | sh + + - class: DockerSocketRequirement +inputs: [] +outputs: + - id: "#output" + type: File + outputBinding: + glob: output.txt +baseCommand: [docker, version] +stdout: output.txt \ No newline at end of file diff --git a/cwltool/schemas/draft-3/cwl-avro.yml b/cwltool/schemas/draft-3/cwl-avro.yml index d5af7d5dd..dd8ede900 100644 --- a/cwltool/schemas/draft-3/cwl-avro.yml +++ b/cwltool/schemas/draft-3/cwl-avro.yml @@ -2044,3 +2044,29 @@ the expression engine. The semantics of this field are defined by the underlying expression engine. Intended for uses such as providing function definitions that will be called from CWL expressions. + + +- name: DockerSocketRequirement + type: record + extends: "#ProcessRequirement" + fields: + - name: additionalDockerImages + type: + - "null" + - type: array + items: "#DockerRequirement" + doc: | + Require that the command should have access to the Docker socket at + `/var/run/docker.sock`. If the command is itself run in Docker, this means + the Docker socket must be made available inside the Docker container + through a bind mount. + + If this requirement is present, the platform is strongly encouraged to + arrange that file paths are consistent inside and outside the container, as + paths that exist only inside the container cannot be passed to other + containers. + + Note there are inherent security problems with providing access to the + Docker socket, so use of this feature should be limited to trusted + environments running trusted workflows. This feature is provided to support + existing container schemes that rely on Docker-in-Docker functionality. diff --git a/cwltool/schemas/draft-3/draft-3/add-lines-wf.cwl b/cwltool/schemas/draft-3/draft-3/add-lines-wf.cwl index 29d6c1560..79b49c46b 120000 --- a/cwltool/schemas/draft-3/draft-3/add-lines-wf.cwl +++ b/cwltool/schemas/draft-3/draft-3/add-lines-wf.cwl @@ -1 +1 @@ -../draft-2/add-lines-wf.cwl \ No newline at end of file +../../draft-2/draft-2/add-lines-wf.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/binding-test.cwl b/cwltool/schemas/draft-3/draft-3/binding-test.cwl index 0debcfad6..ffecb92e3 120000 --- a/cwltool/schemas/draft-3/draft-3/binding-test.cwl +++ b/cwltool/schemas/draft-3/draft-3/binding-test.cwl @@ -1 +1 @@ -../draft-2/binding-test.cwl \ No newline at end of file +../../draft-2/draft-2/binding-test.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/bwa-mem-job.json b/cwltool/schemas/draft-3/draft-3/bwa-mem-job.json index 23aeb22f5..198f605a1 120000 --- a/cwltool/schemas/draft-3/draft-3/bwa-mem-job.json +++ b/cwltool/schemas/draft-3/draft-3/bwa-mem-job.json @@ -1 +1 @@ -../draft-2/bwa-mem-job.json \ No newline at end of file +../../draft-2/draft-2/bwa-mem-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat-job.json b/cwltool/schemas/draft-3/draft-3/cat-job.json index 50b6a751c..93fa3c41b 120000 --- a/cwltool/schemas/draft-3/draft-3/cat-job.json +++ b/cwltool/schemas/draft-3/draft-3/cat-job.json @@ -1 +1 @@ -../draft-2/cat-job.json \ No newline at end of file +../../draft-2/draft-2/cat-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat-n-job.json b/cwltool/schemas/draft-3/draft-3/cat-n-job.json index ff644f02c..ca2aec2e5 120000 --- a/cwltool/schemas/draft-3/draft-3/cat-n-job.json +++ b/cwltool/schemas/draft-3/draft-3/cat-n-job.json @@ -1 +1 @@ -../draft-2/cat-n-job.json \ No newline at end of file +../../draft-2/draft-2/cat-n-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat1-tool.cwl b/cwltool/schemas/draft-3/draft-3/cat1-tool.cwl index 491c8ed01..128a3de1b 120000 --- a/cwltool/schemas/draft-3/draft-3/cat1-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/cat1-tool.cwl @@ -1 +1 @@ -../draft-2/cat1-tool.cwl \ No newline at end of file +../../draft-2/draft-2/cat1-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat2-tool.cwl b/cwltool/schemas/draft-3/draft-3/cat2-tool.cwl index bf58b0368..7f3f839c2 120000 --- a/cwltool/schemas/draft-3/draft-3/cat2-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/cat2-tool.cwl @@ -1 +1 @@ -../draft-2/cat2-tool.cwl \ No newline at end of file +../../draft-2/draft-2/cat2-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat3-tool.cwl b/cwltool/schemas/draft-3/draft-3/cat3-tool.cwl index 29d639efb..bea4424d1 120000 --- a/cwltool/schemas/draft-3/draft-3/cat3-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/cat3-tool.cwl @@ -1 +1 @@ -../draft-2/cat3-tool.cwl \ No newline at end of file +../../draft-2/draft-2/cat3-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat4-tool.cwl b/cwltool/schemas/draft-3/draft-3/cat4-tool.cwl index 642c90d2f..9a56c86d8 120000 --- a/cwltool/schemas/draft-3/draft-3/cat4-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/cat4-tool.cwl @@ -1 +1 @@ -../draft-2/cat4-tool.cwl \ No newline at end of file +../../draft-2/draft-2/cat4-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/cat5-tool.cwl b/cwltool/schemas/draft-3/draft-3/cat5-tool.cwl index 53476c763..bb1a197e3 120000 --- a/cwltool/schemas/draft-3/draft-3/cat5-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/cat5-tool.cwl @@ -1 +1 @@ -../draft-2/cat5-tool.cwl \ No newline at end of file +../../draft-2/draft-2/cat5-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/count-lines3-job.json b/cwltool/schemas/draft-3/draft-3/count-lines3-job.json index e6a0b465d..d3087f707 120000 --- a/cwltool/schemas/draft-3/draft-3/count-lines3-job.json +++ b/cwltool/schemas/draft-3/draft-3/count-lines3-job.json @@ -1 +1 @@ -../draft-2/count-lines3-job.json \ No newline at end of file +../../draft-2/draft-2/count-lines3-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/count-lines4-job.json b/cwltool/schemas/draft-3/draft-3/count-lines4-job.json index ed59a35b5..0da5e3e8c 120000 --- a/cwltool/schemas/draft-3/draft-3/count-lines4-job.json +++ b/cwltool/schemas/draft-3/draft-3/count-lines4-job.json @@ -1 +1 @@ -../draft-2/count-lines4-job.json \ No newline at end of file +../../draft-2/draft-2/count-lines4-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/count-lines6-job.json b/cwltool/schemas/draft-3/draft-3/count-lines6-job.json index 4b6ac550a..03f8efb07 120000 --- a/cwltool/schemas/draft-3/draft-3/count-lines6-job.json +++ b/cwltool/schemas/draft-3/draft-3/count-lines6-job.json @@ -1 +1 @@ -../draft-2/count-lines6-job.json \ No newline at end of file +../../draft-2/draft-2/count-lines6-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/echo-tool.cwl b/cwltool/schemas/draft-3/draft-3/echo-tool.cwl index fe2717ccc..50c512ea3 120000 --- a/cwltool/schemas/draft-3/draft-3/echo-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/echo-tool.cwl @@ -1 +1 @@ -../draft-2/echo-tool.cwl \ No newline at end of file +../../draft-2/draft-2/echo-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/empty.json b/cwltool/schemas/draft-3/draft-3/empty.json index b6eef1890..b16fcf560 120000 --- a/cwltool/schemas/draft-3/draft-3/empty.json +++ b/cwltool/schemas/draft-3/draft-3/empty.json @@ -1 +1 @@ -../draft-2/empty.json \ No newline at end of file +../../draft-2/draft-2/empty.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/env-job.json b/cwltool/schemas/draft-3/draft-3/env-job.json index 594726bc1..61f897729 120000 --- a/cwltool/schemas/draft-3/draft-3/env-job.json +++ b/cwltool/schemas/draft-3/draft-3/env-job.json @@ -1 +1 @@ -../draft-2/env-job.json \ No newline at end of file +../../draft-2/draft-2/env-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/env-tool1.cwl b/cwltool/schemas/draft-3/draft-3/env-tool1.cwl index 89dc54062..32e0a168b 120000 --- a/cwltool/schemas/draft-3/draft-3/env-tool1.cwl +++ b/cwltool/schemas/draft-3/draft-3/env-tool1.cwl @@ -1 +1 @@ -../draft-2/env-tool1.cwl \ No newline at end of file +../../draft-2/draft-2/env-tool1.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/env-tool2.cwl b/cwltool/schemas/draft-3/draft-3/env-tool2.cwl index 9254f7b79..af5d0bf03 120000 --- a/cwltool/schemas/draft-3/draft-3/env-tool2.cwl +++ b/cwltool/schemas/draft-3/draft-3/env-tool2.cwl @@ -1 +1 @@ -../draft-2/env-tool2.cwl \ No newline at end of file +../../draft-2/draft-2/env-tool2.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/hello.txt b/cwltool/schemas/draft-3/draft-3/hello.txt index a6f3e5498..e045ddc74 120000 --- a/cwltool/schemas/draft-3/draft-3/hello.txt +++ b/cwltool/schemas/draft-3/draft-3/hello.txt @@ -1 +1 @@ -../draft-2/hello.txt \ No newline at end of file +../../draft-2/draft-2/hello.txt \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/index.py b/cwltool/schemas/draft-3/draft-3/index.py index a8e884229..9c0ea58dd 120000 --- a/cwltool/schemas/draft-3/draft-3/index.py +++ b/cwltool/schemas/draft-3/draft-3/index.py @@ -1 +1 @@ -../draft-2/index.py \ No newline at end of file +../../draft-2/draft-2/index.py \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/node-engine.cwl b/cwltool/schemas/draft-3/draft-3/node-engine.cwl index 5de75735b..4aa4d1766 120000 --- a/cwltool/schemas/draft-3/draft-3/node-engine.cwl +++ b/cwltool/schemas/draft-3/draft-3/node-engine.cwl @@ -1 +1 @@ -../draft-2/node-engine.cwl \ No newline at end of file +../../draft-2/draft-2/node-engine.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/number.txt b/cwltool/schemas/draft-3/draft-3/number.txt index 157270045..6000fe373 120000 --- a/cwltool/schemas/draft-3/draft-3/number.txt +++ b/cwltool/schemas/draft-3/draft-3/number.txt @@ -1 +1 @@ -../draft-2/number.txt \ No newline at end of file +../../draft-2/draft-2/number.txt \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/parseInt-job.json b/cwltool/schemas/draft-3/draft-3/parseInt-job.json index 9e086f037..aa0fed934 120000 --- a/cwltool/schemas/draft-3/draft-3/parseInt-job.json +++ b/cwltool/schemas/draft-3/draft-3/parseInt-job.json @@ -1 +1 @@ -../draft-2/parseInt-job.json \ No newline at end of file +../../draft-2/draft-2/parseInt-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/rename-job.json b/cwltool/schemas/draft-3/draft-3/rename-job.json index eff98eb94..8be01412e 120000 --- a/cwltool/schemas/draft-3/draft-3/rename-job.json +++ b/cwltool/schemas/draft-3/draft-3/rename-job.json @@ -1 +1 @@ -../draft-2/rename-job.json \ No newline at end of file +../../draft-2/draft-2/rename-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/rename.cwl b/cwltool/schemas/draft-3/draft-3/rename.cwl index 115ad2116..effd1d34f 120000 --- a/cwltool/schemas/draft-3/draft-3/rename.cwl +++ b/cwltool/schemas/draft-3/draft-3/rename.cwl @@ -1 +1 @@ -../draft-2/rename.cwl \ No newline at end of file +../../draft-2/draft-2/rename.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/revsort-job.json b/cwltool/schemas/draft-3/draft-3/revsort-job.json index 666917abd..fa30d0b5d 120000 --- a/cwltool/schemas/draft-3/draft-3/revsort-job.json +++ b/cwltool/schemas/draft-3/draft-3/revsort-job.json @@ -1 +1 @@ -../draft-2/revsort-job.json \ No newline at end of file +../../draft-2/draft-2/revsort-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/revtool.cwl b/cwltool/schemas/draft-3/draft-3/revtool.cwl index 46611aa8a..54309928d 120000 --- a/cwltool/schemas/draft-3/draft-3/revtool.cwl +++ b/cwltool/schemas/draft-3/draft-3/revtool.cwl @@ -1 +1 @@ -../draft-2/revtool.cwl \ No newline at end of file +../../draft-2/draft-2/revtool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/scatter-job1.json b/cwltool/schemas/draft-3/draft-3/scatter-job1.json index 45d1bc580..2f607792e 120000 --- a/cwltool/schemas/draft-3/draft-3/scatter-job1.json +++ b/cwltool/schemas/draft-3/draft-3/scatter-job1.json @@ -1 +1 @@ -../draft-2/scatter-job1.json \ No newline at end of file +../../draft-2/draft-2/scatter-job1.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/scatter-job2.json b/cwltool/schemas/draft-3/draft-3/scatter-job2.json index 87216b307..118348e1a 120000 --- a/cwltool/schemas/draft-3/draft-3/scatter-job2.json +++ b/cwltool/schemas/draft-3/draft-3/scatter-job2.json @@ -1 +1 @@ -../draft-2/scatter-job2.json \ No newline at end of file +../../draft-2/draft-2/scatter-job2.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/scatter-wf1.cwl b/cwltool/schemas/draft-3/draft-3/scatter-wf1.cwl index a85e4d562..6dd65a428 120000 --- a/cwltool/schemas/draft-3/draft-3/scatter-wf1.cwl +++ b/cwltool/schemas/draft-3/draft-3/scatter-wf1.cwl @@ -1 +1 @@ -../draft-2/scatter-wf1.cwl \ No newline at end of file +../../draft-2/draft-2/scatter-wf1.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/scatter-wf2.cwl b/cwltool/schemas/draft-3/draft-3/scatter-wf2.cwl index 3c2deba36..d28d6235e 120000 --- a/cwltool/schemas/draft-3/draft-3/scatter-wf2.cwl +++ b/cwltool/schemas/draft-3/draft-3/scatter-wf2.cwl @@ -1 +1 @@ -../draft-2/scatter-wf2.cwl \ No newline at end of file +../../draft-2/draft-2/scatter-wf2.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/search-job.json b/cwltool/schemas/draft-3/draft-3/search-job.json index 71a363f5f..4695497ca 120000 --- a/cwltool/schemas/draft-3/draft-3/search-job.json +++ b/cwltool/schemas/draft-3/draft-3/search-job.json @@ -1 +1 @@ -../draft-2/search-job.json \ No newline at end of file +../../draft-2/draft-2/search-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/search.py b/cwltool/schemas/draft-3/draft-3/search.py index 1e890509a..cb94d49d8 120000 --- a/cwltool/schemas/draft-3/draft-3/search.py +++ b/cwltool/schemas/draft-3/draft-3/search.py @@ -1 +1 @@ -../draft-2/search.py \ No newline at end of file +../../draft-2/draft-2/search.py \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/sorttool.cwl b/cwltool/schemas/draft-3/draft-3/sorttool.cwl index fa93922fd..3858c5be2 120000 --- a/cwltool/schemas/draft-3/draft-3/sorttool.cwl +++ b/cwltool/schemas/draft-3/draft-3/sorttool.cwl @@ -1 +1 @@ -../draft-2/sorttool.cwl \ No newline at end of file +../../draft-2/draft-2/sorttool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/tmap-job.json b/cwltool/schemas/draft-3/draft-3/tmap-job.json index 97ee02520..954908f91 120000 --- a/cwltool/schemas/draft-3/draft-3/tmap-job.json +++ b/cwltool/schemas/draft-3/draft-3/tmap-job.json @@ -1 +1 @@ -../draft-2/tmap-job.json \ No newline at end of file +../../draft-2/draft-2/tmap-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/underscore.js b/cwltool/schemas/draft-3/draft-3/underscore.js index fae28a1c2..abf46ddd5 120000 --- a/cwltool/schemas/draft-3/draft-3/underscore.js +++ b/cwltool/schemas/draft-3/draft-3/underscore.js @@ -1 +1 @@ -../draft-2/underscore.js \ No newline at end of file +../../draft-2/draft-2/underscore.js \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/wc-job.json b/cwltool/schemas/draft-3/draft-3/wc-job.json index 3a0affc3f..0a935724c 120000 --- a/cwltool/schemas/draft-3/draft-3/wc-job.json +++ b/cwltool/schemas/draft-3/draft-3/wc-job.json @@ -1 +1 @@ -../draft-2/wc-job.json \ No newline at end of file +../../draft-2/draft-2/wc-job.json \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/wc-tool.cwl b/cwltool/schemas/draft-3/draft-3/wc-tool.cwl index 679cb5966..6365fb6f7 120000 --- a/cwltool/schemas/draft-3/draft-3/wc-tool.cwl +++ b/cwltool/schemas/draft-3/draft-3/wc-tool.cwl @@ -1 +1 @@ -../draft-2/wc-tool.cwl \ No newline at end of file +../../draft-2/draft-2/wc-tool.cwl \ No newline at end of file diff --git a/cwltool/schemas/draft-3/draft-3/whale.txt b/cwltool/schemas/draft-3/draft-3/whale.txt index ab60a8950..9d54a9ee7 120000 --- a/cwltool/schemas/draft-3/draft-3/whale.txt +++ b/cwltool/schemas/draft-3/draft-3/whale.txt @@ -1 +1 @@ -../draft-2/whale.txt \ No newline at end of file +../../draft-2/draft-2/whale.txt \ No newline at end of file