diff options
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
| -rw-r--r-- | bitbake/lib/bb/runqueue.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 51d68a5cf8..3d8ae1f48b 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
| @@ -984,8 +984,14 @@ class RunQueue: | |||
| 984 | self.state = runQueuePrepare | 984 | self.state = runQueuePrepare |
| 985 | 985 | ||
| 986 | # For disk space monitor | 986 | # For disk space monitor |
| 987 | # Invoked at regular time intervals via the bitbake heartbeat event | ||
| 988 | # while the build is running. We generate a unique name for the handler | ||
| 989 | # here, just in case that there ever is more than one RunQueue instance, | ||
| 990 | # start the handler when reaching runQueueSceneRun, and stop it when | ||
| 991 | # done with the build. | ||
| 987 | self.dm = monitordisk.diskMonitor(cfgData) | 992 | self.dm = monitordisk.diskMonitor(cfgData) |
| 988 | 993 | self.dm_event_handler_name = '_bb_diskmonitor_' + str(id(self)) | |
| 994 | self.dm_event_handler_registered = False | ||
| 989 | self.rqexe = None | 995 | self.rqexe = None |
| 990 | self.worker = {} | 996 | self.worker = {} |
| 991 | self.fakeworker = {} | 997 | self.fakeworker = {} |
| @@ -1208,10 +1214,12 @@ class RunQueue: | |||
| 1208 | self.rqdata.init_progress_reporter.next_stage() | 1214 | self.rqdata.init_progress_reporter.next_stage() |
| 1209 | self.rqexe = RunQueueExecuteScenequeue(self) | 1215 | self.rqexe = RunQueueExecuteScenequeue(self) |
| 1210 | 1216 | ||
| 1211 | if self.state in [runQueueSceneRun, runQueueRunning, runQueueCleanUp]: | ||
| 1212 | self.dm.check(self) | ||
| 1213 | |||
| 1214 | if self.state is runQueueSceneRun: | 1217 | if self.state is runQueueSceneRun: |
| 1218 | if not self.dm_event_handler_registered: | ||
| 1219 | res = bb.event.register(self.dm_event_handler_name, | ||
| 1220 | lambda x: self.dm.check(self) if self.state in [runQueueSceneRun, runQueueRunning, runQueueCleanUp] else False, | ||
| 1221 | ('bb.event.HeartbeatEvent',)) | ||
| 1222 | self.dm_event_handler_registered = True | ||
| 1215 | retval = self.rqexe.execute() | 1223 | retval = self.rqexe.execute() |
| 1216 | 1224 | ||
| 1217 | if self.state is runQueueRunInit: | 1225 | if self.state is runQueueRunInit: |
| @@ -1230,7 +1238,13 @@ class RunQueue: | |||
| 1230 | if self.state is runQueueCleanUp: | 1238 | if self.state is runQueueCleanUp: |
| 1231 | retval = self.rqexe.finish() | 1239 | retval = self.rqexe.finish() |
| 1232 | 1240 | ||
| 1233 | if (self.state is runQueueComplete or self.state is runQueueFailed) and self.rqexe: | 1241 | build_done = self.state is runQueueComplete or self.state is runQueueFailed |
| 1242 | |||
| 1243 | if build_done and self.dm_event_handler_registered: | ||
| 1244 | bb.event.remove(self.dm_event_handler_name, None) | ||
| 1245 | self.dm_event_handler_registered = False | ||
| 1246 | |||
| 1247 | if build_done and self.rqexe: | ||
| 1234 | self.teardown_workers() | 1248 | self.teardown_workers() |
| 1235 | if self.rqexe.stats.failed: | 1249 | if self.rqexe.stats.failed: |
| 1236 | logger.info("Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and %d failed.", self.rqexe.stats.completed + self.rqexe.stats.failed, self.rqexe.stats.skipped, self.rqexe.stats.failed) | 1250 | logger.info("Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and %d failed.", self.rqexe.stats.completed + self.rqexe.stats.failed, self.rqexe.stats.skipped, self.rqexe.stats.failed) |
