def makePathMapper(self, reffiles, stagedir, **kwargs):
# type: (List[Any], unicode, **Any) -> PathMapper
if self.work_api == "containers":
- return ArvPathMapper(self.arvrunner, reffiles, kwargs["basedir"],
+ return ArvPathMapper(self.arvrunner, reffiles+kwargs.get("extra_reffiles", []), kwargs["basedir"],
"/keep/%s",
"/keep/%s/%s",
**kwargs)
joborder_keepmount = copy.deepcopy(joborder)
reffiles = []
- visit_class(joborder_keepmount, ("File", "Directory"), lambda x: reffiles.append(x))
+ visit_class(joborder_keepmount, ("File", "Directory"), reffiles.append)
+ reffiles2 = []
+ visit_class(packed, ("File", "Directory"), reffiles2.append)
- mapper = ArvPathMapper(self.arvrunner, reffiles, kwargs["basedir"],
+ mapper = ArvPathMapper(self.arvrunner, reffiles+reffiles2, kwargs["basedir"],
"/keep/%s",
"/keep/%s/%s",
**kwargs)
+ kwargs["extra_reffiles"] = copy.deepcopy(reffiles2)
+
def keepmount(obj):
remove_redundant_fields(obj)
with SourceLine(obj, None, WorkflowException, logger.isEnabledFor(logging.DEBUG)):
packed = pack(tool.doc_loader, tool.doc_loader.fetch(tool.tool["id"]),
tool.tool["id"], tool.metadata, rewrite_out=rewrites)
- rewrite_to_orig = {}
- for k,v in rewrites.items():
- rewrite_to_orig[v] = k
+ rewrite_to_orig = {v: k for k,v in rewrites.items()}
def visit(v, cur_id):
if isinstance(v, dict):
if v.get("class") in ("CommandLineTool", "Workflow"):
+ if "id" not in v:
+ raise SourceLine(v, None, Exception).makeError("Embedded process object is missing required 'id' field")
cur_id = rewrite_to_orig.get(v["id"], v["id"])
if "location" in v and not v["location"].startswith("keep:"):
v["location"] = merged_map[cur_id].resolved[v["location"]]
# Note that arvados/build/run-build-packages.sh looks at this
# file to determine what version of cwltool and schema-salad to build.
install_requires=[
- 'cwltool==1.0.20180502225535',
+ 'cwltool==1.0.20180504184252',
'schema-salad==2.7.20180501211602',
'typing==3.5.3.0',
'ruamel.yaml >=0.13.7, <0.15',
output:
out: null
tool: wf-defaults/wf3.cwl
- doc: "Do not accept a directory literal without a basename
+ doc: "Do not accept a directory literal without a basename"
should_fail: true
- job: null