[PATCH v2 11/38] binman: Allow faked blobs in blob-ext-list

Simon Glass sjg at chromium.org
Mon Jan 10 04:13:46 CET 2022


Since this is a list of blobs, each blob should have the ability to be
faked, as with blob-ext. Update the Entry base class to set allow_fake
and use the base class in the section code also, so that this propagagtes
to blob-ext-list, which is not a section.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

(no changes since v1)

 tools/binman/entry.py                        |  2 +-
 tools/binman/etype/blob_ext_list.py          |  1 +
 tools/binman/etype/section.py                |  1 +
 tools/binman/ftest.py                        |  8 ++++++++
 tools/binman/test/218_blob_ext_list_fake.dts | 14 ++++++++++++++
 5 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 tools/binman/test/218_blob_ext_list_fake.dts

diff --git a/tools/binman/entry.py b/tools/binman/entry.py
index bac90bbbcde..e4a1f2d5d5c 100644
--- a/tools/binman/entry.py
+++ b/tools/binman/entry.py
@@ -960,7 +960,7 @@ features to produce new behaviours.
         Args:
             allow_fake: True if allowed, False if not allowed
         """
-        pass
+        self.allow_fake = allow_fake
 
     def CheckMissing(self, missing_list):
         """Check if any entries in this section have missing external blobs
diff --git a/tools/binman/etype/blob_ext_list.py b/tools/binman/etype/blob_ext_list.py
index 136ae819946..29c9092dc35 100644
--- a/tools/binman/etype/blob_ext_list.py
+++ b/tools/binman/etype/blob_ext_list.py
@@ -37,6 +37,7 @@ class Entry_blob_ext_list(Entry_blob):
         missing = False
         pathnames = []
         for fname in self._filenames:
+            fname = self.check_fake_fname(fname)
             pathname = tools.GetInputFilename(
                 fname, self.external and self.section.GetAllowMissing())
             # Allow the file to be missing
diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
index 7a55d032318..fdd4cbb21ad 100644
--- a/tools/binman/etype/section.py
+++ b/tools/binman/etype/section.py
@@ -805,6 +805,7 @@ class Entry_section(Entry):
         Args:
             allow_fake_blob: True if allowed, False if not allowed
         """
+        super().SetAllowFakeBlob(allow_fake)
         for entry in self._entries.values():
             entry.SetAllowFakeBlob(allow_fake)
 
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 6a7647311ba..ac6aabbf9c3 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -4982,6 +4982,14 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap
             err,
             "Image '.*' has faked external blobs and is non-functional: .*")
 
+    def testExtblobListFaked(self):
+        """Test an extblob with missing external blob that are faked"""
+        with test_util.capture_sys_output() as (stdout, stderr):
+            self._DoTestFile('216_blob_ext_list_missing.dts',
+                             allow_fake_blobs=True)
+        err = stderr.getvalue()
+        self.assertRegex(err, "Image 'main-section'.*faked.*: blob-ext-list")
+
 
 if __name__ == "__main__":
     unittest.main()
diff --git a/tools/binman/test/218_blob_ext_list_fake.dts b/tools/binman/test/218_blob_ext_list_fake.dts
new file mode 100644
index 00000000000..54ee54fdaab
--- /dev/null
+++ b/tools/binman/test/218_blob_ext_list_fake.dts
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	binman {
+		blob-ext-list {
+			filenames = "refcode.bin", "fake-file";
+		};
+	};
+};
-- 
2.34.1.575.g55b058a8bb-goog



More information about the U-Boot mailing list