summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2020-06-09 13:34:14 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-06-12 17:03:15 +0100
commitbf69f30b4b0c478b4bb832f630d7e72b4389d2e1 (patch)
tree4750dc8ac48478b7899006bcae67ecd19fb2b7bc /bitbake/lib/bb/runqueue.py
parentd84136cb828847de986a8c627e4782a17b999093 (diff)
downloadpoky-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.py8
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?