diff options
| author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2017-09-15 16:04:39 +0300 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-09-18 11:07:30 +0100 |
| commit | a80f5e761cf1c0ac1b5d457ec5284f601c60f459 (patch) | |
| tree | b85f3b9abc60fe78008da1ae94b39fb785ae7364 /scripts/lib/buildstats.py | |
| parent | 81aef784fdbd2e8a543475b1892c3d6a1fe97872 (diff) | |
| download | poky-a80f5e761cf1c0ac1b5d457ec5284f601c60f459.tar.gz | |
scripts/buildstats-diff: move more code to lib/buildstats.py
More refactoring of buildstats-diff script. Move recipe version
comparison functionality to scripts/lib/buildstats.py. This patch also
compasses some wording changes, i.e. changing 'package' to 'recipe'.
[YOCTO #11382]
(From OE-Core rev: 2f8942d6830258fcbe1925f12ba1516def32d132)
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>
Diffstat (limited to 'scripts/lib/buildstats.py')
| -rw-r--r-- | scripts/lib/buildstats.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/scripts/lib/buildstats.py b/scripts/lib/buildstats.py index bd6332176a..b1c9e617c6 100644 --- a/scripts/lib/buildstats.py +++ b/scripts/lib/buildstats.py | |||
| @@ -15,7 +15,7 @@ import json | |||
| 15 | import logging | 15 | import logging |
| 16 | import os | 16 | import os |
| 17 | import re | 17 | import re |
| 18 | from collections import namedtuple | 18 | from collections import namedtuple,OrderedDict |
| 19 | from statistics import mean | 19 | from statistics import mean |
| 20 | 20 | ||
| 21 | 21 | ||
| @@ -307,3 +307,32 @@ def diff_buildstats(bs1, bs2, stat_attr, min_val=None, min_absdiff=None): | |||
| 307 | tasks_diff.append(TaskDiff(pkg, pkg_op, task, task_op, val1, val2, | 307 | tasks_diff.append(TaskDiff(pkg, pkg_op, task, task_op, val1, val2, |
| 308 | val2-val1, reldiff)) | 308 | val2-val1, reldiff)) |
| 309 | return tasks_diff | 309 | return tasks_diff |
| 310 | |||
| 311 | |||
| 312 | class BSVerDiff(object): | ||
| 313 | """Class representing recipe version differences between two buildstats""" | ||
| 314 | def __init__(self, bs1, bs2): | ||
| 315 | RecipeVerDiff = namedtuple('RecipeVerDiff', 'left right') | ||
| 316 | |||
| 317 | recipes1 = set(bs1.keys()) | ||
| 318 | recipes2 = set(bs2.keys()) | ||
| 319 | |||
| 320 | self.new = dict([(r, bs2[r]) for r in sorted(recipes2 - recipes1)]) | ||
| 321 | self.dropped = dict([(r, bs1[r]) for r in sorted(recipes1 - recipes2)]) | ||
| 322 | self.echanged = {} | ||
| 323 | self.vchanged = {} | ||
| 324 | self.rchanged = {} | ||
| 325 | self.unchanged = {} | ||
| 326 | |||
| 327 | common = recipes2.intersection(recipes1) | ||
| 328 | if common: | ||
| 329 | for recipe in common: | ||
| 330 | rdiff = RecipeVerDiff(bs1[recipe], bs2[recipe]) | ||
| 331 | if bs1[recipe].epoch != bs2[recipe].epoch: | ||
| 332 | self.echanged[recipe] = rdiff | ||
| 333 | elif bs1[recipe].version != bs2[recipe].version: | ||
| 334 | self.vchanged[recipe] = rdiff | ||
| 335 | elif bs1[recipe].revision != bs2[recipe].revision: | ||
| 336 | self.rchanged[recipe] = rdiff | ||
| 337 | else: | ||
| 338 | self.unchanged[recipe] = rdiff | ||
