summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/binman/binman.rst7
-rw-r--r--tools/binman/etype/blob.py2
-rw-r--r--tools/binman/ftest.py8
3 files changed, 12 insertions, 5 deletions
diff --git a/tools/binman/binman.rst b/tools/binman/binman.rst
index 84b1331df5c..392e507d449 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 970fae91cd9..acd9ae34074 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
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 4cf7dfc8216..4a8d330c8f8 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -84,6 +84,7 @@ FILES_DATA = (b"sorry I'm late\nOh, don't bother apologising, I'm " +
b"sorry you're alive\n")
COMPRESS_DATA = b'compress xxxxxxxxxxxxxxxxxxxxxx data'
COMPRESS_DATA_BIG = COMPRESS_DATA * 2
+MISSING_DATA = b'missing'
REFCODE_DATA = b'refcode'
FSP_M_DATA = b'fsp_m'
FSP_S_DATA = b'fsp_s'
@@ -6537,15 +6538,12 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
"Node '/binman/fit/images/@tee-SEQ/tee-os': Invalid OP-TEE file: size mismatch (expected 0x4, have 0xe)",
str(exc.exception))
- def testExtblobOptional(self):
+ def testExtblobMissingOptional(self):
"""Test an image with an external blob that is optional"""
with terminal.capture() as (stdout, stderr):
data = self._DoReadFile('266_blob_ext_opt.dts')
self.assertEqual(REFCODE_DATA, data)
- err = stderr.getvalue()
- self.assertRegex(
- err,
- "Image '.*' is missing optional external blobs but is still functional: missing")
+ self.assertNotIn(MISSING_DATA, data)
def testSectionInner(self):
"""Test an inner section with a size"""