diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-09-10 18:09:27 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-09-11 22:39:19 +0100 |
commit | 15c87c405f2893208cb94cba2713db9e5e8204a6 (patch) | |
tree | bbc9cc98bef1550e0a57f26aff4e9cfab4304d99 /bitbake/lib/bb | |
parent | e75e89b418ac07a96f76b64a1ae027d7732e7084 (diff) | |
download | poky-15c87c405f2893208cb94cba2713db9e5e8204a6.tar.gz |
bitbake: runqueue: Clean up task stats handling
When we parallelised normal and setscene tasks, the task stats
handling was left separate pending further thought. We had to remove
handling of the setscene tasks from the UI in order to maintain
consistent task numbering.
Currently, "0 of 0" tasks can be shown as setscene tasks execute
until the first normal task runs.
The only use left for sq_stats is in the active task numbers which
we can use the length of sq_ive for instead. We can therefore
drop it and return stats in all cases. This removes the "0 of 0" task
problem since the stats in all normal and setscene tasks matches.
[YOCTO #14479]
(Bitbake rev: eae6e947e37e18cded053814bd2a268b44fb25cd)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 22 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/uihelper.py | 2 |
2 files changed, 8 insertions, 16 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 5ccf755f1a..6ce0ce80f6 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1736,7 +1736,6 @@ class RunQueueExecute: | |||
1736 | self.sqdone = False | 1736 | self.sqdone = False |
1737 | 1737 | ||
1738 | self.stats = RunQueueStats(len(self.rqdata.runtaskentries)) | 1738 | self.stats = RunQueueStats(len(self.rqdata.runtaskentries)) |
1739 | self.sq_stats = RunQueueStats(len(self.rqdata.runq_setscene_tids)) | ||
1740 | 1739 | ||
1741 | for mc in rq.worker: | 1740 | for mc in rq.worker: |
1742 | rq.worker[mc].pipe.setrunqueueexec(self) | 1741 | rq.worker[mc].pipe.setrunqueueexec(self) |
@@ -1820,7 +1819,7 @@ class RunQueueExecute: | |||
1820 | def finish(self): | 1819 | def finish(self): |
1821 | self.rq.state = runQueueCleanUp | 1820 | self.rq.state = runQueueCleanUp |
1822 | 1821 | ||
1823 | active = self.stats.active + self.sq_stats.active | 1822 | active = self.stats.active + len(self.sq_live) |
1824 | if active > 0: | 1823 | if active > 0: |
1825 | bb.event.fire(runQueueExitWait(active), self.cfgData) | 1824 | bb.event.fire(runQueueExitWait(active), self.cfgData) |
1826 | self.rq.read_workers() | 1825 | self.rq.read_workers() |
@@ -1853,7 +1852,7 @@ class RunQueueExecute: | |||
1853 | return valid | 1852 | return valid |
1854 | 1853 | ||
1855 | def can_start_task(self): | 1854 | def can_start_task(self): |
1856 | active = self.stats.active + self.sq_stats.active | 1855 | active = self.stats.active + len(self.sq_live) |
1857 | can_start = active < self.number_tasks | 1856 | can_start = active < self.number_tasks |
1858 | return can_start | 1857 | return can_start |
1859 | 1858 | ||
@@ -1956,7 +1955,7 @@ class RunQueueExecute: | |||
1956 | err = False | 1955 | err = False |
1957 | if not self.sqdone: | 1956 | if not self.sqdone: |
1958 | logger.debug('We could skip tasks %s', "\n".join(sorted(self.scenequeue_covered))) | 1957 | logger.debug('We could skip tasks %s', "\n".join(sorted(self.scenequeue_covered))) |
1959 | completeevent = sceneQueueComplete(self.sq_stats, self.rq) | 1958 | completeevent = sceneQueueComplete(self.stats, self.rq) |
1960 | bb.event.fire(completeevent, self.cfgData) | 1959 | bb.event.fire(completeevent, self.cfgData) |
1961 | if self.sq_deferred: | 1960 | if self.sq_deferred: |
1962 | logger.error("Scenequeue had deferred entries: %s" % pprint.pformat(self.sq_deferred)) | 1961 | logger.error("Scenequeue had deferred entries: %s" % pprint.pformat(self.sq_deferred)) |
@@ -2067,7 +2066,7 @@ class RunQueueExecute: | |||
2067 | self.sq_task_failoutright(task) | 2066 | self.sq_task_failoutright(task) |
2068 | return True | 2067 | return True |
2069 | 2068 | ||
2070 | startevent = sceneQueueTaskStarted(task, self.sq_stats, self.rq) | 2069 | startevent = sceneQueueTaskStarted(task, self.stats, self.rq) |
2071 | bb.event.fire(startevent, self.cfgData) | 2070 | bb.event.fire(startevent, self.cfgData) |
2072 | 2071 | ||
2073 | taskdepdata = self.sq_build_taskdepdata(task) | 2072 | taskdepdata = self.sq_build_taskdepdata(task) |
@@ -2088,7 +2087,6 @@ class RunQueueExecute: | |||
2088 | self.build_stamps2.append(self.build_stamps[task]) | 2087 | self.build_stamps2.append(self.build_stamps[task]) |
2089 | self.sq_running.add(task) | 2088 | self.sq_running.add(task) |
2090 | self.sq_live.add(task) | 2089 | self.sq_live.add(task) |
2091 | self.sq_stats.taskActive() | ||
2092 | if self.can_start_task(): | 2090 | if self.can_start_task(): |
2093 | return True | 2091 | return True |
2094 | 2092 | ||
@@ -2178,7 +2176,7 @@ class RunQueueExecute: | |||
2178 | if self.can_start_task(): | 2176 | if self.can_start_task(): |
2179 | return True | 2177 | return True |
2180 | 2178 | ||
2181 | if self.stats.active > 0 or self.sq_stats.active > 0: | 2179 | if self.stats.active > 0 or len(self.sq_live) > 0: |
2182 | self.rq.read_workers() | 2180 | self.rq.read_workers() |
2183 | return self.rq.active_fds() | 2181 | return self.rq.active_fds() |
2184 | 2182 | ||
@@ -2520,13 +2518,11 @@ class RunQueueExecute: | |||
2520 | self.rq.state = runQueueCleanUp | 2518 | self.rq.state = runQueueCleanUp |
2521 | 2519 | ||
2522 | def sq_task_complete(self, task): | 2520 | def sq_task_complete(self, task): |
2523 | self.sq_stats.taskCompleted() | 2521 | bb.event.fire(sceneQueueTaskCompleted(task, self.stats, self.rq), self.cfgData) |
2524 | bb.event.fire(sceneQueueTaskCompleted(task, self.sq_stats, self.rq), self.cfgData) | ||
2525 | self.sq_task_completeoutright(task) | 2522 | self.sq_task_completeoutright(task) |
2526 | 2523 | ||
2527 | def sq_task_fail(self, task, result): | 2524 | def sq_task_fail(self, task, result): |
2528 | self.sq_stats.taskFailed() | 2525 | bb.event.fire(sceneQueueTaskFailed(task, self.stats, result, self), self.cfgData) |
2529 | bb.event.fire(sceneQueueTaskFailed(task, self.sq_stats, result, self), self.cfgData) | ||
2530 | self.scenequeue_notcovered.add(task) | 2526 | self.scenequeue_notcovered.add(task) |
2531 | self.scenequeue_updatecounters(task, True) | 2527 | self.scenequeue_updatecounters(task, True) |
2532 | self.sq_check_taskfail(task) | 2528 | self.sq_check_taskfail(task) |
@@ -2534,8 +2530,6 @@ class RunQueueExecute: | |||
2534 | def sq_task_failoutright(self, task): | 2530 | def sq_task_failoutright(self, task): |
2535 | self.sq_running.add(task) | 2531 | self.sq_running.add(task) |
2536 | self.sq_buildable.add(task) | 2532 | self.sq_buildable.add(task) |
2537 | self.sq_stats.taskSkipped() | ||
2538 | self.sq_stats.taskCompleted() | ||
2539 | self.scenequeue_notcovered.add(task) | 2533 | self.scenequeue_notcovered.add(task) |
2540 | self.scenequeue_updatecounters(task, True) | 2534 | self.scenequeue_updatecounters(task, True) |
2541 | 2535 | ||
@@ -2543,8 +2537,6 @@ class RunQueueExecute: | |||
2543 | self.sq_running.add(task) | 2537 | self.sq_running.add(task) |
2544 | self.sq_buildable.add(task) | 2538 | self.sq_buildable.add(task) |
2545 | self.sq_task_completeoutright(task) | 2539 | self.sq_task_completeoutright(task) |
2546 | self.sq_stats.taskSkipped() | ||
2547 | self.sq_stats.taskCompleted() | ||
2548 | 2540 | ||
2549 | def sq_build_taskdepdata(self, task): | 2541 | def sq_build_taskdepdata(self, task): |
2550 | def getsetscenedeps(tid): | 2542 | def getsetscenedeps(tid): |
diff --git a/bitbake/lib/bb/ui/uihelper.py b/bitbake/lib/bb/ui/uihelper.py index 48d808ae28..40c7c5a5ef 100644 --- a/bitbake/lib/bb/ui/uihelper.py +++ b/bitbake/lib/bb/ui/uihelper.py | |||
@@ -49,7 +49,7 @@ class BBUIHelper: | |||
49 | tid = event._fn + ":" + event._task | 49 | tid = event._fn + ":" + event._task |
50 | removetid(event.pid, tid) | 50 | removetid(event.pid, tid) |
51 | self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)}) | 51 | self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)}) |
52 | elif isinstance(event, bb.runqueue.runQueueTaskStarted): | 52 | elif isinstance(event, bb.runqueue.runQueueTaskStarted) or isinstance(event, bb.runqueue.sceneQueueTaskStarted): |
53 | self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed + 1 | 53 | self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed + 1 |
54 | self.tasknumber_total = event.stats.total | 54 | self.tasknumber_total = event.stats.total |
55 | self.needUpdate = True | 55 | self.needUpdate = True |