[Scons-users] SConsignFile(None) + Decider('MD5-timestamp')

trevor fitzsimmons t_fitzs at hotmail.com
Wed Jul 29 11:52:48 EDT 2020

Since scons-3.0.2 (through the current scons-4.0.1), using SConsignFile(None) in conjunction with Decider('MD5-timestamp') causes scons to rebuild targets when invoked from different directories in the source code hierarchy.

Attached is a simple example to illustrate the issue.  Building from test/src will cause an initial build as expecting.  Building again from test/src will do nothing, as expected, and report everything is up-to-date.  However, if you build from test, everything in test/src will be rebuilt, even though it is already up-to-date.  Building again from test will do nothing, as expected, and report everything is up-to-date.  Building from test/src will then cause another full rebuild, even though everything is up-to-date, and the cycle continues.

This has something to do with the dependency_map which was added in Node/FS.py in scons-3.0.2, but I do not know enough about the inner workings of scons to propose a fix.  FS.py changed_timestamp_then_content(self, target, prev_ni, node=None) calls prev_ni = self._get_previous_signatures(dependency_map).  Depending on the starting directory, self is either main.cpp or src/main.cpp, while the key in dependency_map is the other.

In our full code-base, it's quite usual to build in a subdirectory while changing code, to avoid waiting on a full build, so the current work-around is to not use Decider('MD5-timestamp').  It would be ideal to have a patch that could eventually be applied to scons, to fix the issue in a future version.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20200729/c414c287/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.zip
Type: application/zip
Size: 1449 bytes
Desc: test.zip
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20200729/c414c287/attachment.zip>

More information about the Scons-users mailing list