[Scons-users] timing issues and protecting from them

Tom Tanner (BLOOMBERG/ LONDON) ttanner2 at bloomberg.net
Wed Dec 9 03:11:24 EST 2015

No. I'm implying it should happen at the time it does the build. Not during subsequent runs.

The situation we got into is:

  timestamp in scons.dblite matches current timestamp of file
  md5 in scons.dblite doesn't match current md5 of file

We have a somewhat paranoid decider function which checks for mismatchming md5s but that doesn't trigger if the timestamp hasn't changed (as otherwise it would be very slow).

So the check I'm thinking of is something like in the .built function

   if database timestamp of source dependency != actual timestamp of source dependency:
       raise builderror (str(source) + ' changed during build')

that shouldn't be an expensive check, and ensures what you have is self consistent.

From: scons-users at scons.org At: Dec  9 2015 00:00:43
To: scons-users at scons.org
Subject: Re: [Scons-users] timing issues and protecting from them

Are you implying this check should happen in subsequent runs?

Would you imagine it would look like https://bitbucket.org/scons/scons/pull-requests/240/added-support-for-detecting-corruption/diff ?

I haven't finished the patch, but you can at least see if it appears to do what you are asking.

On Tue, Dec 8, 2015 at 8:50 PM, Tom Tanner <trtanner at btinternet.com> wrote:

I've had an issue recently where someone updated a file while it was being used for a build (please, don't ask).

This results in an interesting sort of race hazard where the generated file information in the database says it's made from one version of a file, but it's actually made from another. If this happens it tends to result in errors, especially if that generated file ends up in your cache.

So it seemed to me that once you'd built a target it'd be a good idea to at least check all the prerequisites of the target hadn't changed their timestamp (as that would presumably be rather quicker than checking the md5 and just as effective) and generate an error.

But I'm not sure where the best place to  do that check would be or how to list all the prerequisites of a node. Has anyone come across this or know where I might want to start looking.

Scons-users mailing list
Scons-users at scons.org

Scons-users mailing list
Scons-users at scons.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151209/49ca1a00/attachment.html>

More information about the Scons-users mailing list