cache.py: Share the parser's mtime_cache, reducing the number of stat syscalls
authorRichard Purdie <rpurdie@linux.intel.com>
Tue, 14 Nov 2006 21:12:05 +0000 (21:12 +0000)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 14 Nov 2006 21:12:05 +0000 (21:12 +0000)
lib/bb/cache.py
lib/bb/parse/__init__.py

index f84e9e4..05c4251 100644 (file)
@@ -245,10 +245,7 @@ class Cache:
         p.dump([self.depends_cache, version_data])
 
     def mtime(self, cachefile):
-        try:
-            return os.stat(cachefile)[8]
-        except OSError:
-            return 0
+        return bb.parse.cached_mtime_noerror(cachefile)
 
     def handle_data(self, file_name, cacheData):
         """
index 58e17d1..70fdba0 100644 (file)
@@ -37,11 +37,16 @@ class SkipPackage(Exception):
 __mtime_cache = {}
 def cached_mtime(f):
     if not __mtime_cache.has_key(f):
-        update_mtime(f)
+        __mtime_cache[f] = os.stat(f)[8]
     return __mtime_cache[f]
 
-def update_mtime(f):
-    __mtime_cache[f] = os.stat(f)[8]
+def cached_mtime_noerror(f):
+    if not __mtime_cache.has_key(f):
+        try:
+            __mtime_cache[f] = os.stat(f)[8]
+        except OSError:
+            return 0
+    return __mtime_cache[f]
 
 def mark_dependency(d, f):
     if f.startswith('./'):