diff mbox series

[v2] binman: Include also subnodes in generator nodes

Message ID e157777d-b66f-96d7-6e4f-43affee6a69a@siemens.com
State Superseded
Delegated to: Simon Glass
Headers show
Series [v2] binman: Include also subnodes in generator nodes | expand

Commit Message

Jan Kiszka Feb. 18, 2022, 2:10 p.m. UTC
From: Jan Kiszka <jan.kiszka@siemens.com>

This allows to prefill fdt and config nodes with hash and signature
subnodes. It's just important to place the child nodes last so that
hashes do not come before the data - would be disliked by mkimage.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

Changes in v2:
 - local var renamed
 - added test case

 tools/binman/etype/fit.py         | 4 ++++
 tools/binman/ftest.py             | 1 +
 tools/binman/test/170_fit_fdt.dts | 3 +++
 3 files changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
index a56b0564f9a..981fac7f086 100644
--- a/tools/binman/etype/fit.py
+++ b/tools/binman/etype/fit.py
@@ -214,6 +214,10 @@  class Entry_fit(Entry_section):
                                 if depth == 1 and in_images:
                                     fsw.property('data',
                                                  tools.read_file(fname))
+
+                                for subsubnode in subnode.subnodes:
+                                    with fsw.add_node(subsubnode.name):
+                                        _AddNode(subnode, depth + 1, subsubnode)
                     else:
                         if self._fdts is None:
                             if self._fit_list_prop:
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 59b6d52fbe4..9de78272463 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -3915,6 +3915,7 @@  class TestFunctional(unittest.TestCase):
             self.assertEqual(expected_data, fnode.props['data'].bytes)
             self.assertEqual('fdt-test-fdt%d.dtb' % seq,
                              fnode.props['description'].value)
+            self.assertEqual(fnode.subnodes[0].name, 'hash')
 
         def _CheckConfig(seq, expected_data):
             """Check the configuration nodes
diff --git a/tools/binman/test/170_fit_fdt.dts b/tools/binman/test/170_fit_fdt.dts
index 99d710c57e9..0197ffd1597 100644
--- a/tools/binman/test/170_fit_fdt.dts
+++ b/tools/binman/test/170_fit_fdt.dts
@@ -36,6 +36,9 @@ 
 					description = "fdt-NAME.dtb";
 					type = "flat_dt";
 					compression = "none";
+					hash {
+						algo = "sha256";
+					};
 				};
 			};