diff options
author | Steven Knight <knight@baldmt.com> | 2002-04-04 09:07:00 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-04-04 09:07:00 (GMT) |
commit | 6603cc0d6643e529da45fef6f85fcc1a0fc02ea4 (patch) | |
tree | 4a27de7c3fd70e5af0f257ccc73aab38e343f156 /src/engine/SCons/Sig | |
parent | a7669bc6a02999a3375c7e732a27ded5f9bb9935 (diff) | |
download | SCons-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.py | 16 | ||||
-rw-r--r-- | src/engine/SCons/Sig/__init__.py | 32 |
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. |