From fcc87efdf3772e6e8d060dc10d521442d7772ce9 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Fri, 28 Jan 2022 20:37:53 +0100 Subject: binman: Skip node generation for images read from files We can and should run the node generator only when creating a new image. When we read it back, there is no need to generate nodes - they already exits, and binman does not dive that deep into the image - and there is no way to provide the required fdt-list. So store the mode in the image object so that Entry_fit can simply skip generator nodes when reading them from an fdtmap. This unbreaks all read-backs of images that contain generator nodes in their fdtmap. To confirm this, add a corresponding test case. Signed-off-by: Jan Kiszka Reviewed-by: Simon Glass Tested-by: Simon Glass Add SPDX to dts file: Signed-off-by: Simon Glass --- tools/binman/image.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'tools/binman/image.py') diff --git a/tools/binman/image.py b/tools/binman/image.py index 0f0c1d29e80..cb5279c7ead 100644 --- a/tools/binman/image.py +++ b/tools/binman/image.py @@ -67,9 +67,13 @@ class Image(section.Entry_section): does not exist in binman. This is useful if an image was created by binman a newer version of binman but we want to list it in an older version which does not support all the entry types. + generate: If true, generator nodes are processed. If false they are + ignored which is useful when an existing image is read back from a + file. """ def __init__(self, name, node, copy_to_orig=True, test=False, - ignore_missing=False, use_expanded=False, missing_etype=False): + ignore_missing=False, use_expanded=False, missing_etype=False, + generate=True): super().__init__(None, 'section', node, test=test) self.copy_to_orig = copy_to_orig self.name = 'main-section' @@ -83,6 +87,7 @@ class Image(section.Entry_section): self.use_expanded = use_expanded self.test_section_timeout = False self.bintools = {} + self.generate = generate if not test: self.ReadNode() @@ -131,7 +136,7 @@ class Image(section.Entry_section): # Return an Image with the associated nodes root = dtb.GetRoot() image = Image('image', root, copy_to_orig=False, ignore_missing=True, - missing_etype=True) + missing_etype=True, generate=False) image.image_node = fdt_util.GetString(root, 'image-node', 'image') image.fdtmap_dtb = dtb -- cgit v1.2.3