From 859786a83f8bb826d3cd89c08bd9596fc7cf2474 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 5 Jan 2024 11:38:25 +0000 Subject: bitbake: siggen: Ensure version of siggen is verified 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. (Bitbake rev: 721556568413508213d22c29985e305a45a8d68a) Signed-off-by: Richard Purdie --- bitbake/lib/bb/command.py | 1 + bitbake/lib/bb/runqueue.py | 1 + bitbake/lib/bb/siggen.py | 10 ++++++++++ 3 files changed, 12 insertions(+) (limited to 'bitbake') diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index 79b6c0738f..1fcb9bf14c 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/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/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index d61dfbb691..110865132d 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -1749,6 +1749,7 @@ class RunQueue: return invalidtasks.difference(found) def write_diffscenetasks(self, invalidtasks): + bb.siggen.check_siggen_version(bb.siggen) # Define recursion callback def recursecb(key, hash1, hash2): diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py index b023b79eca..5a584cadf9 100644 --- a/bitbake/lib/bb/siggen.py +++ b/bitbake/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): -- cgit v1.2.3-54-g00ecf