summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/bb/cooker.py3
-rw-r--r--lib/bb/siggen.py11
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