diff options
author | Chris Larson <chris_larson@mentor.com> | 2010-11-23 11:46:49 -0600 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2011-01-04 14:46:44 +0000 |
commit | 7a7e2f4e59a076ce166da53af5d8bbec310b1665 (patch) | |
tree | 3afc07f4c048e22466acc622e8072562c9d047ef /bitbake/lib/bb | |
parent | f4a06aac980f73702a04d2c2f0728c09ebfb7786 (diff) | |
download | openembedded-core-7a7e2f4e59a076ce166da53af5d8bbec310b1665.tar.gz openembedded-core-7a7e2f4e59a076ce166da53af5d8bbec310b1665.tar.bz2 openembedded-core-7a7e2f4e59a076ce166da53af5d8bbec310b1665.tar.xz openembedded-core-7a7e2f4e59a076ce166da53af5d8bbec310b1665.zip |
cooker: ensure that the cache sync completes
Without explicitly joining the thread, it's possible for the process to end
(e.g. after a bitbake -p) and kill off the thread without waiting for it to
exit cleanly. So, register the thread join with atexit.
(Bitbake rev: 97ce57e6f860d3e6f34cc7a603ed1eeac4f423d3)
Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 69098ccf9..0ed70f9bd 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -28,6 +28,7 @@ import sre_constants import threading import multiprocessing import signal +import atexit from cStringIO import StringIO from contextlib import closing import bb @@ -1038,8 +1039,12 @@ class CookerParser(object): self.task_queue.close() for process in self.processes: process.join() - threading.Thread(target=self.bb_cache.sync).start() - threading.Thread(target=bb.codeparser.parser_cache_save(self.cooker.configuration.data)).start() + sync = threading.Thread(target=self.bb_cache.sync) + 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()) if self.error > 0: raise ParsingErrorsFound() |