diff options
author | Steven Knight <knight@baldmt.com> | 2002-01-23 16:47:35 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-01-23 16:47:35 (GMT) |
commit | 627e41f923a7db85b0d30ae1c6980c9fab2c642f (patch) | |
tree | 74981e2bd22f7234dd35bbb0753c6247a455336c /src/engine/SCons/Scanner/C.py | |
parent | 964635ba4c25c748c2407d5d6cbd65efd0bab340 (diff) | |
download | SCons-627e41f923a7db85b0d30ae1c6980c9fab2c642f.zip SCons-627e41f923a7db85b0d30ae1c6980c9fab2c642f.tar.gz SCons-627e41f923a7db85b0d30ae1c6980c9fab2c642f.tar.bz2 |
Make the C Scanner always return the dependencies sorted, so order differences don't cause unnecessary rebuilds.
Diffstat (limited to 'src/engine/SCons/Scanner/C.py')
-rw-r--r-- | src/engine/SCons/Scanner/C.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py index 2c51223..58d065b 100644 --- a/src/engine/SCons/Scanner/C.py +++ b/src/engine/SCons/Scanner/C.py @@ -118,5 +118,18 @@ def scan(node, env, args = [SCons.Node.FS.default_fs, ()]): if not node is None: nodes.append(node) - return nodes + # Schwartzian transform from the Python FAQ Wizard + def st(List, Metric): + def pairing(element, M = Metric): + return (M(element), element) + def stripit(pair): + return pair[1] + paired = map(pairing, List) + paired.sort() + return map(stripit, paired) + + def normalize(node): + return os.path.normpath(str(node)) + + return st(nodes, normalize) |