From 6c222a5c11ee1abe2b5b81e97d4dc6ac7346410b Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 15 Sep 2017 16:04:40 +0300 Subject: 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 Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- scripts/lib/build_perf/html/report.html | 20 ++++++++++++++++++++ scripts/lib/buildstats.py | 15 +++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) (limited to 'scripts/lib') diff --git a/scripts/lib/build_perf/html/report.html b/scripts/lib/build_perf/html/report.html index e56186c958..291ad9d721 100644 --- a/scripts/lib/build_perf/html/report.html +++ b/scripts/lib/build_perf/html/report.html @@ -250,6 +250,26 @@ h3 { + + {# Recipe version differences #} + {% if measurement.buildstats.ver_diff %} +
Recipe version changes
+ + {% for head, recipes in measurement.buildstats.ver_diff.items() %} + + + + {% for name, info in recipes|sort %} + + + + + {% endfor %} + {% endfor %} +
{{ head }}
{{ name }}{{ info }}
+ {% else %} +
No recipe version changes detected
+ {% endif %} {% endif %} {% endfor %} diff --git a/scripts/lib/buildstats.py b/scripts/lib/buildstats.py index b1c9e617c6..d9aadf3cb8 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 -- cgit v1.2.3-54-g00ecf