diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-04-29 18:23:51 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-05-01 22:51:06 +0100 |
commit | 93aaa5e99475e9450d55c1b32f08199e533a3f65 (patch) | |
tree | 17790af08404e6d858eecd6ecec8be31174761ef /bitbake | |
parent | 76891afd76679b00ac620070cd90c9d53c7f6262 (diff) | |
download | poky-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.py | 14 |
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() |