[OE-core] [PATCH] buildstats-summary.bbclass: Import useful bbclass from meta-mentor
Martin Jansa
martin.jansa at gmail.com
Fri Jun 6 19:27:54 UTC 2014
Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
---
meta/classes/buildstats-summary.bbclass | 43 +++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
create mode 100644 meta/classes/buildstats-summary.bbclass
diff --git a/meta/classes/buildstats-summary.bbclass b/meta/classes/buildstats-summary.bbclass
new file mode 100644
index 0000000..3c02724
--- /dev/null
+++ b/meta/classes/buildstats-summary.bbclass
@@ -0,0 +1,43 @@
+# Imported from meta-mentor
+# http://git.yoctoproject.org/cgit/cgit.cgi/meta-mentor/log/classes/buildstats-summary.bbclass
+# with following modifications
+# 1) when both setscene and normal tasks were executed, count it as no_sstate
+# 2) count do_populate_sysroot and do_packagedata tasks, because often we invalidate only runtime deps
+
+python buildstats_summary () {
+ if not isinstance(e, bb.event.BuildCompleted):
+ return
+
+ import os.path
+
+ bn = get_bn(e)
+ bsdir = os.path.join(e.data.getVar('BUILDSTATS_BASE', True), bn)
+ if not os.path.exists(bsdir):
+ return
+
+ sstate_ps, no_sstate_ps, sstate_pd, no_sstate_pd = set(), set(), set(), set()
+ for pf in os.listdir(bsdir):
+ taskdir = os.path.join(bsdir, pf)
+ if not os.path.isdir(taskdir):
+ continue
+
+ tasks = os.listdir(taskdir)
+ if 'do_populate_sysroot' in tasks:
+ no_sstate_ps.add(pf)
+ elif 'do_populate_sysroot_setscene' in tasks:
+ sstate_ps.add(pf)
+ if 'do_packagedata' in tasks:
+ no_sstate_pd.add(pf)
+ elif 'do_packagedata_setscene' in tasks:
+ sstate_pd.add(pf)
+
+ if not sstate_ps and not no_sstate_ps and not sstate_pd and not no_sstate_pd:
+ return
+
+ bb.note("Build completion summary:")
+ if (len(sstate_ps)+len(no_sstate_ps)) > 0:
+ bb.note(" populate_sysroot reused from sstate in %d%% (%d setscene, %d scratch)" % (100*len(sstate_ps)/(len(sstate_ps)+len(no_sstate_ps)), len(sstate_ps), len(no_sstate_ps)))
+ if (len(sstate_pd)+len(no_sstate_pd)) > 0:
+ bb.note(" packagedata reused from sstate in %d%% (%d setscene, %d scratch)" % (100*len(sstate_pd)/(len(sstate_pd)+len(no_sstate_pd)), len(sstate_ps), len(no_sstate_ps)))
+}
+addhandler buildstats_summary
--
2.0.0
More information about the Openembedded-core
mailing list