diff options
author | Joshua Watt <JPEWhacker@gmail.com> | 2020-06-09 13:34:14 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-06-12 17:03:15 +0100 |
commit | bf69f30b4b0c478b4bb832f630d7e72b4389d2e1 (patch) | |
tree | 4750dc8ac48478b7899006bcae67ecd19fb2b7bc /bitbake/lib/bb/runqueue.py | |
parent | d84136cb828847de986a8c627e4782a17b999093 (diff) | |
download | poky-bf69f30b4b0c478b4bb832f630d7e72b4389d2e1.tar.gz |
bitbake: bitbake: siggen: Pass all data caches to hash functions
Passing all the data caches to the task hashing functions allows them to
correctly account for mcdepends in task signatures. This allows tasks to
be correctly re-run when a mcdepends changes.
By default, the legacy behavior is maintained for derived signature
generators by passing a special proxy object that can either be used to
access all multiconfigs or the legacy behavior. If a derived signature
generator is updated, it can set the supports_multiconfig_datacaces
property to instruct bitbake it deals with multiconfigs properly.
[YOCTO #13724]
(Bitbake rev: 8ff9203de4fce9c104c2987d86980c9f34036b97)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 5b7dab8d79..adb34a8cf2 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1190,8 +1190,9 @@ class RunQueueData: | |||
1190 | return len(self.runtaskentries) | 1190 | return len(self.runtaskentries) |
1191 | 1191 | ||
1192 | def prepare_task_hash(self, tid): | 1192 | def prepare_task_hash(self, tid): |
1193 | bb.parse.siggen.prep_taskhash(tid, self.runtaskentries[tid].depends, self.dataCaches[mc_from_tid(tid)]) | 1193 | dc = bb.parse.siggen.get_data_caches(self.dataCaches, mc_from_tid(tid)) |
1194 | self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(tid, self.runtaskentries[tid].depends, self.dataCaches[mc_from_tid(tid)]) | 1194 | bb.parse.siggen.prep_taskhash(tid, self.runtaskentries[tid].depends, dc) |
1195 | self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(tid, self.runtaskentries[tid].depends, dc) | ||
1195 | self.runtaskentries[tid].unihash = bb.parse.siggen.get_unihash(tid) | 1196 | self.runtaskentries[tid].unihash = bb.parse.siggen.get_unihash(tid) |
1196 | 1197 | ||
1197 | def dump_data(self): | 1198 | def dump_data(self): |
@@ -2305,7 +2306,8 @@ class RunQueueExecute: | |||
2305 | if len(self.rqdata.runtaskentries[p].depends) and not self.rqdata.runtaskentries[tid].depends.isdisjoint(total): | 2306 | if len(self.rqdata.runtaskentries[p].depends) and not self.rqdata.runtaskentries[tid].depends.isdisjoint(total): |
2306 | continue | 2307 | continue |
2307 | orighash = self.rqdata.runtaskentries[tid].hash | 2308 | orighash = self.rqdata.runtaskentries[tid].hash |
2308 | newhash = bb.parse.siggen.get_taskhash(tid, self.rqdata.runtaskentries[tid].depends, self.rqdata.dataCaches[mc_from_tid(tid)]) | 2309 | dc = bb.parse.siggen.get_data_caches(self.rqdata.dataCaches, mc_from_tid(tid)) |
2310 | newhash = bb.parse.siggen.get_taskhash(tid, self.rqdata.runtaskentries[tid].depends, dc) | ||
2309 | origuni = self.rqdata.runtaskentries[tid].unihash | 2311 | origuni = self.rqdata.runtaskentries[tid].unihash |
2310 | newuni = bb.parse.siggen.get_unihash(tid) | 2312 | newuni = bb.parse.siggen.get_unihash(tid) |
2311 | # FIXME, need to check it can come from sstate at all for determinism? | 2313 | # FIXME, need to check it can come from sstate at all for determinism? |