Updating files in the build directory
Something seems to have changed between waf 1.8 and waf 2.0.20 regarding Nodes. The relevant code that works in 1.8: ` self.config_file = self.to_nodes(getattr(self, "config_files", [])) if not self.config_file: raise ValueError("A target must have at least one configuration")
# Construct an output path for the cobra files in <build directory>/cobra/<index>-<target>
path = self.path.make_node(["config_file", "%s-%s" % (self.idx, self.name)])
<unrelated stuff>
self.settings = path.find_or_declare("settings.xml")
sig = get_settings_sig(self) # determine sig manually
<more unrelated stuff>
# Store the signature of the input files to the signature of the output xml node.
# This saves us from having to use raw_deps.
self.settings.sig = sig
`
In our version of waf 1.8 (based on whatever the last version of 1.8 is) this appears to save the "sig" value to the settings.xml file in the build directory. In waf 2.0.20, this value does not get saved.
As far as I can tell we never explicitly tell self.settings to save or write, so whatever saves off the data does it somewhere inside waf itself.
Later on we use this sig value to determine whether or not we need to run an expensive process. Because the sig value never gets saved to the settings.xml file we always re-run this expensive process step.
Any thoughts on why this functionality might have changed or what I can do about it?