[Scons-users] scons checking targets actually built?

Gary Oberbrunner garyo at oberbrunner.com
Fri Apr 19 07:47:00 EDT 2013


If it were an option, off by default, why not? Patches accepted gratefully

:-) But that said, you might get more false positives than you think.

On Apr 19, 2013 7:06 AM, "Tom Tanner (BLOOMBERG/ LONDON)" <
ttanner2 at bloomberg.net> wrote:


> I must say I'd really like to see scons do this check (that the targets

> actually exist at the end of the build rule).

>

> It would be a great help in tracking down broken build rules (and I've had

> more than a few in my time). It's more difficult to get this wrong in scons

> than in make, but it's still possible and it is a nightmare to track down.

>

> And it presumably wouldn't be an expensive check to see if the file at

> least exists.

>

> ----- Original Message -----

> From: scons-users at scons.org

> To: scons-users at scons.org

> At: Apr 19 2013 02:00:59

>

>

> Ah... makes sense, I suppose. I just figured that with scons computing md5

> hashes of sources to determine target freshness, it would have noticed that

> the source was missing when attempting to build the dependent target, but I

> suppose that's not going to be the case on the initial build because the

> target has never been built, so there's no "freshness" to compute.

>

>

> On Thu, Apr 18, 2013 at 7:49 PM, Gary Oberbrunner <garyo at oberbrunner.com>

> wrote:

>

>

> Hi Robert; some people make fake targets in SCons (like Make) so if SCons

> complained about those people's builds would probably break. I think it's

> expected behavior at least in that case.

> On Apr 18, 2013 7:13 PM, "robert zeigler" <robert.zeigler at gmail.com>

> wrote:

>

> Hi,

>

> Fairly new to scons. I have been playing with it the last few days and

> like what I see. However, I stumbled on behavior today that has me troubled.

>

> Consider a very simple build script:

>

> Command(['a.txt'],[],"echo hi > $TARGET")

> Command(['b.txt'],['a.txt'],"cat $SOURCE > $TARGET && echo foo >> $TARGET")

>

> This runs fine:

>

> scons: Reading SConscript files ...

> scons: done reading SConscript files.

> scons: Building targets ...

> echo hi > a.txt

> cat a.txt > b.txt && echo foo >> b.txt

> scons: done building targets.

>

> Now consider an alternative command for building a:

>

> Command(['a.txt'],[],"echo hi > $TARGET && rm $TARGET")

>

> Then you get:

>

> scons: Reading SConscript files ...

> scons: done reading SConscript files.

> scons: Building targets ...

> echo hi > a.txt && rm a.txt

> cat a.txt > b.txt && echo humbug >> b.txt

> cat: a.txt: No such file or directory

> scons: *** [b.txt] Error 1

> scons: building terminated because of errors.

>

> The build fails, of course, but what troubles me is that it doesn't fail

> until we attempt to build b.txt. I would have expected scons to verify that

> the target was actually build by the command; failing that, I'm surprised

> that it attempted to build b.txt when a.txt was clearly not present for

> b.txt to be built?

>

> Clarification on this is greatly appreciated. Although the case above is

> trivial, I ran into this issue in a non-trivial case, as well.

>

> Robert

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

>

>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

>

>

>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20130419/50c08533/attachment-0001.htm>


More information about the Scons-users mailing list