diff options
author | Ed Bartosh <ed.bartosh@linux.intel.com> | 2015-04-21 18:48:49 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-04-28 22:28:45 +0100 |
commit | f8590547a198a78334debdf14bf40acb50c22ecc (patch) | |
tree | 51d07a863766c59ce9aa6c0e80c62786e0e4b374 | |
parent | 5ecb8817bd49223652ede4fe513f1a42f2196798 (diff) | |
download | bitbake-f8590547a198a78334debdf14bf40acb50c22ecc.tar.gz |
bitbake: reset build mtime cache before the build
Introduced build mtime cache structure. Reset it before the build
to prevent bitbake from crashing when build/tmp/stamps hierarchy
is removed.
[YOCTO: #7562]
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/build.py | 17 | ||||
-rw-r--r-- | lib/bb/cooker.py | 3 |
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/bb/build.py b/lib/bb/build.py index 65cc851df..0f6aa1a14 100644 --- a/lib/bb/build.py +++ b/lib/bb/build.py @@ -31,6 +31,7 @@ import logging import shlex import glob import time +import stat import bb import bb.msg import bb.process @@ -42,6 +43,20 @@ logger = logging.getLogger('BitBake.Build') NULL = open(os.devnull, 'r+') +__mtime_cache = {} + +def cached_mtime_noerror(f): + if f not in __mtime_cache: + try: + __mtime_cache[f] = os.stat(f)[stat.ST_MTIME] + except OSError: + return 0 + return __mtime_cache[f] + +def reset_cache(): + global __mtime_cache + __mtime_cache = {} + # When we execute a Python function, we'd like certain things # in all namespaces, hence we add them to __builtins__. # If we do not do this and use the exec globals, they will @@ -535,7 +550,7 @@ def stamp_internal(taskname, d, file_name, baseonly=False): stamp = bb.parse.siggen.stampfile(stamp, file_name, taskname, extrainfo) stampdir = os.path.dirname(stamp) - if bb.parse.cached_mtime_noerror(stampdir) == 0: + if cached_mtime_noerror(stampdir) == 0: bb.utils.mkdirhier(stampdir) return stamp diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index 9c101f2e7..ddf5fedb8 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -35,7 +35,7 @@ from contextlib import closing from functools import wraps from collections import defaultdict import bb, bb.exceptions, bb.command -from bb import utils, data, parse, event, cache, providers, taskdata, runqueue +from bb import utils, data, parse, event, cache, providers, taskdata, runqueue, build import Queue import signal import prserv.serv @@ -1343,6 +1343,7 @@ class BBCooker: return True return retval + build.reset_cache() self.buildSetVars() taskdata, runlist, fulltargetlist = self.buildTaskData(targets, task, self.configuration.abort) |