? pats.new
? src/engine/SCons/Node/FS.py-debug
? src/engine/SCons/Node/__init__.py-debug
Index: src/engine/SCons/Node/FS.py
===================================================================
RCS file: /cvsroot/scons/scons/src/engine/SCons/Node/FS.py,v
retrieving revision 1.204
diff -p -u -r1.204 FS.py
--- src/engine/SCons/Node/FS.py	5 Mar 2005 15:28:04 -0000	1.204
+++ src/engine/SCons/Node/FS.py	7 Mar 2005 09:39:57 -0000
@@ -1876,6 +1876,8 @@ class File(Base):
 
 default_fs = FS()
 
+find_file_cache = {}
+
 def find_file(filename, paths, verbose=None):
     """
     find_file(str, [Dir()]) -> [nodes]
@@ -1893,6 +1895,7 @@ def find_file(filename, paths, verbose=N
     Only the first file found is returned, and none is returned
     if no file is found.
     """
+    global find_file_cache
     if verbose:
         if not SCons.Util.is_String(verbose):
             verbose = "find_file"
@@ -1919,12 +1922,15 @@ def find_file(filename, paths, verbose=N
                 return None
         paths = filter(None, map(filedir_lookup, paths))
 
-    for dir in paths:
-        verbose("looking for '%s' in '%s' ...\n" % (filename, dir))
-        node, d = dir.srcdir_find_file(filename)
-        if node:
-            verbose("... FOUND '%s' in '%s'\n" % (filename, d))
-            return node
+    try:
+        retval = find_file_cache[(paths,filename)]
+    except KeyError:
+        for dir in paths:
+            verbose("looking for '%s' in '%s' ...\n" % (filename, dir))
+            node, d = dir.srcdir_find_file(filename)
+            if node:
+                verbose("... FOUND '%s' in '%s'\n" % (filename, d))
+                return node
     return None
 
 def find_files(filenames, paths):

