X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/bb91f86ea02e3535e3953ee0916dd6877bf585f7..a8d73de4f59cf567a96f2f04be01a249d4f7c20b:/sdk/cwl/arvados_cwl/arvtool.py?ds=inline diff --git a/sdk/cwl/arvados_cwl/arvtool.py b/sdk/cwl/arvados_cwl/arvtool.py index b667dac1ca..8268300e75 100644 --- a/sdk/cwl/arvados_cwl/arvtool.py +++ b/sdk/cwl/arvados_cwl/arvtool.py @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from cwltool.draft2tool import CommandLineTool +from cwltool.command_line_tool import CommandLineTool from .arvjob import ArvadosJob from .arvcontainer import ArvadosContainer from .pathmapper import ArvPathMapper @@ -24,7 +24,7 @@ class ArvadosCommandTool(CommandLineTool): 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) @@ -35,9 +35,21 @@ class ArvadosCommandTool(CommandLineTool): **kwargs) def job(self, joborder, output_callback, **kwargs): + + # Workaround for #13365 + builderargs = kwargs.copy() + builderargs["toplevel"] = True + builder = self._init_job(joborder, **builderargs) + joborder = builder.job + if self.work_api == "containers": - kwargs["outdir"] = "/var/spool/cwl" - kwargs["docker_outdir"] = "/var/spool/cwl" + dockerReq, is_req = self.get_requirement("DockerRequirement") + if dockerReq and dockerReq.get("dockerOutputDirectory"): + kwargs["outdir"] = dockerReq.get("dockerOutputDirectory") + kwargs["docker_outdir"] = dockerReq.get("dockerOutputDirectory") + else: + kwargs["outdir"] = "/var/spool/cwl" + kwargs["docker_outdir"] = "/var/spool/cwl" elif self.work_api == "jobs": kwargs["outdir"] = "$(task.outdir)" kwargs["docker_outdir"] = "$(task.outdir)"