diff mbox series

[v2,6/6] kernel-fit-image: drop the synthetic FIT_LOADABLE_* values

Message ID 20261025181847.784113-7-adrian.freihofer@siemens.com
State New
Headers show
Series kernel-fit-image: add FIT_LOADABLE_* variables to do_compile vardeps | expand

Commit Message

AdrianF Oct. 25, 2026, 6:18 p.m. UTC
From: Adrian Freihofer <adrian.freihofer@siemens.com>

The anonymous function sets the FIT_LOADABLE_* variables to the flags of
all loadables joined by " ? ", e.g. "0x86000000 ? 0x87000000". This was
done only to make the flags visible to the selftests, which could read
variables but not flags. do_compile reads the flags directly and does
not need these values.

get_bb_vars supports reading variable flags now. Let the test request
the FIT_LOADABLE_* flags of the loadables it configures and drop the
synthetic values from the class.

Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com>
---
 meta/classes-recipe/kernel-fit-image.bbclass |  7 ++-----
 meta/lib/oeqa/selftest/cases/fitimage.py     | 13 +++++++------
 2 files changed, 9 insertions(+), 11 deletions(-)
diff mbox series

Patch

diff --git a/meta/classes-recipe/kernel-fit-image.bbclass b/meta/classes-recipe/kernel-fit-image.bbclass
index a238de1aa2..abf7327c97 100644
--- a/meta/classes-recipe/kernel-fit-image.bbclass
+++ b/meta/classes-recipe/kernel-fit-image.bbclass
@@ -32,8 +32,8 @@  python () {
     # Parse loadables config
     loadables = d.getVar('FIT_LOADABLES')
     if loadables:
-        # Forbid direct assignment, set synthetic values for testability and
-        # add the vars to vardeps so their flags are part of the signature.
+        # Only flags are supported. Add the vars to vardeps so their flags are
+        # part of the signature.
         loadable_vars = ['FIT_LOADABLE_ARCH', 'FIT_LOADABLE_COMPRESSION',
                          'FIT_LOADABLE_DESCRIPTION', 'FIT_LOADABLE_ENTRYPOINT',
                          'FIT_LOADABLE_FILENAME', 'FIT_LOADABLE_LOADADDRESS',
@@ -41,9 +41,6 @@  python () {
         for v in loadable_vars:
             if d.getVar(v):
                 raise bb.parse.SkipRecipe("You cannot use %s as a variable, you can only set flags." % v)
-
-            synt_value = " ? ".join([ d.getVarFlag(v, loadable) or "" for loadable in loadables.split() ])
-            d.setVar(v, synt_value)
         d.appendVarFlag('do_compile', 'vardeps', ' ' + ' '.join(loadable_vars))
 }
 
diff --git a/meta/lib/oeqa/selftest/cases/fitimage.py b/meta/lib/oeqa/selftest/cases/fitimage.py
index 5d77e6da09..ffd7f9747e 100644
--- a/meta/lib/oeqa/selftest/cases/fitimage.py
+++ b/meta/lib/oeqa/selftest/cases/fitimage.py
@@ -676,8 +676,6 @@  class KernelFitImageBase(FitImageTestCase):
             'FIT_HASH_ALG',
             'FIT_KERNEL_COMP_ALG',
             'FIT_LOADABLES',
-            'FIT_LOADABLE_ENTRYPOINT',
-            'FIT_LOADABLE_LOADADDRESS',
             'FIT_OS',
             'FIT_SIGN_ALG',
             'FIT_SIGN_INDIVIDUAL',
@@ -1025,10 +1023,10 @@  class KernelFitImageBase(FitImageTestCase):
                 "Entry Point": bb_vars['UBOOT_RD_ENTRYPOINT']
             }
         # Create one section per loadable
-        for index,loadable in enumerate(loadables):
-            loadaddress = bb_vars['FIT_LOADABLE_LOADADDRESS'].split("?")[index].strip()
+        for loadable in loadables:
+            loadaddress = bb_vars['FIT_LOADABLE_LOADADDRESS[%s]' % loadable]
             req_sections[loadable] = { "Load Address": loadaddress }
-            entrypoint = bb_vars['FIT_LOADABLE_ENTRYPOINT'].split("?")[index].strip()
+            entrypoint = bb_vars.get('FIT_LOADABLE_ENTRYPOINT[%s]' % loadable)
             if entrypoint:
                 req_sections[loadable]['Entry Point'] = entrypoint
         # Create a configuration section for each DTB
@@ -1204,7 +1202,10 @@  FIT_LOADABLE_TYPE[loadable2] = "firmware"
         config = FitImageTestCase._config_add_machine_settings(config, machine, keys=["KERNEL_DEVICETREE", "FIT_CONF_DEFAULT_DTB"])
         config = self._config_add_kernel_classes(config)
         self.write_config(config)
-        bb_vars = self._fit_get_bb_vars()
+        loadable_flags = ['%s[%s]' % (var, loadable)
+                          for loadable in ('loadable1', 'loadable2')
+                          for var in ('FIT_LOADABLE_ENTRYPOINT', 'FIT_LOADABLE_LOADADDRESS')]
+        bb_vars = self._fit_get_bb_vars(loadable_flags)
         self._gen_atf_tee_dummy_images(bb_vars)
         self._test_fitimage(bb_vars)