From 55e1f35cd030d0cfb5421fd7f5ba5652f14d869a Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 14 Nov 2006 21:12:05 +0000 Subject: [PATCH] cache.py: Share the parser's mtime_cache, reducing the number of stat syscalls --- lib/bb/cache.py | 5 +---- lib/bb/parse/__init__.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/bb/cache.py b/lib/bb/cache.py index f84e9e4..05c4251 100644 --- a/lib/bb/cache.py +++ b/lib/bb/cache.py @@ -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): """ diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py index 58e17d1..70fdba0 100644 --- a/lib/bb/parse/__init__.py +++ b/lib/bb/parse/__init__.py @@ -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('./'): -- 2.7.4