diff mbox series

[v3] binman: Include also subnodes in generator nodes

Message ID d32a7bd0-0f25-b35f-9ef8-be88fd25a4f4@siemens.com
State Accepted
Commit b210661c8661ac843127a01fd0100ffceffb81d7
Delegated to: Simon Glass
Headers show
Series [v3] binman: Include also subnodes in generator nodes | expand

Commit Message

Jan Kiszka Feb. 28, 2022, 4:06 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>
---

Rebased over "binman: rockchip: Migrate from rockchip SPL_FIT_GENERATOR 
script"

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

Comments

Simon Glass March 1, 2022, 2:58 p.m. UTC | #1
On Mon, 28 Feb 2022 at 09:06, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>
> 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>
> ---
>
> Rebased over "binman: rockchip: Migrate from rockchip SPL_FIT_GENERATOR
> script"
>
>  tools/binman/etype/fit.py         | 4 ++++
>  tools/binman/ftest.py             | 1 +
>  tools/binman/test/170_fit_fdt.dts | 3 +++
>  3 files changed, 8 insertions(+)
>

Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox series

Patch

diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
index 63d552ed192..a31498d5847 100644
--- a/tools/binman/etype/fit.py
+++ b/tools/binman/etype/fit.py
@@ -532,6 +532,10 @@  class Entry_fit(Entry_section):
                         # Add data for 'images' nodes (but not 'config')
                         if depth == 1 and in_images:
                             fsw.property('data', tools.read_file(fname))
+
+                        for subnode in node.subnodes:
+                            with fsw.add_node(subnode.name):
+                                _add_node(node, depth + 1, subnode)
             else:
                 if self._fdts is None:
                     if self._fit_list_prop:
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index ec8e3d4d91b..d296bf1a137 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -4037,6 +4037,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";
+					};
 				};
 			};