6 Force tasks to use file timestamps to force partial rebuilds when touch-ing build files
9 ... rebuild what depends on libfoo.a
13 opt.tool_options('build_file_tracker')
20 try: return self.cache_sig[0]
21 except AttributeError: pass
26 exp_sig = self.sig_explicit_deps()
29 var_sig = self.sig_vars()
32 imp_sig = Task.SIG_NIL
35 imp_sig = self.sig_implicit_deps()
37 return self.signature()
39 # timestamp dependency on build files only (source files are hashed)
41 for k in self.inputs + getattr(self, 'dep_nodes', []) + self.generator.bld.node_deps.get(self.unique_id(), []):
43 t = os.stat(k.abspath(self.env)).st_mtime
45 self.m.update(str(buf))
47 # we now have the signature (first element) and the details (for debugging)
49 self.cache_sig = (ret, exp_sig, imp_sig, var_sig)
52 Task.Task.signature_bak = Task.Task.signature # unused, kept just in case
53 Task.Task.signature = signature # overridden