summaryrefslogtreecommitdiff
path: root/tools/binman/image.py
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2022-01-28 20:37:53 +0100
committerSimon Glass <sjg@chromium.org>2022-01-30 20:40:58 -0700
commitfcc87efdf3772e6e8d060dc10d521442d7772ce9 (patch)
tree5173529e26ffbe12231b18fd86925c05f290c655 /tools/binman/image.py
parent6c928c63a18cfc9e2a700cdd88a8db08a8680eb1 (diff)
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 <jan.kiszka@siemens.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> Add SPDX to dts file: Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/binman/image.py')
-rw-r--r--tools/binman/image.py9
1 files changed, 7 insertions, 2 deletions
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