Have SCons report when something is up-to-date.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 21 Sep 2001 21:04:14 +0000 (21:04 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 21 Sep 2001 21:04:14 +0000 (21:04 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@66 fdb21ef1-2011-0410-befe-b5e4ea1792b1

etc/TestSCons.py
src/script/scons.py
test/Program.py

index b6f2c68cbc5fb5490137039bf33718e1859b2edf..314198942401d0b26e5affaf117c68d6083761d4 100644 (file)
@@ -17,6 +17,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import os
 import os.path
+import string
 import TestCmd
 
 class TestFailed(Exception):
@@ -110,3 +111,11 @@ class TestSCons(TestCmd.TestCmd):
            print "Actual STDERR ============"
            print self.stderr()
            raise TestFailed
+
+    def up_to_date(self, arguments = None, **kw):
+           kw['arguments'] = arguments
+           s = ""
+           for arg in string.split(arguments):
+               s = s + 'scons: "%s" is up to date.\n' % arg
+           kw['stdout'] = s
+           apply(self.run, [], kw)
index a6a7f81a83398ac3c089136aedd4b44ca08f2dc1..3b1a53324084f8e017637869f6cf2bca2b5c5dbd 100644 (file)
@@ -547,9 +547,32 @@ def main():
     if not targets:
        targets = default_targets
 
+    # XXX Right now, this next block prints all "up to date" messages
+    # first, and then goes through and builds the other nodes:
+    #
+    #          $ scons aaa bbb ccc ddd
+    #          scons: "aaa" is up to date.
+    #          scons: "ccc" is up to date.
+    #          cc -o bbb bbb.c
+    #          cc -o ddd ddd.c
+    #
+    # When we get the real Task and Taskmaster classes, this should
+    # be changed to interact with the engine to deal with targets in
+    # the same order as specified:
+    #
+    #          $ scons aaa bbb ccc ddd
+    #          scons: "aaa" is up to date.
+    #          cc -o bbb bbb.c
+    #          scons: "ccc" is up to date.
+    #          cc -o ddd ddd.c
+    #
     calc = SCons.Sig.Calculator(SCons.Sig.MD5)
-    nodes = map(lambda x: SCons.Node.FS.default_fs.File(x), targets)
-    nodes = filter(lambda x, calc=calc: not calc.current(x), nodes)
+    nodes = []
+    for t in map(lambda x: SCons.Node.FS.default_fs.File(x), targets):
+       if calc.current(t):
+           print 'scons: "%s" is up to date.' % t.path
+       else:
+           nodes.append(t)
     
     taskmaster = Taskmaster(nodes)
 
index 4189c4668d76573ff5c55956820450a2b23a88fd..0d760dfd8ebf07eb8db6543ba4e13aeae8f97fd4 100644 (file)
@@ -95,6 +95,7 @@ test.run(program = test.workpath('foo2'), stdout = "f2a.c\nf2b.c\nf2c.c\n")
 #XXXtest.run(program = test.workpath('foo3'), stdout = "f3a.c\nf3b.c\nf3c.c\n")
 
 #XXXtest.up_to_date(arguments = '.')
+test.up_to_date(arguments = 'foo1 foo2')
 
 test.write('f1.c', """
 int
@@ -122,6 +123,7 @@ test.run(program = test.workpath('foo2'), stdout = "f2a.c\nf2b.c\nf2c.c\n")
 #XXXtest.run(program = test.workpath('foo3'), stdout = "f3a.c\nf3b.c X\nf3c.c\n")
 
 #XXXtest.up_to_date(arguments = '.')
+test.up_to_date(arguments = 'foo1 foo2')
 
 # make sure the programs don't get rebuilt, because nothing changed:
 oldtime1 = os.path.getmtime(test.workpath('foo1'))