[oe-commits] [openembedded-core] 34/37: scripts/oe-build-perf-report: show recipe version changes in html report
git at git.openembedded.org
git at git.openembedded.org
Sun Sep 17 23:06:27 UTC 2017
This is an automated email from the git hooks/post-receive script.
rpurdie pushed a commit to branch master-next
in repository openembedded-core.
commit e39dbdadfecf98ef3fbed24d22e2dff8796ed2d4
Author: Markus Lehtonen <markus.lehtonen at linux.intel.com>
AuthorDate: Fri Sep 15 16:04:40 2017 +0300
scripts/oe-build-perf-report: show recipe version changes in html report
If buildstats are available (for a certain measurement), show recipe
version changes between the two builds that are being compared. The
information shown includes new and dropped recipes as well as changes in
recipe version, revision or epoch.
[YOCTO #11382]
Signed-off-by: Markus Lehtonen <markus.lehtonen at linux.intel.com>
Signed-off-by: Ross Burton <ross.burton at intel.com>
---
scripts/lib/build_perf/html/report.html | 20 ++++++++++++++++++++
scripts/lib/buildstats.py | 15 +++++++++++++--
scripts/oe-build-perf-report | 17 ++++++++++++++++-
3 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/scripts/lib/build_perf/html/report.html b/scripts/lib/build_perf/html/report.html
index e56186c..291ad9d 100644
--- a/scripts/lib/build_perf/html/report.html
+++ b/scripts/lib/build_perf/html/report.html
@@ -250,6 +250,26 @@ h3 {
</td>
</tr>
</table>
+
+ {# Recipe version differences #}
+ {% if measurement.buildstats.ver_diff %}
+ <div style="margin-top: 16px">Recipe version changes</div>
+ <table class="details">
+ {% for head, recipes in measurement.buildstats.ver_diff.items() %}
+ <tr>
+ <th colspan="2">{{ head }}</th>
+ </tr>
+ {% for name, info in recipes|sort %}
+ <tr>
+ <td>{{ name }}</td>
+ <td>{{ info }}</td>
+ </tr>
+ {% endfor %}
+ {% endfor %}
+ </table>
+ {% else %}
+ <div style="margin-top: 16px">No recipe version changes detected</div>
+ {% endif %}
{% endif %}
</div>
{% endfor %}
diff --git a/scripts/lib/buildstats.py b/scripts/lib/buildstats.py
index b1c9e61..d9aadf3 100644
--- a/scripts/lib/buildstats.py
+++ b/scripts/lib/buildstats.py
@@ -157,9 +157,9 @@ class BSRecipe(object):
self.version = version
self.revision = revision
if epoch is None:
- self.nevr = "{}-{}-{}".format(name, version, revision)
+ self.evr = "{}-{}".format(version, revision)
else:
- self.nevr = "{}-{}_{}-{}".format(name, epoch, version, revision)
+ self.evr = "{}_{}-{}".format(epoch, version, revision)
self.tasks = {}
def aggregate(self, bsrecipe):
@@ -176,6 +176,10 @@ class BSRecipe(object):
self.tasks[taskname] = BSTaskAggregate([self.tasks[taskname]])
self.tasks[taskname].append(taskdata)
+ @property
+ def nevr(self):
+ return self.name + '-' + self.evr
+
class BuildStats(dict):
"""Class representing buildstats of one build"""
@@ -323,6 +327,7 @@ class BSVerDiff(object):
self.vchanged = {}
self.rchanged = {}
self.unchanged = {}
+ self.empty_diff = False
common = recipes2.intersection(recipes1)
if common:
@@ -336,3 +341,9 @@ class BSVerDiff(object):
self.rchanged[recipe] = rdiff
else:
self.unchanged[recipe] = rdiff
+
+ if len(recipes1) == len(recipes2) == len(self.unchanged):
+ self.empty_diff = True
+
+ def __bool__(self):
+ return not self.empty_diff
diff --git a/scripts/oe-build-perf-report b/scripts/oe-build-perf-report
index 0b2f730..ac88f0f 100755
--- a/scripts/oe-build-perf-report
+++ b/scripts/oe-build-perf-report
@@ -32,7 +32,7 @@ from build_perf.report import (metadata_xml_to_json, results_xml_to_json,
aggregate_data, aggregate_metadata, measurement_stats,
AggregateTestData)
from build_perf import html
-from buildstats import BuildStats, diff_buildstats
+from buildstats import BuildStats, diff_buildstats, BSVerDiff
scriptpath.add_oe_lib_path()
@@ -341,6 +341,7 @@ class BSSummary(object):
self.top_consumer = None
self.top_decrease = None
self.top_increase = None
+ self.ver_diff = OrderedDict()
tasks_diff = diff_buildstats(bs1, bs2, 'cputime')
@@ -353,6 +354,20 @@ class BSSummary(object):
self.top_decrease = tasks_diff[0:5]
self.top_increase = tasks_diff[-5:]
+ # Compare recipe versions and prepare data for display
+ ver_diff = BSVerDiff(bs1, bs2)
+ if ver_diff:
+ if ver_diff.new:
+ self.ver_diff['New recipes'] = [(n, r.evr) for n, r in ver_diff.new.items()]
+ if ver_diff.dropped:
+ self.ver_diff['Dropped recipes'] = [(n, r.evr) for n, r in ver_diff.dropped.items()]
+ if ver_diff.echanged:
+ self.ver_diff['Epoch changed'] = [(n, "{} → {}".format(r.left.evr, r.right.evr)) for n, r in ver_diff.echanged.items()]
+ if ver_diff.vchanged:
+ self.ver_diff['Version changed'] = [(n, "{} → {}".format(r.left.version, r.right.version)) for n, r in ver_diff.vchanged.items()]
+ if ver_diff.rchanged:
+ self.ver_diff['Revision changed'] = [(n, "{} → {}".format(r.left.evr, r.right.evr)) for n, r in ver_diff.rchanged.items()]
+
def print_html_report(data, id_comp, buildstats):
"""Print report in html format"""
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list