mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-15 07:43:33 +08:00
binman: Move 'external' support into base class
At present we have an Entry_blob_ext which implement a blob which holds an external binary. We need to support other entry types that hold external binaries, e.g. Entry_blob_named_by_arg. Move the support into the base Entry class to allow this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
211cfa503f
commit
8795898a53
@ -692,7 +692,7 @@ Properties / Entry arguments: (see binman README for more information)
|
||||
when writing out the map
|
||||
|
||||
Properties:
|
||||
_allow_missing: True if this section permits external blobs to be
|
||||
allow_missing: True if this section permits external blobs to be
|
||||
missing their contents. The second will produce an image but of
|
||||
course it will not work.
|
||||
|
||||
|
@ -57,6 +57,10 @@ class Entry(object):
|
||||
compress: Compression algoithm used (e.g. 'lz4'), 'none' if none
|
||||
orig_offset: Original offset value read from node
|
||||
orig_size: Original size value read from node
|
||||
missing: True if this entry is missing its contents
|
||||
allow_missing: Allow children of this entry to be missing (used by
|
||||
subclasses such as Entry_section)
|
||||
external: True if this entry contains an external binary blob
|
||||
"""
|
||||
def __init__(self, section, etype, node, name_prefix=''):
|
||||
# Put this here to allow entry-docs and help to work without libfdt
|
||||
@ -83,6 +87,8 @@ class Entry(object):
|
||||
self._expand_size = False
|
||||
self.compress = 'none'
|
||||
self.missing = False
|
||||
self.external = False
|
||||
self.allow_missing = False
|
||||
|
||||
@staticmethod
|
||||
def Lookup(node_path, etype):
|
||||
@ -813,3 +819,11 @@ features to produce new behaviours.
|
||||
"""
|
||||
if self.missing:
|
||||
missing_list.append(self)
|
||||
|
||||
def GetAllowMissing(self):
|
||||
"""Get whether a section allows missing external blobs
|
||||
|
||||
Returns:
|
||||
True if allowed, False if not allowed
|
||||
"""
|
||||
return self.allow_missing
|
||||
|
@ -37,7 +37,13 @@ class Entry_blob(Entry):
|
||||
|
||||
def ObtainContents(self):
|
||||
self._filename = self.GetDefaultFilename()
|
||||
self._pathname = tools.GetInputFilename(self._filename)
|
||||
self._pathname = tools.GetInputFilename(self._filename,
|
||||
self.section.GetAllowMissing())
|
||||
# Allow the file to be missing
|
||||
if self.external and not self._pathname:
|
||||
self.SetContents(b'')
|
||||
self.missing = True
|
||||
return True
|
||||
self.ReadBlobContents()
|
||||
return True
|
||||
|
||||
|
@ -26,14 +26,3 @@ class Entry_blob_ext(Entry_blob):
|
||||
def __init__(self, section, etype, node):
|
||||
Entry_blob.__init__(self, section, etype, node)
|
||||
self.external = True
|
||||
|
||||
def ObtainContents(self):
|
||||
self._filename = self.GetDefaultFilename()
|
||||
self._pathname = tools.GetInputFilename(self._filename,
|
||||
self.section.GetAllowMissing())
|
||||
# Allow the file to be missing
|
||||
if not self._pathname:
|
||||
self.SetContents(b'')
|
||||
self.missing = True
|
||||
return True
|
||||
return super().ObtainContents()
|
||||
|
@ -35,7 +35,7 @@ class Entry_section(Entry):
|
||||
when writing out the map
|
||||
|
||||
Properties:
|
||||
_allow_missing: True if this section permits external blobs to be
|
||||
allow_missing: True if this section permits external blobs to be
|
||||
missing their contents. The second will produce an image but of
|
||||
course it will not work.
|
||||
|
||||
@ -54,8 +54,6 @@ class Entry_section(Entry):
|
||||
self._sort = False
|
||||
self._skip_at_start = None
|
||||
self._end_4gb = False
|
||||
self._allow_missing = False
|
||||
self.missing = False
|
||||
|
||||
def ReadNode(self):
|
||||
"""Read properties from the image node"""
|
||||
@ -549,18 +547,10 @@ class Entry_section(Entry):
|
||||
Args:
|
||||
allow_missing: True if allowed, False if not allowed
|
||||
"""
|
||||
self._allow_missing = allow_missing
|
||||
self.allow_missing = allow_missing
|
||||
for entry in self._entries.values():
|
||||
entry.SetAllowMissing(allow_missing)
|
||||
|
||||
def GetAllowMissing(self):
|
||||
"""Get whether a section allows missing external blobs
|
||||
|
||||
Returns:
|
||||
True if allowed, False if not allowed
|
||||
"""
|
||||
return self._allow_missing
|
||||
|
||||
def CheckMissing(self, missing_list):
|
||||
"""Check if any entries in this section have missing external blobs
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user