[PATCH RFC v2 3/8] tools: binman: mark optional missing blobs as absent

Yannic Moog y.moog at phytec.de
Tue May 27 15:24:11 CEST 2025


Optional blobs should mark themselves as absent to avoid being packed
into an image.
Extend the documentation of this behaviour. Although the documentation
implied this before, the "optional" property had not been explained
properly before.
Note that the intended behaviour is the same, this patch just documents
it.
The actual behaviour will change as now absent entries are no longer
packed into an image. The image map will also reflect this.
As a result, the CheckForProblems() function will no longer alert on
optional (blob) entries. This is because the missing optional images
were removed before CheckForProblems is called.
This, as well, is intended behaviour.

Reported-by: Simon Glass <sjg at chromium.org>
Signed-off-by: Yannic Moog <y.moog at phytec.de>
---
 tools/binman/binman.rst    | 7 +++++++
 tools/binman/etype/blob.py | 2 ++
 2 files changed, 9 insertions(+)

diff --git a/tools/binman/binman.rst b/tools/binman/binman.rst
index 84b1331df5c006f72167016b7f33de73f4a269fa..392e507d449c75eeba4431fe2db01d820bce8f61 100644
--- a/tools/binman/binman.rst
+++ b/tools/binman/binman.rst
@@ -1143,6 +1143,13 @@ Optional entries
 
 Some entries need to exist only if certain conditions are met. For example, an
 entry may want to appear in the image only if a file has a particular format.
+Also, the ``optional`` property may be used to mark entries as optional::
+
+    tee-os {
+        filename = "tee.bin";
+        optional;
+    };
+
 Obviously the entry must exist in the image description for it to be processed
 at all, so a way needs to be found to have the entry remove itself.
 
diff --git a/tools/binman/etype/blob.py b/tools/binman/etype/blob.py
index 970fae91cd9b2a31b3f31d2ecdb77e27a89d69fb..acd9ae34074e4b4b9792b107cc80514dfdd88b3b 100644
--- a/tools/binman/etype/blob.py
+++ b/tools/binman/etype/blob.py
@@ -52,6 +52,8 @@ class Entry_blob(Entry):
                 fake_size = self.assume_size
             self._pathname = self.check_fake_fname(self._filename, fake_size)
             self.missing = True
+            if self.optional:
+                self.mark_absent("missing but optional")
             if not self.faked:
                 content_size = 0
                 if self.assume_size: # Ensure we get test coverage on next line

-- 
2.43.0



More information about the U-Boot mailing list