aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-09-20 16:30:19 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-09-27 13:24:24 +0100
commit4205a3ef23834f317642bba155d67cd772176fb6 (patch)
treea31bd16864217252d90f4b9417041a463b6ba1fd
parent632980ef90fe126b7ba3d138f4d574ae05914779 (diff)
downloadbitbake-4205a3ef23834f317642bba155d67cd772176fb6.tar.gz
runqueue: Change task migration behaviour for rerunning setscene tasks
Currently runqueue will rerun setscene tasks multiple times as hashes change. This has caused numerous problems since a setscene task may become "unavailable" for some future signature combination and the code then can't easily "unskip" tasks its already passed into the execution queue. At least for now, only run setscene once and assume they're equivalent at that point. In practise that has been much more stable in testing. Tweak the test to match the change in behaviour. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/runqueue.py4
-rw-r--r--lib/bb/tests/runqueue.py5
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 02160ef4d..65169931f 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -2301,6 +2301,10 @@ class RunQueueExecute:
continue
if tid in self.runq_running:
continue
+ if tid in self.scenequeue_covered:
+ # Potentially risky, should we report this hash as a match?
+ logger.info("Already covered setscene for %s so ignoring rehash" % (tid))
+ continue
if tid not in self.pending_migrations:
self.pending_migrations.add(tid)
diff --git a/lib/bb/tests/runqueue.py b/lib/bb/tests/runqueue.py
index 01b992c47..50b3392bc 100644
--- a/lib/bb/tests/runqueue.py
+++ b/lib/bb/tests/runqueue.py
@@ -307,8 +307,5 @@ class RunQueueTests(unittest.TestCase):
'e1:package_setscene']
self.assertEqual(set(tasks), set(expected))
for i in expected:
- if i in ["e1:package_setscene"]:
- self.assertEqual(tasks.count(i), 4, "%s not in task list four times" % i)
- else:
- self.assertEqual(tasks.count(i), 1, "%s not in task list once" % i)
+ self.assertEqual(tasks.count(i), 1, "%s not in task list once" % i)