diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-11-04 17:29:24 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-11-07 15:12:29 +0000 |
commit | ca01520a0b2378e879c70fc0e1b85608f1c3dc2b (patch) | |
tree | 237bf83bbeb910eadb256335937d129fbde5b360 /bitbake/lib/bb/runqueue.py | |
parent | c960514cc02fc02950c2ad52a1e39ff65a04e83d (diff) | |
download | poky-ca01520a0b2378e879c70fc0e1b85608f1c3dc2b.tar.gz |
bitbake: runqueue: Improve sstate rehashing output
Bibake is currently too 'chatty' when hash equivalence is enabled. Fix
this by only printing the log output if a rehash happens and it matches
an sstate object.
Also, pass a summary option to the hash checking function. This was
already changed to a mechanism which allows addition of new parameters
so this should be backwards and forwards compatible.
(Bitbake rev: 0c4515603ad08775e3b0404cba5374367e49f236)
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 | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 18049436fd..8622738fd9 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1397,7 +1397,7 @@ class RunQueue: | |||
1397 | cache[tid] = iscurrent | 1397 | cache[tid] = iscurrent |
1398 | return iscurrent | 1398 | return iscurrent |
1399 | 1399 | ||
1400 | def validate_hashes(self, tocheck, data, currentcount=0, siginfo=False): | 1400 | def validate_hashes(self, tocheck, data, currentcount=0, siginfo=False, summary=True): |
1401 | valid = set() | 1401 | valid = set() |
1402 | if self.hashvalidate: | 1402 | if self.hashvalidate: |
1403 | sq_data = {} | 1403 | sq_data = {} |
@@ -1410,15 +1410,15 @@ class RunQueue: | |||
1410 | sq_data['hashfn'][tid] = self.rqdata.dataCaches[mc].hashfn[taskfn] | 1410 | sq_data['hashfn'][tid] = self.rqdata.dataCaches[mc].hashfn[taskfn] |
1411 | sq_data['unihash'][tid] = self.rqdata.runtaskentries[tid].unihash | 1411 | sq_data['unihash'][tid] = self.rqdata.runtaskentries[tid].unihash |
1412 | 1412 | ||
1413 | valid = self.validate_hash(sq_data, data, siginfo, currentcount) | 1413 | valid = self.validate_hash(sq_data, data, siginfo, currentcount, summary) |
1414 | 1414 | ||
1415 | return valid | 1415 | return valid |
1416 | 1416 | ||
1417 | def validate_hash(self, sq_data, d, siginfo, currentcount): | 1417 | def validate_hash(self, sq_data, d, siginfo, currentcount, summary): |
1418 | locs = {"sq_data" : sq_data, "d" : d, "siginfo" : siginfo, "currentcount" : currentcount} | 1418 | locs = {"sq_data" : sq_data, "d" : d, "siginfo" : siginfo, "currentcount" : currentcount, "summary" : summary} |
1419 | 1419 | ||
1420 | # Metadata has **kwargs so args can be added, sq_data can also gain new fields | 1420 | # Metadata has **kwargs so args can be added, sq_data can also gain new fields |
1421 | call = self.hashvalidate + "(sq_data, d, siginfo=siginfo, currentcount=currentcount)" | 1421 | call = self.hashvalidate + "(sq_data, d, siginfo=siginfo, currentcount=currentcount, summary=summary)" |
1422 | 1422 | ||
1423 | return bb.utils.better_eval(call, locs) | 1423 | return bb.utils.better_eval(call, locs) |
1424 | 1424 | ||
@@ -1605,7 +1605,7 @@ class RunQueue: | |||
1605 | 1605 | ||
1606 | tocheck.add(tid) | 1606 | tocheck.add(tid) |
1607 | 1607 | ||
1608 | valid_new = self.validate_hashes(tocheck, self.cooker.data, 0, True) | 1608 | valid_new = self.validate_hashes(tocheck, self.cooker.data, 0, True, summary=False) |
1609 | 1609 | ||
1610 | # Tasks which are both setscene and noexec never care about dependencies | 1610 | # Tasks which are both setscene and noexec never care about dependencies |
1611 | # We therefore find tasks which are setscene and noexec and mark their | 1611 | # We therefore find tasks which are setscene and noexec and mark their |
@@ -1986,7 +1986,7 @@ class RunQueueExecute: | |||
1986 | continue | 1986 | continue |
1987 | logger.debug(1, "Task %s no longer deferred" % nexttask) | 1987 | logger.debug(1, "Task %s no longer deferred" % nexttask) |
1988 | del self.sq_deferred[nexttask] | 1988 | del self.sq_deferred[nexttask] |
1989 | valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False) | 1989 | valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False, summary=False) |
1990 | if not valid: | 1990 | if not valid: |
1991 | logger.debug(1, "%s didn't become valid, skipping setscene" % nexttask) | 1991 | logger.debug(1, "%s didn't become valid, skipping setscene" % nexttask) |
1992 | self.sq_task_failoutright(nexttask) | 1992 | self.sq_task_failoutright(nexttask) |
@@ -2361,9 +2361,13 @@ class RunQueueExecute: | |||
2361 | if tid in self.build_stamps: | 2361 | if tid in self.build_stamps: |
2362 | del self.build_stamps[tid] | 2362 | del self.build_stamps[tid] |
2363 | 2363 | ||
2364 | logger.info("Setscene task %s now valid and being rerun" % tid) | 2364 | origvalid = False |
2365 | if tid in self.sqdata.valid: | ||
2366 | origvalid = True | ||
2365 | self.sqdone = False | 2367 | self.sqdone = False |
2366 | update_scenequeue_data([tid], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self) | 2368 | update_scenequeue_data([tid], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) |
2369 | if tid in self.sqdata.valid and not origvalid: | ||
2370 | logger.info("Setscene task %s became valid" % tid) | ||
2367 | 2371 | ||
2368 | if changed: | 2372 | if changed: |
2369 | self.holdoff_need_update = True | 2373 | self.holdoff_need_update = True |
@@ -2692,9 +2696,9 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq): | |||
2692 | sqdata.stamppresent = set() | 2696 | sqdata.stamppresent = set() |
2693 | sqdata.valid = set() | 2697 | sqdata.valid = set() |
2694 | 2698 | ||
2695 | update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq) | 2699 | update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True) |
2696 | 2700 | ||
2697 | def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq): | 2701 | def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True): |
2698 | 2702 | ||
2699 | tocheck = set() | 2703 | tocheck = set() |
2700 | 2704 | ||
@@ -2728,7 +2732,7 @@ def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq): | |||
2728 | 2732 | ||
2729 | tocheck.add(tid) | 2733 | tocheck.add(tid) |
2730 | 2734 | ||
2731 | sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False) | 2735 | sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary) |
2732 | 2736 | ||
2733 | sqdata.hashes = {} | 2737 | sqdata.hashes = {} |
2734 | for mc in sorted(sqdata.multiconfigs): | 2738 | for mc in sorted(sqdata.multiconfigs): |