[gnome-continuous-yocto/gnomeostree-3.28-rocko: 7785/8267] scripts/oe-build-perf-report: show recipe version changes in html report
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 7785/8267] scripts/oe-build-perf-report: show recipe version changes in html report
- Date: Sun, 17 Dec 2017 06:44:07 +0000 (UTC)
commit 6c222a5c11ee1abe2b5b81e97d4dc6ac7346410b
Author: Markus Lehtonen <markus lehtonen linux intel com>
Date: 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]
(From OE-Core rev: 46eb839b51bb1466a9feeb09c9c437d6d45576cc)
Signed-off-by: Markus Lehtonen <markus lehtonen linux intel com>
Signed-off-by: Ross Burton <ross burton intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
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"""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]