summaryrefslogtreecommitdiff
path: root/tools/binman
diff options
context:
space:
mode:
Diffstat (limited to 'tools/binman')
-rw-r--r--tools/binman/entry.py21
-rw-r--r--tools/binman/etype/cbfs.py8
-rw-r--r--tools/binman/etype/section.py3
3 files changed, 29 insertions, 3 deletions
diff --git a/tools/binman/entry.py b/tools/binman/entry.py
index 8416214fc9..6a2c6e0d92 100644
--- a/tools/binman/entry.py
+++ b/tools/binman/entry.py
@@ -751,7 +751,26 @@ features to produce new behaviours.
self.contents_size = self.size
ok = self.ProcessContentsUpdate(data)
self.Detail('WriteData: size=%x, ok=%s' % (len(data), ok))
- return ok
+ section_ok = self.section.WriteChildData(self)
+ return ok and section_ok
+
+ def WriteChildData(self, child):
+ """Handle writing the data in a child entry
+
+ This should be called on the child's parent section after the child's
+ data has been updated. It
+
+ This base-class implementation does nothing, since the base Entry object
+ does not have any children.
+
+ Args:
+ child: Child Entry that was written
+
+ Returns:
+ True if the section could be updated successfully, False if the
+ data is such that the section could not updat
+ """
+ return True
def GetSiblingOrder(self):
"""Get the relative order of an entry amoung its siblings
diff --git a/tools/binman/etype/cbfs.py b/tools/binman/etype/cbfs.py
index 2bcdf2fd43..0109fdbb91 100644
--- a/tools/binman/etype/cbfs.py
+++ b/tools/binman/etype/cbfs.py
@@ -169,7 +169,7 @@ class Entry_cbfs(Entry):
self._cbfs_entries = OrderedDict()
self._ReadSubnodes()
- def ObtainContents(self):
+ def ObtainContents(self, skip=None):
arch = cbfs_util.find_arch(self._cbfs_arg)
if arch is None:
self.Raise("Invalid architecture '%s'" % self._cbfs_arg)
@@ -179,7 +179,7 @@ class Entry_cbfs(Entry):
for entry in self._cbfs_entries.values():
# First get the input data and put it in a file. If not available,
# try later.
- if not entry.ObtainContents():
+ if entry != skip and not entry.ObtainContents():
return False
data = entry.GetData()
cfile = None
@@ -274,3 +274,7 @@ class Entry_cbfs(Entry):
reader = self.reader
cfile = reader.files.get(child.name)
return cfile.data if decomp else cfile.orig_data
+
+ def WriteChildData(self, child):
+ self.ObtainContents(skip=child)
+ return True
diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
index 855e291bc4..5d34fc546a 100644
--- a/tools/binman/etype/section.py
+++ b/tools/binman/etype/section.py
@@ -520,3 +520,6 @@ class Entry_section(Entry):
(child.GetPath(), len(indata), child.compress,
len(data)))
return data
+
+ def WriteChildData(self, child):
+ return True