Merge branch '10001-cwl-scatter' closes #10001
[arvados.git] / sdk / cwl / arvados_cwl / arvjob.py
index 15cafad7bd408794448f1148afec98285c20117d..a688469634bf31a20b6cf8cff5ede456277a21c4 100644 (file)
@@ -7,12 +7,12 @@ from cwltool.errors import WorkflowException
 from cwltool.draft2tool import revmap_file, CommandLineTool
 from cwltool.load_tool import fetch_document
 from cwltool.builder import Builder
-from cwltool.pathmapper import PathMapper
 
 import arvados.collection
 
 from .arvdocker import arv_docker_get_image
 from .runner import Runner
+from .pathmapper import InitialWorkDirPathMapper
 from . import done
 
 logger = logging.getLogger('arvados.cwl-runner')
@@ -38,8 +38,8 @@ class ArvadosJob(object):
         if self.generatefiles["listing"]:
             vwd = arvados.collection.Collection()
             script_parameters["task.vwd"] = {}
-            generatemapper = PathMapper([self.generatefiles], self.outdir,
-                                        ".", separateDirs=False)
+            generatemapper = InitialWorkDirPathMapper([self.generatefiles], "", "",
+                                        separateDirs=False)
             for f, p in generatemapper.items():
                 if p.type == "CreateFile":
                     with vwd.open(p.target, "w") as n:
@@ -47,11 +47,11 @@ class ArvadosJob(object):
             vwd.save_new()
             for f, p in generatemapper.items():
                 if p.type == "File":
-                    script_parameters["task.vwd"][p.target] = self.pathmapper.mapper(f).target
+                    script_parameters["task.vwd"][p.target] = p.resolved
                 if p.type == "CreateFile":
                     script_parameters["task.vwd"][p.target] = "$(task.keep)/%s/%s" % (vwd.portable_data_hash(), p.target)
 
-        script_parameters["task.env"] = {"TMPDIR": "$(task.tmpdir)"}
+        script_parameters["task.env"] = {"TMPDIR": self.tmpdir, "HOME": self.outdir}
         if self.environment:
             script_parameters["task.env"].update(self.environment)
 
@@ -227,7 +227,7 @@ class RunnerJob(Runner):
         logger.info("Submitted job %s", response["uuid"])
 
         if kwargs.get("submit"):
-            self.pipeline = self.arvrunner.api.pipeline_instances().create(
+            self.arvrunner.pipeline = self.arvrunner.api.pipeline_instances().create(
                 body={
                     "owner_uuid": self.arvrunner.project_uuid,
                     "name": shortname(self.tool.tool["id"]),