diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index b041d2a06b..f12f4caa05 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -2036,6 +2036,7 @@ class Parser(multiprocessing.Process): | |||
2036 | result = pending.pop() | 2036 | result = pending.pop() |
2037 | else: | 2037 | else: |
2038 | try: | 2038 | try: |
2039 | time.sleep(0.25) | ||
2039 | job = self.jobs.pop() | 2040 | job = self.jobs.pop() |
2040 | except IndexError: | 2041 | except IndexError: |
2041 | self.results.close() | 2042 | self.results.close() |
@@ -2214,7 +2215,7 @@ class CookerParser(object): | |||
2214 | yield not cached, mc, infos | 2215 | yield not cached, mc, infos |
2215 | 2216 | ||
2216 | def parse_generator(self): | 2217 | def parse_generator(self): |
2217 | while True: | 2218 | while self.processes: |
2218 | if self.parsed >= self.toparse: | 2219 | if self.parsed >= self.toparse: |
2219 | break | 2220 | break |
2220 | 2221 | ||
@@ -2228,6 +2229,14 @@ class CookerParser(object): | |||
2228 | raise value | 2229 | raise value |
2229 | else: | 2230 | else: |
2230 | yield result | 2231 | yield result |
2232 | for process in self.processes.copy(): | ||
2233 | if not process.is_alive(): | ||
2234 | process.join() | ||
2235 | self.processes.remove(process) | ||
2236 | |||
2237 | if not (self.parsed >= self.toparse): | ||
2238 | raise bb.parse.ParseError("Not all recipes parsed, parser thread killed/died? Exiting.", None) | ||
2239 | |||
2231 | 2240 | ||
2232 | def parse_next(self): | 2241 | def parse_next(self): |
2233 | result = [] | 2242 | result = [] |