[PATCH v2 2/4] binman: Handle missing bintools correctly in fit

Simon Glass sjg at chromium.org
Fri Mar 3 01:02:43 CET 2023


At present these are handled as if they are allowed to be missing, but
this is only true if the -M flag is provided. Fix this and add a test.

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

Changes in v2:
- Add new patch to handle missing bintools correctly in fit

 tools/binman/etype/fit.py |  2 ++
 tools/binman/ftest.py     | 10 +++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
index cd2943533ce..be0cdcc900f 100644
--- a/tools/binman/etype/fit.py
+++ b/tools/binman/etype/fit.py
@@ -453,6 +453,8 @@ class Entry_fit(Entry_section):
             args.update({'align': fdt_util.fdt32_to_cpu(align.value)})
         if self.mkimage.run(reset_timestamp=True, output_fname=output_fname,
                             **args) is None:
+            if not self.GetAllowMissing():
+                self.Raise("Missing tool: 'mkimage'")
             # Bintool is missing; just use empty data as the output
             self.record_missing_bintool(self.mkimage)
             return tools.get_bytes(0, 1024)
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 062f54adb0e..b4b5019f90c 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -3999,9 +3999,17 @@ class TestFunctional(unittest.TestCase):
             self.assertEqual(expected, data[image_pos:image_pos+size])
 
     def testFitMissing(self):
+        """Test that binman complains if mkimage is missing"""
+        with self.assertRaises(ValueError) as e:
+            self._DoTestFile('162_fit_external.dts',
+                             force_missing_bintools='mkimage')
+        self.assertIn("Node '/binman/fit': Missing tool: 'mkimage'",
+                      str(e.exception))
+
+    def testFitMissingOK(self):
         """Test that binman still produces a FIT image if mkimage is missing"""
         with test_util.capture_sys_output() as (_, stderr):
-            self._DoTestFile('162_fit_external.dts',
+            self._DoTestFile('162_fit_external.dts', allow_missing=True,
                              force_missing_bintools='mkimage')
         err = stderr.getvalue()
         self.assertRegex(err, "Image 'image'.*missing bintools.*: mkimage")
-- 
2.40.0.rc0.216.gc4246ad0f0-goog



More information about the U-Boot mailing list