summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2021-04-29 18:23:51 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-05-01 22:51:06 +0100
commit93aaa5e99475e9450d55c1b32f08199e533a3f65 (patch)
tree17790af08404e6d858eecd6ecec8be31174761ef /bitbake
parent76891afd76679b00ac620070cd90c9d53c7f6262 (diff)
downloadpoky-93aaa5e99475e9450d55c1b32f08199e533a3f65.tar.gz
bitbake: runqueue: Handle deferred task rehashing in multiconfig builds
If the hash of a task changes and that hash is a deferred task (e.g. a multiconfig build), we need to ensure that the hash change propagates through to all the tasks else the build will run multiple copies of the task, sometimes with oddly differing results as the outhashes of native tasks built in differing locations can confuse things. (Bitbake rev: 2db571324f755edc4981deecbcfdf0aaa5a97627) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/runqueue.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 78e576eb2c..6c41fe6d43 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -2294,10 +2294,16 @@ class RunQueueExecute:
2294 self.updated_taskhash_queue.remove((tid, unihash)) 2294 self.updated_taskhash_queue.remove((tid, unihash))
2295 2295
2296 if unihash != self.rqdata.runtaskentries[tid].unihash: 2296 if unihash != self.rqdata.runtaskentries[tid].unihash:
2297 hashequiv_logger.verbose("Task %s unihash changed to %s" % (tid, unihash)) 2297 # Make sure we rehash any other tasks with the same task hash that we're deferred against.
2298 self.rqdata.runtaskentries[tid].unihash = unihash 2298 torehash = [tid]
2299 bb.parse.siggen.set_unihash(tid, unihash) 2299 for deftid in self.sq_deferred:
2300 toprocess.add(tid) 2300 if self.sq_deferred[deftid] == tid:
2301 torehash.append(deftid)
2302 for hashtid in torehash:
2303 hashequiv_logger.verbose("Task %s unihash changed to %s" % (hashtid, unihash))
2304 self.rqdata.runtaskentries[hashtid].unihash = unihash
2305 bb.parse.siggen.set_unihash(hashtid, unihash)
2306 toprocess.add(hashtid)
2301 2307
2302 # Work out all tasks which depend upon these 2308 # Work out all tasks which depend upon these
2303 total = set() 2309 total = set()