mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-06 23:01:36 +00: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
5 changed files with 24 additions and 25 deletions
|
@ -692,7 +692,7 @@ Properties / Entry arguments: (see binman README for more information)
|
||||||
when writing out the map
|
when writing out the map
|
||||||
|
|
||||||
Properties:
|
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
|
missing their contents. The second will produce an image but of
|
||||||
course it will not work.
|
course it will not work.
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,10 @@ class Entry(object):
|
||||||
compress: Compression algoithm used (e.g. 'lz4'), 'none' if none
|
compress: Compression algoithm used (e.g. 'lz4'), 'none' if none
|
||||||
orig_offset: Original offset value read from node
|
orig_offset: Original offset value read from node
|
||||||
orig_size: Original size 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=''):
|
def __init__(self, section, etype, node, name_prefix=''):
|
||||||
# Put this here to allow entry-docs and help to work without libfdt
|
# 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._expand_size = False
|
||||||
self.compress = 'none'
|
self.compress = 'none'
|
||||||
self.missing = False
|
self.missing = False
|
||||||
|
self.external = False
|
||||||
|
self.allow_missing = False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def Lookup(node_path, etype):
|
def Lookup(node_path, etype):
|
||||||
|
@ -813,3 +819,11 @@ features to produce new behaviours.
|
||||||
"""
|
"""
|
||||||
if self.missing:
|
if self.missing:
|
||||||
missing_list.append(self)
|
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):
|
def ObtainContents(self):
|
||||||
self._filename = self.GetDefaultFilename()
|
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()
|
self.ReadBlobContents()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -26,14 +26,3 @@ class Entry_blob_ext(Entry_blob):
|
||||||
def __init__(self, section, etype, node):
|
def __init__(self, section, etype, node):
|
||||||
Entry_blob.__init__(self, section, etype, node)
|
Entry_blob.__init__(self, section, etype, node)
|
||||||
self.external = True
|
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
|
when writing out the map
|
||||||
|
|
||||||
Properties:
|
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
|
missing their contents. The second will produce an image but of
|
||||||
course it will not work.
|
course it will not work.
|
||||||
|
|
||||||
|
@ -54,8 +54,6 @@ class Entry_section(Entry):
|
||||||
self._sort = False
|
self._sort = False
|
||||||
self._skip_at_start = None
|
self._skip_at_start = None
|
||||||
self._end_4gb = False
|
self._end_4gb = False
|
||||||
self._allow_missing = False
|
|
||||||
self.missing = False
|
|
||||||
|
|
||||||
def ReadNode(self):
|
def ReadNode(self):
|
||||||
"""Read properties from the image node"""
|
"""Read properties from the image node"""
|
||||||
|
@ -549,18 +547,10 @@ class Entry_section(Entry):
|
||||||
Args:
|
Args:
|
||||||
allow_missing: True if allowed, False if not allowed
|
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():
|
for entry in self._entries.values():
|
||||||
entry.SetAllowMissing(allow_missing)
|
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):
|
def CheckMissing(self, missing_list):
|
||||||
"""Check if any entries in this section have missing external blobs
|
"""Check if any entries in this section have missing external blobs
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue