diff mbox series

siggen: Ensure version of siggen is verified

Message ID 20240105115316.2430989-1-richard.purdie@linuxfoundation.org
State Accepted, archived
Commit 721556568413508213d22c29985e305a45a8d68a
Headers show
Series siggen: Ensure version of siggen is verified | expand

Commit Message

Richard Purdie Jan. 5, 2024, 11:53 a.m. UTC
Since we need to change the form of the siggen function, we need to add versioning
and some verison checks. This means if a newer bitbake is used with older metadata
we can detect it.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 lib/bb/command.py  |  1 +
 lib/bb/runqueue.py |  1 +
 lib/bb/siggen.py   | 10 ++++++++++
 3 files changed, 12 insertions(+)
diff mbox series

Patch

diff --git a/lib/bb/command.py b/lib/bb/command.py
index 79b6c0738f..1fcb9bf14c 100644
--- a/lib/bb/command.py
+++ b/lib/bb/command.py
@@ -777,6 +777,7 @@  class CommandsAsync:
         (mc, pn) = bb.runqueue.split_mc(params[0])
         taskname = params[1]
         sigs = params[2]
+        bb.siggen.check_siggen_version(bb.siggen)
         res = bb.siggen.find_siginfo(pn, taskname, sigs, command.cooker.databuilder.mcdata[mc])
         bb.event.fire(bb.event.FindSigInfoResult(res), command.cooker.databuilder.mcdata[mc])
         command.finishAsyncCommand()
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 51959231b7..9e3a87c0e8 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -1760,6 +1760,7 @@  class RunQueue:
         return invalidtasks
 
     def write_diffscenetasks(self, invalidtasks):
+        bb.siggen.check_siggen_version(bb.siggen)
 
         # Define recursion callback
         def recursecb(key, hash1, hash2):
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index b023b79eca..5a584cadf9 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -24,6 +24,16 @@  import hashserv.client
 logger = logging.getLogger('BitBake.SigGen')
 hashequiv_logger = logging.getLogger('BitBake.SigGen.HashEquiv')
 
+#find_siginfo and find_siginfo_version are set by the metadata siggen
+# The minimum version of the find_siginfo function we need
+find_siginfo_minversion = 2
+
+def check_siggen_version(siggen):
+    if not hasattr(siggen, "find_siginfo_version"):
+        bb.fatal("Siggen from metadata (OE-Core?) is too old, please update it (no version found)")
+    if siggen.find_siginfo_version < siggen.find_siginfo_minversion:
+        bb.fatal("Siggen from metadata (OE-Core?) is too old, please update it (%s vs %s)" % (siggen.find_siginfo_version, siggen.find_siginfo_minversion))
+
 class SetEncoder(json.JSONEncoder):
     def default(self, obj):
         if isinstance(obj, set) or isinstance(obj, frozenset):