From c8928e93dd8a08d6768623f6491c9ba31d0aa06f Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 10 Apr 2011 10:52:29 -0700 Subject: bitbake/cooker/codeparser: Ensure the code parser cache is saved for each parsing process Before this change, the codeparser cache was only being saved for the main server process. This is suboptimal as it leaves code being re-evaluated at task execution time and increases parse time. We use the multiprocess Finalize() functionality to ensure each process saves out its cache. We need to update the cache save function to be multiprocess friendly with locking. Signed-off-by: Richard Purdie --- bitbake/lib/bb/cooker.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'bitbake/lib/bb/cooker.py') diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 3c7b60eb95..98612656ab 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -1112,6 +1112,7 @@ class CookerParser(object): def start(self): def init(cfg): signal.signal(signal.SIGINT, signal.SIG_IGN) + multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, args=(self.cooker.configuration.data, ), exitpriority=1) parse_file.cfg = cfg bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata) @@ -1137,10 +1138,6 @@ class CookerParser(object): sync.start() atexit.register(lambda: sync.join()) - codesync = threading.Thread(target=bb.codeparser.parser_cache_save(self.cooker.configuration.data)) - codesync.start() - atexit.register(lambda: codesync.join()) - def load_cached(self): for filename, appends in self.fromcache: cached, infos = self.bb_cache.load(filename, appends, self.cfgdata) -- cgit v1.2.3-54-g00ecf