]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
lib/oe/buildhistory_analysis: sort package lists
authorRoss Burton <ross.burton@arm.com>
Fri, 7 Nov 2025 15:27:30 +0000 (15:27 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 17 Nov 2025 11:09:03 +0000 (11:09 +0000)
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 <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oe/buildhistory_analysis.py

index 2c5f9c6b169f1aa8bbfb7637f5a0b9b488a05d09..c1d502e89cf9efea44b45abd635a881d2112bfca 100644 (file)
@@ -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)