There seems to be some inconsistency with whether or not a node is considered 
to be up to date. For instance, if I have a chain of dependencies

A is built from B is build from C is built from D,

If I delete C, then B considers that C is not up to date, which is all well and 
good. However, if I *change* D, then at some point before C is built B 
considers that C is up_to_date.

This is all well and good, but the scanner code for built objects goes and 
checks if a node is up to date, and if it isn't, then it returns an empty list 
of dependencies. This has some very strange results. 

In particular, if B is a C++ source code file, and I alter D, then the build 
proceeds as normal, but the scanner processes B twice. (Presumably succesfully, 
but it's difficult to tell, as the #includes don't change). 

But if I delete C, then the scanner processes B once and decides that there are 
no includes. A is then built but has an empty set of dependencies so the next 
time you do a build, A gets built again because this time, the scanner 
processes B properly.

So there's two things I am confused about:
1) Why does an alteration to D not make the system think B is no longer up to 
date
2) Why is the scanner not getting called again before building A? And/or does 
the check for the source file being up-to-date actually achieve anything, given 
it appears to get called twice
_______________________________________________
Scons-dev mailing list
[email protected]
http://two.pairlist.net/mailman/listinfo/scons-dev

Reply via email to