summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Karlman <jonas@kwiboo.se>2023-07-18 23:34:36 +0300
committerSimon Glass <sjg@chromium.org>2023-08-02 21:05:57 +0300
commit49dcd1c0bb428904c0cfc76fb5c031853ffe9bcc (patch)
tree6e647bb8eac31ce644eaac783b332c6b9b47b43c
parentd92c4dd27dd0f155040fce5ba96f8f2d93c4fa24 (diff)
downloadu-boot-49dcd1c0bb428904c0cfc76fb5c031853ffe9bcc.tar.xz
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>
-rw-r--r--tools/binman/etype/fit.py7
-rw-r--r--tools/binman/ftest.py7
-rw-r--r--tools/binman/test/264_tee_os_opt_fit.dts1
3 files changed, 15 insertions, 0 deletions
diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
index ef4d066757..2c14b15b03 100644
--- a/tools/binman/etype/fit.py
+++ b/tools/binman/etype/fit.py
@@ -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
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 36c72bed35..a5ce44bbb2 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -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:
diff --git a/tools/binman/test/264_tee_os_opt_fit.dts b/tools/binman/test/264_tee_os_opt_fit.dts
index ae44b433ed..e9634d3ccd 100644
--- a/tools/binman/test/264_tee_os_opt_fit.dts
+++ b/tools/binman/test/264_tee_os_opt_fit.dts
@@ -25,6 +25,7 @@
fit,data;
tee-os {
+ optional;
};
};
};