From a80f5e761cf1c0ac1b5d457ec5284f601c60f459 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 15 Sep 2017 16:04:39 +0300 Subject: 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 Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- scripts/buildstats-diff | 86 ++++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 55 deletions(-) (limited to 'scripts/buildstats-diff') diff --git a/scripts/buildstats-diff b/scripts/buildstats-diff index ce82dabee9..a128dd324f 100755 --- a/scripts/buildstats-diff +++ b/scripts/buildstats-diff @@ -24,7 +24,7 @@ from operator import attrgetter # Import oe libs scripts_path = os.path.dirname(os.path.realpath(__file__)) sys.path.append(os.path.join(scripts_path, 'lib')) -from buildstats import BuildStats, diff_buildstats, taskdiff_fields +from buildstats import BuildStats, diff_buildstats, taskdiff_fields, BSVerDiff # Setup logging @@ -76,72 +76,48 @@ def read_buildstats(path, multi): def print_ver_diff(bs1, bs2): """Print package version differences""" - pkgs1 = set(bs1.keys()) - pkgs2 = set(bs2.keys()) - new_pkgs = pkgs2 - pkgs1 - deleted_pkgs = pkgs1 - pkgs2 - - echanged = [] - vchanged = [] - rchanged = [] - unchanged = [] - common_pkgs = pkgs2.intersection(pkgs1) - if common_pkgs: - for pkg in common_pkgs: - if bs1[pkg].epoch != bs2[pkg].epoch: - echanged.append(pkg) - elif bs1[pkg].version != bs2[pkg].version: - vchanged.append(pkg) - elif bs1[pkg].revision != bs2[pkg].revision: - rchanged.append(pkg) - else: - unchanged.append(pkg) - maxlen = max([len(pkg) for pkg in pkgs1.union(pkgs2)]) + diff = BSVerDiff(bs1, bs2) + + maxlen = max([len(r) for r in set(bs1.keys()).union(set(bs2.keys()))]) fmt_str = " {:{maxlen}} ({})" -# if unchanged: -# print("\nUNCHANGED PACKAGES:") -# print("-------------------") -# maxlen = max([len(pkg) for pkg in unchanged]) -# for pkg in sorted(unchanged): -# print(fmt_str.format(pkg, bs2[pkg]['nevr'], maxlen=maxlen)) - - if new_pkgs: - print("\nNEW PACKAGES:") - print("-------------") - for pkg in sorted(new_pkgs): - print(fmt_str.format(pkg, bs2[pkg].nevr, maxlen=maxlen)) - - if deleted_pkgs: - print("\nDELETED PACKAGES:") - print("-----------------") - for pkg in sorted(deleted_pkgs): - print(fmt_str.format(pkg, bs1[pkg].nevr, maxlen=maxlen)) + + if diff.new: + print("\nNEW RECIPES:") + print("------------") + for name, val in sorted(diff.new.items()): + print(fmt_str.format(name, val.nevr, maxlen=maxlen)) + + if diff.dropped: + print("\nDROPPED RECIPES:") + print("----------------") + for name, val in sorted(diff.dropped.items()): + print(fmt_str.format(name, val.nevr, maxlen=maxlen)) fmt_str = " {0:{maxlen}} {1:<20} ({2})" - if rchanged: + if diff.rchanged: print("\nREVISION CHANGED:") print("-----------------") - for pkg in sorted(rchanged): - field1 = "{} -> {}".format(pkg, bs1[pkg].revision, bs2[pkg].revision) - field2 = "{} -> {}".format(bs1[pkg].nevr, bs2[pkg].nevr) - print(fmt_str.format(pkg, field1, field2, maxlen=maxlen)) + for name, val in sorted(diff.rchanged.items()): + field1 = "{} -> {}".format(val.left.revision, val.right.revision) + field2 = "{} -> {}".format(val.left.nevr, val.right.nevr) + print(fmt_str.format(name, field1, field2, maxlen=maxlen)) - if vchanged: + if diff.vchanged: print("\nVERSION CHANGED:") print("----------------") - for pkg in sorted(vchanged): - field1 = "{} -> {}".format(bs1[pkg].version, bs2[pkg].version) - field2 = "{} -> {}".format(bs1[pkg].nevr, bs2[pkg].nevr) - print(fmt_str.format(pkg, field1, field2, maxlen=maxlen)) + for name, val in sorted(diff.vchanged.items()): + field1 = "{} -> {}".format(val.left.version, val.right.version) + field2 = "{} -> {}".format(val.left.nevr, val.right.nevr) + print(fmt_str.format(name, field1, field2, maxlen=maxlen)) - if echanged: + if diff.echanged: print("\nEPOCH CHANGED:") print("--------------") - for pkg in sorted(echanged): - field1 = "{} -> {}".format(bs1[pkg].epoch, bs2[pkg].epoch) - field2 = "{} -> {}".format(bs1[pkg].nevr, bs2[pkg].nevr) - print(fmt_str.format(pkg, field1, field2, maxlen=maxlen)) + for name, val in sorted(diff.echanged.items()): + field1 = "{} -> {}".format(val.left.epoch, val.right.epoch) + field2 = "{} -> {}".format(val.left.nevr, val.right.nevr) + print(fmt_str.format(name, field1, field2, maxlen=maxlen)) def print_task_diff(bs1, bs2, val_type, min_val=0, min_absdiff=0, sort_by=('absdiff',)): -- cgit v1.2.3-54-g00ecf