From: Ross Burton Date: Fri, 7 Nov 2025 15:27:30 +0000 (+0000) Subject: lib/oe/buildhistory_analysis: sort package lists X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a8d4c6dcf98c2bff07f5ea7b5bd0986e9c470898;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git lib/oe/buildhistory_analysis: sort package lists When listing packages that have been added or removed from an image or SDK, sort the list so that it's easier to read. Signed-off-by: Ross Burton Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py index 2c5f9c6b169..c1d502e89cf 100644 --- a/meta/lib/oe/buildhistory_analysis.py +++ b/meta/lib/oe/buildhistory_analysis.py @@ -13,6 +13,7 @@ import sys import os.path import difflib +import functools import git import re import shlex @@ -206,6 +207,7 @@ class ChangeRecord: return '%s%s' % (prefix, out) if out else '' +@functools.total_ordering class FileChange: changetype_add = 'A' changetype_remove = 'R' @@ -257,6 +259,12 @@ class FileChange: else: return '%s changed (unknown)' % self.path + def __eq__(self, other): + return (self.path, self.changetype, self.oldvalue, self.oldvalue) == (other.path, other.changetype, other.oldvalue, other.oldvalue) + + def __lt__(self, other): + return (self.path, self.changetype, self.oldvalue, self.oldvalue) < (other.path, other.changetype, other.oldvalue, other.oldvalue) + def blob_to_dict(blob): alines = [line for line in blob.data_stream.read().decode('utf-8').splitlines()] adict = {} @@ -662,7 +670,7 @@ def process_changes(repopath, revision1, revision2='HEAD', report_all=False, rep filechanges = compare_lists(alines,blines) if filechanges: chg = ChangeRecord(path, filename, None, None, True) - chg.filechanges = filechanges + chg.filechanges = sorted(filechanges) changes.append(chg) else: chg = ChangeRecord(path, filename, d.a_blob.data_stream.read().decode('utf-8'), d.b_blob.data_stream.read().decode('utf-8'), True) @@ -690,7 +698,7 @@ def process_changes(repopath, revision1, revision2='HEAD', report_all=False, rep filechanges = compare_lists(alines,blines) if filechanges: chg = ChangeRecord(path, filename, None, None, True) - chg.filechanges = filechanges + chg.filechanges = sorted(filechanges) changes.append(chg) else: chg = ChangeRecord(path, filename, d.a_blob.data_stream.read().decode('utf-8'), d.b_blob.data_stream.read().decode('utf-8'), True)