summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2021-09-10 18:09:27 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-09-11 22:39:19 +0100
commit15c87c405f2893208cb94cba2713db9e5e8204a6 (patch)
treebbc9cc98bef1550e0a57f26aff4e9cfab4304d99 /bitbake/lib/bb
parente75e89b418ac07a96f76b64a1ae027d7732e7084 (diff)
downloadpoky-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.py22
-rw-r--r--bitbake/lib/bb/ui/uihelper.py2
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