summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Sig
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-04-04 09:07:00 (GMT)
committerSteven Knight <knight@baldmt.com>2002-04-04 09:07:00 (GMT)
commit6603cc0d6643e529da45fef6f85fcc1a0fc02ea4 (patch)
tree4a27de7c3fd70e5af0f257ccc73aab38e343f156 /src/engine/SCons/Sig
parenta7669bc6a02999a3375c7e732a27ded5f9bb9935 (diff)
downloadSCons-6603cc0d6643e529da45fef6f85fcc1a0fc02ea4.zip
SCons-6603cc0d6643e529da45fef6f85fcc1a0fc02ea4.tar.gz
SCons-6603cc0d6643e529da45fef6f85fcc1a0fc02ea4.tar.bz2
Fix --debug=tree for directory targets (Anthony Roach)
Diffstat (limited to 'src/engine/SCons/Sig')
-rw-r--r--src/engine/SCons/Sig/SigTests.py16
-rw-r--r--src/engine/SCons/Sig/__init__.py32
2 files changed, 13 insertions, 35 deletions
diff --git a/src/engine/SCons/Sig/SigTests.py b/src/engine/SCons/Sig/SigTests.py
index 71d48ce..90488e1 100644
--- a/src/engine/SCons/Sig/SigTests.py
+++ b/src/engine/SCons/Sig/SigTests.py
@@ -50,7 +50,7 @@ class DummyNode:
self.file = file
self.path = file.path
self.builder = file.builder
- self.depends = []
+ self.depends = []
self.ignore = []
self.use_signature = 1
self.bsig = None
@@ -81,11 +81,11 @@ class DummyNode:
self.exists_cache = self.exists()
return self.exists_cache
- def children(self, scanner):
+ def children(self):
return filter(lambda x, i=self.ignore: x not in i,
self.sources + self.depends)
- def all_children(self, scanner):
+ def all_children(self):
return self.sources + self.depends
def current(self):
@@ -139,12 +139,12 @@ def create_nodes(files):
nodes[0].sources = []
nodes[1].sources = [nodes[0]]
- nodes[2].sources = [nodes[3]]
+ nodes[2].sources = []
nodes[3].sources = []
- nodes[4].sources = [nodes[5]]
+ nodes[4].sources = []
nodes[5].sources = [nodes[6]]
nodes[6].sources = [nodes[5]]
- nodes[7].sources = [nodes[2], nodes[4]]
+ nodes[7].sources = [nodes[2], nodes[4], nodes[3], nodes[5]]
nodes[8].sources = []
nodes[9].sources = [nodes[8]]
nodes[10].sources = [nodes[9]]
@@ -296,9 +296,9 @@ class CalcTestCase(unittest.TestCase):
self.ignore = []
self.builder = None
self.use_signature = 1
- def children(self, scanner):
+ def children(self):
return filter(lambda x, i=self.ignore: x not in i, self.kids)
- def all_children(self, scanner):
+ def all_children(self):
return self.kids
def exists(self):
return 1
diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py
index 3770adf..cb03630 100644
--- a/src/engine/SCons/Sig/__init__.py
+++ b/src/engine/SCons/Sig/__init__.py
@@ -192,36 +192,14 @@ class Calculator:
if not bsig is None:
return bsig
- # Collect the signatures for ALL the nodes that this
- # node depends on. Just collecting the direct
- # dependants is not good enough, because
- # the signature of a non-derived file does
- # not include the signatures of its psuedo-sources
- # (e.g. the signature for a .c file does not include
- # the signatures of the .h files that it includes).
-
- # However, we do NOT want to walk dependencies of non-
- # derived files, because calling get_signature() on the
- # derived nodes will in turn call bsig() again and do that
- # for us. Hence:
sigs = []
- def non_derived(n, parent, myself=node):
- if not n.builder or n is myself:
- return filter(lambda x, i=myself.ignore: x not in i,
- n.all_children(None))
- return []
- def get_sig(n, parent, self=self, myself=node, sigs=sigs):
- if not n is myself:
- sigs.append(self.get_signature(n))
- walker = SCons.Node.Walker(node, non_derived, eval_func=get_sig)
- child = walker.next()
- while child:
- child = walker.next()
-
+ for child in node.children():
+ sigs.append(self.get_signature(child))
if node.builder:
sigs.append(self.module.signature(node.builder_sig_adapter()))
- return self.module.collect(filter(lambda x: not x is None, sigs))
+ return self.module.collect(filter(lambda x: not x is None, sigs))
+
def csig(self, node):
"""
Generate a node's content signature, the digested signature
@@ -239,7 +217,7 @@ class Calculator:
return csig
return self.module.signature(node)
-
+
def get_signature(self, node):
"""
Get the appropriate signature for a node.