mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
binman: collection: Set build_done on referenced entries
The collection etype uses phandles in the 'content' property to reference other entries. Mark each referenced entry with build_done to avoid rebuilding the same entry data multiple times. This is important for cases where rebuilding may change the data content, e.g. due to timestamps or random IVs in encryption. Refactor GetContentsByPhandle() to return both the entry object and its data. Signed-off-by: yan wang <yan.wang@softathome.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -45,12 +45,17 @@ class Entry_collection(Entry):
|
||||
self.Info('Getting contents, required=%s' % required)
|
||||
data = bytearray()
|
||||
for entry_phandle in self.content:
|
||||
entry_data = self.section.GetContentsByPhandle(entry_phandle, self,
|
||||
required)
|
||||
entry, entry_data = self.section.GetContentsByPhandle(
|
||||
entry_phandle, self, required)
|
||||
if not required and entry_data is None:
|
||||
self.Info('Contents not available yet')
|
||||
# Data not available yet
|
||||
return None
|
||||
|
||||
# Mark referenced entries as build_done to avoid rebuilding
|
||||
if required:
|
||||
entry.mark_build_done()
|
||||
|
||||
data += entry_data
|
||||
|
||||
self.Info('Returning contents size %x' % len(data))
|
||||
|
||||
@@ -557,7 +557,8 @@ class Entry_section(Entry):
|
||||
return None
|
||||
|
||||
Returns:
|
||||
data from associated entry (as a string), or None if not found
|
||||
tuple: (entry, data) where entry is the Entry object and data is
|
||||
from that entry (as a string), or (entry, None) if data not found
|
||||
"""
|
||||
node = self._node.GetFdt().LookupPhandle(phandle)
|
||||
if not node:
|
||||
@@ -565,7 +566,7 @@ class Entry_section(Entry):
|
||||
entry = self.FindEntryByNode(node)
|
||||
if not entry:
|
||||
source_entry.Raise("Cannot find entry for node '%s'" % node.name)
|
||||
return entry.GetData(required)
|
||||
return entry, entry.GetData(required)
|
||||
|
||||
def LookupEntry(self, entries, sym_name, msg):
|
||||
"""Look up the entry for a binman symbol
|
||||
|
||||
Reference in New Issue
Block a user