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 77d18a5d0..cfac91bae 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -1934,7 +1934,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 3e2a85fc8..9c299d45e 100644 --- a/lib/bb/siggen.py +++ b/lib/bb/siggen.py @@ -48,6 +48,9 @@ class SignatureGenerator(object): def get_unihash(self, task): return self.taskhash[task] + def postparsing_clean_cache(self): + return + def get_taskhash(self, fn, task, deps, dataCache): return "0" @@ -152,6 +155,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 |