Skip to content

Commit 1f4aba3

Browse files
Peter Amstutzmr-c
authored andcommitted
Also consider requirements in job cache.
1 parent 55f6d20 commit 1f4aba3

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

cwltool/draft2tool.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,33 @@ def job(self, joborder, input_basedir, output_callback, **kwargs):
129129
cachebuilder = self._init_job(joborder, input_basedir, **cacheargs)
130130
cachebuilder.pathmapper = PathMapper(set((f["path"] for f in cachebuilder.files)),
131131
input_basedir)
132+
132133
cmdline = flatten(map(cachebuilder.generate_arg, cachebuilder.bindings))
133134
(docker_req, docker_is_req) = self.get_requirement("DockerRequirement")
134135
if docker_req and kwargs.get("use_container") is not False:
135136
dockerimg = docker_req.get("dockerImageId") or docker_req.get("dockerPull")
136137
cmdline = ["docker", "run", dockerimg] + cmdline
138+
137139
keydict = {"cmdline": cmdline}
140+
138141
for _,f in cachebuilder.pathmapper.items():
139142
st = os.stat(f[0])
140143
keydict[f[0]] = [st.st_size, int(st.st_mtime * 1000)]
144+
145+
interesting = {"DockerRequirement",
146+
"EnvVarRequirement",
147+
"CreateFileRequirement",
148+
"ShellCommandRequirement"}
149+
for rh in (self.requirements, self.hints):
150+
for r in reversed(rh):
151+
if r["class"] in interesting and r["class"] not in keydict:
152+
keydict[r["class"]] = r
153+
141154
keydictstr = json.dumps(keydict, separators=(',',':'), sort_keys=True)
142155
cachekey = hashlib.md5(keydictstr).hexdigest()
156+
143157
_logger.debug("[job %s] keydictstr is %s -> %s", jobname, keydictstr, cachekey)
158+
144159
jobcache = os.path.join(kwargs["cachedir"], cachekey)
145160
jobcachepending = jobcache + ".pending"
146161
if os.path.isdir(jobcache) and not os.path.isfile(jobcachepending):

cwltool/process.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
_logger = logging.getLogger("cwltool")
3232

3333
supportedProcessRequirements = ["DockerRequirement",
34-
"ExpressionEngineRequirement",
3534
"SchemaDefRequirement",
3635
"EnvVarRequirement",
3736
"CreateFileRequirement",

0 commit comments

Comments
 (0)