diff --git a/cwltool/builder.py b/cwltool/builder.py index 5352f915a..ffb88d4c2 100644 --- a/cwltool/builder.py +++ b/cwltool/builder.py @@ -156,4 +156,7 @@ def generate_arg(self, binding): return [a for a in args if a is not None] def do_eval(self, ex, context=None, pull_image=True): - return expression.do_eval(ex, self.job, self.requirements, self.outdir, self.tmpdir, context=context, pull_image=pull_image) + return expression.do_eval(ex, self.job, self.requirements, + self.outdir, self.tmpdir, + self.resources, + context=context, pull_image=pull_image) diff --git a/cwltool/expression.py b/cwltool/expression.py index a5f8b7e5e..9e00ae138 100644 --- a/cwltool/expression.py +++ b/cwltool/expression.py @@ -12,10 +12,10 @@ _logger = logging.getLogger("cwltool") -def exeval(ex, jobinput, requirements, outdir, tmpdir, context, pull_image): +def exeval(ex, jobinput, requirements, outdir, tmpdir, context, pull_image, resources): if ex["engine"] == "https://w3id.org/cwl/cwl#JsonPointer": try: - obj = {"job": jobinput, "context": context, "outdir": outdir, "tmpdir": tmpdir} + obj = {"job": jobinput, "context": context, "outdir": outdir, "tmpdir": tmpdir, "resources": resources} return schema_salad.ref_resolver.resolve_json_pointer(obj, ex["script"]) except ValueError as v: raise WorkflowException("%s in %s" % (v, obj)) @@ -52,6 +52,7 @@ class DR(object): "context": context, "outdir": outdir, "tmpdir": tmpdir, + "resources": resources } _logger.debug("Invoking expression engine %s with %s", @@ -72,8 +73,8 @@ class DR(object): raise WorkflowException("Unknown expression engine '%s'" % ex["engine"]) -def do_eval(ex, jobinput, requirements, outdir, tmpdir, context=None, pull_image=True): +def do_eval(ex, jobinput, requirements, outdir, tmpdir, resources, context=None, pull_image=True): if isinstance(ex, dict) and "engine" in ex and "script" in ex: - return exeval(ex, jobinput, requirements, outdir, tmpdir, context, pull_image) + return exeval(ex, jobinput, requirements, outdir, tmpdir, context, pull_image, resources) else: return ex diff --git a/cwltool/main.py b/cwltool/main.py index 4443e71e9..bf83cad2c 100755 --- a/cwltool/main.py +++ b/cwltool/main.py @@ -299,6 +299,7 @@ def load_tool(argsworkflow, updateonly, strict, makeTool, debug, print_pre=False def main(args=None, executor=single_job_executor, makeTool=workflow.defaultMakeTool, + selectResources=None, parser=None, stdin=sys.stdin, stdout=sys.stdout, @@ -434,7 +435,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, + select_resources=selectResources ) # 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..c3c632c4a 100644 --- a/cwltool/process.py +++ b/cwltool/process.py @@ -186,8 +186,48 @@ def _init_job(self, joborder, input_basedir, **kwargs): builder.bindings.extend(builder.bind_input(self.inputs_record_schema, builder.job)) + builder.resources = {} + builder.resources = self.evalResources(builder, kwargs) + return builder + def evalResources(self, builder, kwargs): + resourceReq, _ = self.get_requirement("ResourceRequirement") + request = { + "coresMin": 1, + "coresMax": 1, + "ramMin": 1024, + "ramMax": 1024, + "tmpdirMin": 1024, + "tmpdirMax": 1024, + "outdirMin": 1024, + "outdirMax": 1024 + } + for a in ("cores", "ram", "tmpdir", "outdir"): + mn = None + mx = None + if resourceReq.get(a+"Min"): + mn = builder.do_eval(resourceReq[a+"Min"]) + if resourceReq.get(a+"Max"): + mx = builder.do_eval(resourceReq[a+"Max"]) + if mn is None: + mn = mx + elif mx is None: + mx = mn + + if mn: + request[a+"Min"] = mn + request[a+"Max"] = mx + + if kwargs.get("select_resources"): + return kwargs["select_resources"](request) + else: + return { + "cores": request["coresMin"], + "ram": request["ramMin"], + "tmpdir": request["tmpdirMin"], + "outdir": request["outdirMin"], + } def validate_hints(self, hints, strict): for r in hints: diff --git a/cwltool/schemas/draft-3/cwl-avro.yml b/cwltool/schemas/draft-3/cwl-avro.yml index d5af7d5dd..b62633837 100644 --- a/cwltool/schemas/draft-3/cwl-avro.yml +++ b/cwltool/schemas/draft-3/cwl-avro.yml @@ -363,6 +363,11 @@ the designated temporary directory that will be used when executing the tool. Null if not applicable. + - **resources**: When used in the context of a CommandLineTool, an object + describing the resources allocated to run the tool. These fields are "cores", + "ram", "tmpdir", "outdir". See ResourceRequirement for details. + + * On standard output, print a single JSON value (string, number, array, object, boolean, or null) for the return value. @@ -2044,3 +2049,62 @@ 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. + + +- type: record + name: ResourceRequirement + extends: "#ProcessRequirement" + doc: | + Specify basic hardware resource requirements. + + "min" is the minimum amount of a resource that must be reserved to schedule + a job. If "min" cannot be satisfied, the job should not be run. + + "max" is the maximum amount of a resource that the job shall be permitted + to use. If a node has sufficient resources, multiple jobs may be scheduled + on a single node provided each job's "max" resource requirements are + met. If a job attempts to exceed its "max" resource allocation, an + implementation may deny additional resources, which may result in job + failure. + + If "min" is specified but "max" is not, then "max" == "min" + If "max" is specified by "min" is not, then "min" == "max". + + It is an error if max < min. + + It is an error if the value of any of these fields is negative. + + If neither "min" nor "max" is specified for a resource, an implementation may provide a default. + + fields: + - name: coresMin + type: ["null", long, string, "#Expression"] + doc: Minimum reserved number of CPU cores + + - name: coresMax + type: ["null", int, string, "#Expression"] + doc: Maximum reserved number of CPU cores + + - name: ramMin + type: ["null", long, string, "#Expression"] + doc: Minimum reserved RAM in mebibytes (2**20) + + - name: ramMax + type: ["null", long, string, "#Expression"] + doc: Maximum reserved RAM in mebibytes (2**20) + + - name: tmpdirMin + type: ["null", long, string, "#Expression"] + doc: Minimum reserved filesystem based storage for the designated temporary directory, in mebibytes (2**20) + + - name: tmpdirMax + type: ["null", long, string, "#Expression"] + doc: Maximum reserved filesystem based storage for the designated temporary directory, in mebibytes (2**20) + + - name: outdirMin + type: ["null", long, string, "#Expression"] + doc: Minimum reserved filesystem based storage for the designated output directory, in mebibytes (2**20) + + - name: outdirMax + type: ["null", long, string, "#Expression"] + doc: Maximum reserved filesystem based storage for the designated output directory, in mebibytes (2**20) 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 diff --git a/node-expr-engine/cwlNodeEngine.js b/node-expr-engine/cwlNodeEngine.js index 739960a47..336ff592b 100755 --- a/node-expr-engine/cwlNodeEngine.js +++ b/node-expr-engine/cwlNodeEngine.js @@ -34,6 +34,7 @@ process.stdin.on('end', function() { fn += "var $job = " + JSON.stringify(j.job) + ";\n"; fn += "var $self = " + JSON.stringify(j.context) + ";\n" + fn += "var $resources = " + JSON.stringify(j.resources) + ";\n" fn += "(function()" + exp + ")()";