diff options
-rw-r--r-- | lib/bb/cooker.py | 3 | ||||
-rw-r--r-- | lib/bb/siggen.py | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index 911805a6e..d2d308ae2 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -1944,7 +1944,8 @@ class Parser(multiprocessing.Process): except IndexError: break result = self.parse(*job) - + # Clear the siggen cache after parsing to control memory usage, its huge + bb.parse.siggen.postparsing_clean_cache() try: self.results.put(result, timeout=0.25) except queue.Full: diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py index ffd8fcaf3..c2d0c736c 100644 --- a/lib/bb/siggen.py +++ b/lib/bb/siggen.py @@ -51,6 +51,9 @@ class SignatureGenerator(object): def finalise(self, fn, d, varient): return + def postparsing_clean_cache(self): + return + def get_unihash(self, tid): return self.taskhash[tid] @@ -188,6 +191,14 @@ class SignatureGeneratorBasic(SignatureGenerator): for task in taskdeps: d.setVar("BB_BASEHASH_task-%s" % task, self.basehash[fn + ":" + task]) + def postparsing_clean_cache(self): + # + # After parsing we can remove some things from memory to reduce our memory footprint + # + self.gendeps = {} + self.lookupcache = {} + self.taskdeps = {} + def rundep_check(self, fn, recipename, task, dep, depname, dataCache): # Return True if we should keep the dependency, False to drop it # We only manipulate the dependencies for packages not in the whitelist |