binman: Override CheckOptional in fit entry

Missing optional blobs was not reported for generated entries, e.g.
tee-os on rockchip targets. Implement a CheckOptional to fix this.

After this the following can be shown:

  Image 'simple-bin' is missing optional external blobs but is still functional: tee-os

  /binman/simple-bin/fit/images/@tee-SEQ/tee-os (tee-os):
     See the documentation for your board. You may need to build Open Portable
     Trusted Execution Environment (OP-TEE) and build with TEE=/path/to/tee.bin

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Jonas Karlman 2023-07-18 20:34:36 +00:00 committed by Simon Glass
parent d92c4dd27d
commit 49dcd1c0bb
3 changed files with 15 additions and 0 deletions

View file

@ -842,6 +842,13 @@ class Entry_fit(Entry_section):
for entry in self._priv_entries.values():
entry.CheckMissing(missing_list)
def CheckOptional(self, optional_list):
# We must use our private entry list for this since generator nodes
# which are removed from self._entries will otherwise not show up as
# optional
for entry in self._priv_entries.values():
entry.CheckOptional(optional_list)
def CheckEntries(self):
pass

View file

@ -6358,6 +6358,13 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
fdt_util.fdt32_to_cpu(node.props['entry'].value))
self.assertEqual(U_BOOT_DATA, node.props['data'].bytes)
with test_util.capture_sys_output() as (stdout, stderr):
self.checkFitTee('264_tee_os_opt_fit.dts', '')
err = stderr.getvalue()
self.assertRegex(
err,
"Image '.*' is missing optional external blobs but is still functional: tee-os")
def testFitTeeOsOptionalFitBad(self):
"""Test an image with a FIT with an optional OP-TEE binary"""
with self.assertRaises(ValueError) as exc:

View file

@ -25,6 +25,7 @@
fit,data;
tee-os {
optional;
};
};
};