binman: Add DecompressData function to entry class
authorStefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Fri, 19 Aug 2022 14:25:24 +0000 (16:25 +0200)
committerSimon Glass <sjg@chromium.org>
Sun, 21 Aug 2022 00:07:33 +0000 (18:07 -0600)
Add a DecompressData function to entry class to allow override in child
classes and to centralize the compress and decompress in a single class.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
tools/binman/entry.py
tools/binman/etype/section.py

index 1795d5c..b42b6df 100644 (file)
@@ -1120,6 +1120,21 @@ features to produce new behaviours.
         data = comp_util.compress(indata, self.compress)
         return data
 
+    def DecompressData(self, indata):
+        """Decompress data according to the entry's compression method
+
+        Args:
+            indata: Data to decompress
+
+        Returns:
+            Decompressed data
+        """
+        data = comp_util.decompress(indata, self.compress)
+        if self.compress != 'none':
+            self.uncomp_size = len(data)
+        self.uncomp_data = data
+        return data
+
     @classmethod
     def UseExpanded(cls, node, etype, new_etype):
         """Check whether to use an expanded entry type
index 8cae22f..6219508 100644 (file)
@@ -13,7 +13,6 @@ import concurrent.futures
 import re
 import sys
 
-from binman import comp_util
 from binman.entry import Entry
 from binman import state
 from dtoc import fdt_util
@@ -777,7 +776,7 @@ class Entry_section(Entry):
         data = parent_data[offset:offset + child.size]
         if decomp:
             indata = data
-            data = comp_util.decompress(indata, child.compress)
+            data = child.DecompressData(indata)
             if child.uncomp_size:
                 tout.info("%s: Decompressing data size %#x with algo '%s' to data size %#x" %
                             (child.GetPath(), len(indata), child.compress,