Message ID | 20220819142538.24847-15-stefan.herbrechtsmeier-oss@weidmueller.com |
---|---|
State | Accepted |
Commit | c3665a896e30578f8e5d6f1927da304efcd14735 |
Delegated to: | Simon Glass |
Headers | show |
Series | binman: Rework compression support | expand |
On Fri, 19 Aug 2022 at 08:26, Stefan Herbrechtsmeier <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > Handle missing compression tools by returning empty data and record > missing bintool. > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > --- > > Changes in v6: > - Set data with tools.get_bytes(0, 1024) instead returning > > Changes in v5: > - Use record_missing_bintool function > - Use tools.get_bytes function > - Add support to DecompressData function > - Reuse 85_compress_section.dts file > - Remove 236_compress_dtb_missing_bintool.dts file > > Changes in v4: > - Add missing 236_compress_dtb_missing_bintool.dts file > > Changes in v3: > - Add commit to support missing compression tools > > tools/binman/entry.py | 14 +++++++++++--- > tools/binman/entry_test.py | 9 +++++++++ > tools/binman/ftest.py | 9 +++++++++ > 3 files changed, 29 insertions(+), 3 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org>
On Fri, 19 Aug 2022 at 08:26, Stefan Herbrechtsmeier <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > Handle missing compression tools by returning empty data and record > missing bintool. > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > --- > > Changes in v6: > - Set data with tools.get_bytes(0, 1024) instead returning > > Changes in v5: > - Use record_missing_bintool function > - Use tools.get_bytes function > - Add support to DecompressData function > - Reuse 85_compress_section.dts file > - Remove 236_compress_dtb_missing_bintool.dts file > > Changes in v4: > - Add missing 236_compress_dtb_missing_bintool.dts file > > Changes in v3: > - Add commit to support missing compression tools > > tools/binman/entry.py | 14 +++++++++++--- > tools/binman/entry_test.py | 9 +++++++++ > tools/binman/ftest.py | 9 +++++++++ > 3 files changed, 29 insertions(+), 3 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot-dm, thanks!
diff --git a/tools/binman/entry.py b/tools/binman/entry.py index 5fa826aa71..48883bac3a 100644 --- a/tools/binman/entry.py +++ b/tools/binman/entry.py @@ -1084,7 +1084,11 @@ features to produce new behaviours. self.uncomp_data = indata if self.compress != 'none': self.uncomp_size = len(indata) - data = self.comp_bintool.compress(indata) + if self.comp_bintool.is_present(): + data = self.comp_bintool.compress(indata) + else: + self.record_missing_bintool(self.comp_bintool) + data = tools.get_bytes(0, 1024) else: data = indata return data @@ -1099,8 +1103,12 @@ features to produce new behaviours. Decompressed data """ if self.compress != 'none': - data = self.comp_bintool.decompress(indata) - self.uncomp_size = len(data) + if self.comp_bintool.is_present(): + data = self.comp_bintool.decompress(indata) + self.uncomp_size = len(data) + else: + self.record_missing_bintool(self.comp_bintool) + data = tools.get_bytes(0, 1024) else: data = indata self.uncomp_data = data diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py index 1d60076be1..aa470c5816 100644 --- a/tools/binman/entry_test.py +++ b/tools/binman/entry_test.py @@ -105,6 +105,15 @@ class TestEntry(unittest.TestCase): self.assertTrue(isinstance(ent, Entry_blob)) self.assertEquals('missing', ent.etype) + def testDecompressData(self): + """Test the DecompressData() method of the base class""" + base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb') + base.compress = 'lz4' + bintools = {} + base.comp_bintool = base.AddBintool(bintools, '_testing') + self.assertEquals(tools.get_bytes(0, 1024), base.CompressData(b'abc')) + self.assertEquals(tools.get_bytes(0, 1024), base.DecompressData(b'abc')) + if __name__ == "__main__": unittest.main() diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index 939b265d7c..ffcd7d2567 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -4422,6 +4422,15 @@ class TestFunctional(unittest.TestCase): } self.assertEqual(expected, props) + def testLz4Missing(self): + """Test that binman still produces an image if lz4 is missing""" + with test_util.capture_sys_output() as (_, stderr): + self._DoTestFile('185_compress_section.dts', + force_missing_bintools='lz4') + err = stderr.getvalue() + self.assertRegex(err, + "Image 'main-section'.*missing bintools.*: lz4") + def testCompressExtra(self): """Test compression of a section with no fixed size""" self._CheckLz4()