aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-11-23 11:03:48 -0700
committerSimon Glass <sjg@chromium.org>2021-12-02 09:16:30 -0700
commite586f44ea70867684426007ff9079389c6baddfe (patch)
tree52c07fa477f6b9a8ab52e752f6bd5e34b7f26157
parentd34bcdd054d4c9ccbbbc49a267168e5ad1bc0e78 (diff)
downloadu-boot-e586f44ea70867684426007ff9079389c6baddfe.zip
u-boot-e586f44ea70867684426007ff9079389c6baddfe.tar.gz
u-boot-e586f44ea70867684426007ff9079389c6baddfe.tar.bz2
binman: Allow control of which entries to read
The ObtainContents() and GetEntryContents() methods in this file read every single entry in the section. This is the common case. However when one of the entries has had its data updated (e.g. with 'binman replace') we don't want to read it again from the file. Allow the entry to be skipped, for this purpose. This is currently done in the CBFS implementation, so adding it here will allow that to use more of the entry_Section code. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/binman/etype/section.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
index 3342403..76e5eb1 100644
--- a/tools/binman/etype/section.py
+++ b/tools/binman/etype/section.py
@@ -143,8 +143,8 @@ class Entry_section(Entry):
for entry in self._entries.values():
entry.AddMissingProperties(have_image_pos)
- def ObtainContents(self):
- return self.GetEntryContents()
+ def ObtainContents(self, skip_entry=None):
+ return self.GetEntryContents(skip_entry=skip_entry)
def GetPaddedDataForEntry(self, entry, entry_data):
"""Get the data for an entry including any padding
@@ -527,12 +527,13 @@ class Entry_section(Entry):
return entry
return None
- def GetEntryContents(self):
+ def GetEntryContents(self, skip_entry=None):
"""Call ObtainContents() for each entry in the section
"""
def _CheckDone(entry):
- if not entry.ObtainContents():
- next_todo.append(entry)
+ if entry != skip_entry:
+ if not entry.ObtainContents():
+ next_todo.append(entry)
return entry
todo = self._entries.values()
@@ -620,7 +621,7 @@ class Entry_section(Entry):
def ListEntries(self, entries, indent):
"""List the files in the section"""
- Entry.AddEntryInfo(entries, indent, self.name, 'section', self.size,
+ Entry.AddEntryInfo(entries, indent, self.name, self.etype, self.size,
self.image_pos, None, self.offset, self)
for entry in self._entries.values():
entry.ListEntries(entries, indent + 1)