binman: Select compression bintools in cbfs_util class
authorStefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Fri, 19 Aug 2022 14:25:29 +0000 (16:25 +0200)
committerSimon Glass <sjg@chromium.org>
Sun, 21 Aug 2022 00:07:33 +0000 (18:07 -0600)
Select the lz4 and lzma_alone bintools in cbfs_util class to centralize
the supported compression algorithm evaluation inside the class and over
multiple classes.

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

index a1836f4..7bd3d89 100644 (file)
@@ -20,7 +20,7 @@ import io
 import struct
 import sys
 
-from binman import comp_util
+from binman import bintool
 from binman import elf
 from patman import command
 from patman import tools
@@ -236,14 +236,18 @@ class CbfsFile(object):
         self.data_len = len(data)
         self.erase_byte = None
         self.size = None
+        if self.compress == COMPRESS_LZ4:
+            self.comp_bintool = bintool.Bintool.create('lz4')
+        elif self.compress == COMPRESS_LZMA:
+            self.comp_bintool = bintool.Bintool.create('lzma_alone')
+        else:
+            self.comp_bintool = None
 
     def decompress(self):
         """Handle decompressing data if necessary"""
         indata = self.data
-        if self.compress == COMPRESS_LZ4:
-            data = comp_util.decompress(indata, 'lz4')
-        elif self.compress == COMPRESS_LZMA:
-            data = comp_util.decompress(indata, 'lzma')
+        if self.comp_bintool:
+            data = self.comp_bintool.decompress(indata)
         else:
             data = indata
         self.memlen = len(data)
@@ -361,10 +365,8 @@ class CbfsFile(object):
             data = elf_data.data
         elif self.ftype == TYPE_RAW:
             orig_data = data
-            if self.compress == COMPRESS_LZ4:
-                data = comp_util.compress(orig_data, 'lz4')
-            elif self.compress == COMPRESS_LZMA:
-                data = comp_util.compress(orig_data, 'lzma')
+            if self.comp_bintool:
+                data = self.comp_bintool.compress(orig_data)
             self.memlen = len(orig_data)
             self.data_len = len(data)
             attr = struct.pack(ATTR_COMPRESSION_FORMAT,
index f86b295..e0f792f 100755 (executable)
@@ -19,7 +19,6 @@ import unittest
 from binman import bintool
 from binman import cbfs_util
 from binman.cbfs_util import CbfsWriter
-from binman import comp_util
 from binman import elf
 from patman import test_util
 from patman import tools
@@ -50,7 +49,8 @@ class TestCbfs(unittest.TestCase):
         cls.cbfstool = bintool.Bintool.create('cbfstool')
         cls.have_cbfstool = cls.cbfstool.is_present()
 
-        cls.have_lz4 = comp_util.HAVE_LZ4
+        lz4 = bintool.Bintool.create('lz4')
+        cls.have_lz4 = lz4.is_present()
 
     @classmethod
     def tearDownClass(cls):