Re: SConsignFile(None) + Decider('MD5-timestamp')
Bill Deegan <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAEyG4CEGv1qyNXcufy2H83hZ=ywbgcNED4FSS8ULSetLfbJCOQ@mail.gmail.com> |
If you don't use SConsignFile(None), then is this still an issue? Any reason you want a per directory sconsignfile? On Wed, Aug 12, 2020 at 6:47 AM trevor fitzsimmons <[email protected]> wrote: > I've dug more into this issue, and have attached a proposed patch against > scons-4.0.1. > > The general idea is to pass the parent node to _build_dependency_map, to > then correlate "children" to signatures the same way Node/__init__.py > changed() does, rather than using bsources/etc. This fixes the pathing > issues, and should perform the same when building from the same directory > repeatedly. > > Can anyone verify the bug, or provide feedback on the proposed patch? > > Should I open a bug report instead? > > Thanks, > Trevor > > ------------------------------ > *From:* Scons-users <[email protected]> on behalf of trevor > fitzsimmons <[email protected]> > *Sent:* Wednesday, July 29, 2020 11:52 AM > *To:* [email protected] <[email protected]> > *Subject:* [Scons-users] SConsignFile(None) + Decider('MD5-timestamp') > > 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. > > Thanks > _______________________________________________ > Scons-users mailing list > [email protected] > https://pairlist4.pair.net/mailman/listinfo/scons-users > _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users