]> code.ossystems Code Review - openembedded-core.git/commitdiff
cooker: pass back child exceptions to the server
authorChris Larson <chris_larson@mentor.com>
Mon, 29 Nov 2010 15:06:30 +0000 (08:06 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 4 Jan 2011 14:46:45 +0000 (14:46 +0000)
(Bitbake rev: 0f68f8bcd0e0aa944f76f88a4a85c9bcc1e42bee)

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/cooker.py

index 0ed70f9bd8b908ca5ae9cd442dbe3d77d1fa9678..f5a7b02921fa33458dca1da2b5c32a684d8a1433 100644 (file)
@@ -1017,8 +1017,12 @@ class CookerParser(object):
         def worker(input, output, cfgdata):
             signal.signal(signal.SIGINT, signal.SIG_IGN)
             for filename, appends in iter(input.get, 'STOP'):
-                infos = bb.cache.Cache.parse(filename, appends, cfgdata)
-                output.put(infos)
+                try:
+                    infos = bb.cache.Cache.parse(filename, appends, cfgdata)
+                except bb.parse.ParseError as exc:
+                    output.put(exc)
+                else:
+                    output.put(infos)
 
         self.processes = []
         for i in xrange(self.num_processes):
@@ -1070,10 +1074,12 @@ class CookerParser(object):
         try:
             if self.result_queue.empty() and self.fromcache:
                 filename, appends = self.fromcache.pop()
-                _, infos = self.bb_cache.load(filename, appends, self.cfgdata)
+                _, result = self.bb_cache.load(filename, appends, self.cfgdata)
                 parsed = False
             else:
-                infos = self.result_queue.get()
+                result = self.result_queue.get()
+                if isinstance(result, Exception):
+                    raise result
                 parsed = True
         except KeyboardInterrupt:
             self.shutdown(clean=False)
@@ -1086,9 +1092,9 @@ class CookerParser(object):
                 self.parsed += 1
             else:
                 self.cached += 1
-            self.virtuals += len(infos)
+            self.virtuals += len(result)
 
-            for virtualfn, info in infos:
+            for virtualfn, info in result:
                 if info.skipped:
                     self.skipped += 1
                 else: