[Scons-users] cache not working as expected for a recompile in another directory

William Blevins wblevins001 at gmail.com
Mon Nov 30 11:55:49 EST 2015


You figured out how to solve the problem.

I'm just glad I could help.

On Mon, Nov 30, 2015 at 1:59 PM, Abt, Johannes <johannes.abt at advantest.com>
wrote:

> Hi!
>
> On Thu, Nov 19, 2015 at 3:02 PM, William Blevins  <wblevins001 at gmail.com>
> wrote:
> > I thought about this some more, and I don't think I have enough
> information about your configuration.
> > Question: Is the original case?
> > A/SConstruct
> > A/<copy of all other code>
> > B/SConstruct
> > B/<copy of all other code>
>
> > OR
>
> > A/SConsctruct
> > A/B/<copy of code>
> > A/C/<copy of code>
>
> It's the first one.
>
> [..]
>
> > Regardless, a Node's signature also depends on it's dependencies, so
> just because a file has is binary equal it may not mean that all it's
> dependencies are...
>
> Though if the build signatures of the dependencies are identical?
>
> [..]
>
> Meanwhile, I have I retraced all the intermediate results in
> SCons.Node.Node.get_binfo. Some identical files showed different
> signatures! I guessed that the signature of of some of the dependencies
> (header files) were  _not_ recalculated every time. They signature of the
> dependency must have been calculated (and stored somewhere!) before the
> final changes to the header files. And not been recalculated since. I
> removed the .sconsign.dblite and -- voila -- everything is fine now!
>
> I believe that some tests of mine with "--implicit-cache" that I had
> forgotten about have led to this problem. Though when I wanted to reproduce
> the problem, I did not seed. Do I have to specifiy '--max-drift=1'
> additionaly?
>


   - --max-drift: By default SCons will calculate the MD5 checksum of every
   source file in your build each time it is run, and will only cache the
   checksum after the file is 2 days old. This default of 2 days is to protect
   from clock skew from NFS or revision control systems. You can tweak this
   delay using --max-drift=SECONDS where SECONDS is some number of seconds.
   Decreasing SECONDS can improve build speed by eliminating superfluous
   MD5 checksum calculations. Instead of specifying this on the command line
   each run, you can set this option inside your SConstruct or SConscript file
   using "SetOption
<https://bitbucket.org/scons/scons/wiki/SetOption>('max_drift',
   SECONDS)".


Max drift is for tuning performance vs correctness.  If you have clock skew
issues but believe the files haven't changed then setting a slightly higher
drift will keep SCons from declaring them modified. It really depends on
your case.


>
> > Have you tried scons --debug=explain to tell you why it's rebuilding a
> file?
>
> I'm sorry, I read your mail too late. I have already deleted the
> .sconsign.dblite. What a pity.
>
> Regards,
> Johannes
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151130/f3c914b8/attachment.html>


More information about the Scons-users mailing list