aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-07 14:26:20 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-08 10:51:28 +0100
commit596f76029ccb6f87c3b049552bd08f5034c41d9c (patch)
tree8c1116a729a2b71a19b5fd9343bc3eb3471da36d /meta/classes
parent4c5bd69e5cb203c8a4c2f3716c941661c0afc830 (diff)
downloadopenembedded-core-contrib-596f76029ccb6f87c3b049552bd08f5034c41d9c.tar.gz
sstate: Add sstate usage summary to the build
Currently the user has no indication of how much sstate was already present or that would be used by the build. This change adds some summary information so that the user can see how much reuse is occurring. To fully work it needs some extra information from a recent bitbake commit but this is optional. When combined with bitbake --dry-run this feature can be used to check if sstate would be reused in a build. [YOCTO #12749] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/sstate.bbclass12
1 files changed, 12 insertions, 0 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 350d3107f5..6743becf07 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -892,6 +892,18 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=False):
evdata['found'].append( (sq_fn[task], sq_task[task], sq_hash[task], sstatefile ) )
bb.event.fire(bb.event.MetadataEvent("MissedSstate", evdata), d)
+ # Print some summary statistics about the current task completion and how much sstate
+ # reuse there was. Avoid divide by zero errors.
+ total = len(sq_fn)
+ currentcount = d.getVar("BB_SETSCENE_STAMPCURRENT_COUNT") or 0
+ complete = 0
+ if currentcount:
+ complete = (len(ret) + currentcount) / (total + currentcount) * 100
+ match = 0
+ if total:
+ match = len(ret) / total * 100
+ bb.plain("Sstate summary: Wanted %d Found %d Missed %d Current %d (%d%% match, %d%% complete)" % (total, len(ret), len(missed), currentcount, match, complete))
+
if hasattr(bb.parse.siggen, "checkhashes"):
bb.parse.siggen.checkhashes(missed, ret, sq_fn, sq_task, sq_hash, sq_hashfn, d)