[PATCH 14/25] binman: Store the original data before compression
Simon Glass
sjg at chromium.org
Mon Oct 19 04:41:27 CEST 2020
When compressing an entry, the original uncompressed data is overwritten.
Store it so it is available if needed.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
tools/binman/entry.py | 7 ++++++-
tools/binman/ftest.py | 12 ++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/tools/binman/entry.py b/tools/binman/entry.py
index 0421129c031..d701eaff8fd 100644
--- a/tools/binman/entry.py
+++ b/tools/binman/entry.py
@@ -60,7 +60,10 @@ class Entry(object):
the containing section, 0 if none. The pad bytes become part of
the entry.
data: Contents of entry (string of bytes). This does not include
- padding created by pad_before or pad_after
+ padding created by pad_before or pad_after. If the entry is
+ compressed, this contains the compressed data.
+ uncomp_data: Original uncompressed data, if this entry is compressed,
+ else None
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
@@ -83,6 +86,7 @@ class Entry(object):
self.pre_reset_size = None
self.uncomp_size = None
self.data = None
+ self.uncomp_data = None
self.contents_size = 0
self.align = None
self.align_size = None
@@ -856,6 +860,7 @@ features to produce new behaviours.
Returns:
Compressed data (first word is the compressed size)
"""
+ self.uncomp_data = indata
if self.compress != 'none':
self.uncomp_size = len(indata)
data = tools.Compress(indata, self.compress)
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index a43f79cc248..7360e2ebaba 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -1808,6 +1808,18 @@ class TestFunctional(unittest.TestCase):
props = self._GetPropTree(dtb, ['size', 'uncomp-size'])
orig = self._decompress(data)
self.assertEquals(COMPRESS_DATA, orig)
+
+ # Do a sanity check on various fields
+ image = control.images['image']
+ entries = image.GetEntries()
+ self.assertEqual(1, len(entries))
+
+ entry = entries['blob']
+ self.assertEqual(COMPRESS_DATA, entry.uncomp_data)
+ self.assertEqual(len(COMPRESS_DATA), entry.uncomp_size)
+ orig = self._decompress(entry.data)
+ self.assertEqual(orig, entry.uncomp_data)
+
expected = {
'blob:uncomp-size': len(COMPRESS_DATA),
'blob:size': len(data),
--
2.29.0.rc1.297.gfa9743e501-goog
More information about the U-Boot
mailing list