Message ID | 20220819142538.24847-19-stefan.herbrechtsmeier-oss@weidmueller.com |
---|---|
State | Accepted |
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> > > Add gzip bintool to binman to support on-the-fly compression of Linux > kernel images and FPGA bitstreams. The SPL basic fitImage implementation > supports only gzip decompression. > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > --- > > (no changes since v5) > > Changes in v5: > - Add algorithm name to entry.py > - Add tool name to ftest.py > > Changes in v2: > - Add commit to add gzip bintool > > tools/binman/btool/gzip.py | 31 +++++++++++++++++++++++++++++++ > tools/binman/entry.py | 2 +- > tools/binman/ftest.py | 2 +- > 3 files changed, 33 insertions(+), 2 deletions(-) > create mode 100644 tools/binman/btool/gzip.py > Reviewed-by: Simon Glass <sjg@chromium.org>
Hi Stefan, On Sat, 20 Aug 2022 at 15:33, Simon Glass <sjg@chromium.org> wrote: > > On Fri, 19 Aug 2022 at 08:26, Stefan Herbrechtsmeier > <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: > > > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > Add gzip bintool to binman to support on-the-fly compression of Linux > > kernel images and FPGA bitstreams. The SPL basic fitImage implementation > > supports only gzip decompression. > > > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > --- > > > > (no changes since v5) > > > > Changes in v5: > > - Add algorithm name to entry.py > > - Add tool name to ftest.py > > > > Changes in v2: > > - Add commit to add gzip bintool > > > > tools/binman/btool/gzip.py | 31 +++++++++++++++++++++++++++++++ > > tools/binman/entry.py | 2 +- > > tools/binman/ftest.py | 2 +- > > 3 files changed, 33 insertions(+), 2 deletions(-) > > create mode 100644 tools/binman/btool/gzip.py > > > > Reviewed-by: Simon Glass <sjg@chromium.org> Unfortunately this conflicts with the system gzip.py module so I have had to rework this a little. - Simon Applied to u-boot-dm, thanks!
Hi Stefan, On Sat, 20 Aug 2022 at 15:33, Simon Glass <sjg@chromium.org> wrote: > > On Fri, 19 Aug 2022 at 08:26, Stefan Herbrechtsmeier > <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: > > > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > Add gzip bintool to binman to support on-the-fly compression of Linux > > kernel images and FPGA bitstreams. The SPL basic fitImage implementation > > supports only gzip decompression. > > > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > --- > > > > (no changes since v5) > > > > Changes in v5: > > - Add algorithm name to entry.py > > - Add tool name to ftest.py > > > > Changes in v2: > > - Add commit to add gzip bintool > > > > tools/binman/btool/gzip.py | 31 +++++++++++++++++++++++++++++++ > > tools/binman/entry.py | 2 +- > > tools/binman/ftest.py | 2 +- > > 3 files changed, 33 insertions(+), 2 deletions(-) > > create mode 100644 tools/binman/btool/gzip.py > > > > Reviewed-by: Simon Glass <sjg@chromium.org> Unfortunately this conflicts with the system gzip.py module so I have had to rework this a little. - Simon
Hi Simon, Am 21.08.2022 um 02:10 schrieb Simon Glass: > Hi Stefan, > > On Sat, 20 Aug 2022 at 15:33, Simon Glass <sjg@chromium.org> wrote: >> >> On Fri, 19 Aug 2022 at 08:26, Stefan Herbrechtsmeier >> <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: >>> >>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>> >>> Add gzip bintool to binman to support on-the-fly compression of Linux >>> kernel images and FPGA bitstreams. The SPL basic fitImage implementation >>> supports only gzip decompression. >>> >>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>> >>> --- >>> >>> (no changes since v5) >>> >>> Changes in v5: >>> - Add algorithm name to entry.py >>> - Add tool name to ftest.py >>> >>> Changes in v2: >>> - Add commit to add gzip bintool >>> >>> tools/binman/btool/gzip.py | 31 +++++++++++++++++++++++++++++++ >>> tools/binman/entry.py | 2 +- >>> tools/binman/ftest.py | 2 +- >>> 3 files changed, 33 insertions(+), 2 deletions(-) >>> create mode 100644 tools/binman/btool/gzip.py >>> >> >> Reviewed-by: Simon Glass <sjg@chromium.org> > > Unfortunately this conflicts with the system gzip.py module so I have > had to rework this a little. Should we use bz2, gzip and lzma modules instead of the bintools? Regards Stefan
Hi Stefan, On Mon, 22 Aug 2022 at 01:07, Stefan Herbrechtsmeier <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: > > Hi Simon, > > Am 21.08.2022 um 02:10 schrieb Simon Glass: > > Hi Stefan, > > > > On Sat, 20 Aug 2022 at 15:33, Simon Glass <sjg@chromium.org> wrote: > >> > >> On Fri, 19 Aug 2022 at 08:26, Stefan Herbrechtsmeier > >> <stefan.herbrechtsmeier-oss@weidmueller.com> wrote: > >>> > >>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > >>> > >>> Add gzip bintool to binman to support on-the-fly compression of Linux > >>> kernel images and FPGA bitstreams. The SPL basic fitImage implementation > >>> supports only gzip decompression. > >>> > >>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > >>> > >>> --- > >>> > >>> (no changes since v5) > >>> > >>> Changes in v5: > >>> - Add algorithm name to entry.py > >>> - Add tool name to ftest.py > >>> > >>> Changes in v2: > >>> - Add commit to add gzip bintool > >>> > >>> tools/binman/btool/gzip.py | 31 +++++++++++++++++++++++++++++++ > >>> tools/binman/entry.py | 2 +- > >>> tools/binman/ftest.py | 2 +- > >>> 3 files changed, 33 insertions(+), 2 deletions(-) > >>> create mode 100644 tools/binman/btool/gzip.py > >>> > >> > >> Reviewed-by: Simon Glass <sjg@chromium.org> > > > > Unfortunately this conflicts with the system gzip.py module so I have > > had to rework this a little. > > Should we use bz2, gzip and lzma modules instead of the bintools? We could, but it is harder for people to replicate the behaviour in that case. Also some of those may not be installed. There is no actual ambiguity with the module names, except that pylint gets confused. I don't have strong opinions about this, but however it works needs to be easy for people to fetch tools. Regards, Simon
diff --git a/tools/binman/btool/gzip.py b/tools/binman/btool/gzip.py new file mode 100644 index 0000000000..0d75028120 --- /dev/null +++ b/tools/binman/btool/gzip.py @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright (C) 2022 Weidmüller Interface GmbH & Co. KG +# Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> +# +"""Bintool implementation for gzip + +gzip allows compression and decompression of files. + +Documentation is available via:: + + man gzip +""" + +from binman import bintool + +# pylint: disable=C0103 +class Bintoolgzip(bintool.BintoolPacker): + """Compression/decompression using the gzip algorithm + + This bintool supports running `gzip` to compress and decompress data, as + used by binman. + + It is also possible to fetch the tool, which uses `apt` to install it. + + Documentation is available via:: + + man gzip + """ + def __init__(self, name): + super().__init__(name, compress_args=[], + version_regex=r'gzip ([0-9.]+)') diff --git a/tools/binman/entry.py b/tools/binman/entry.py index a0c0a02f5d..930c7910d2 100644 --- a/tools/binman/entry.py +++ b/tools/binman/entry.py @@ -1157,7 +1157,7 @@ features to produce new behaviours. """ algo = self.compress if algo != 'none': - algos = ['bzip2', 'lz4', 'lzma'] + algos = ['bzip2', 'gzip', 'lz4', 'lzma'] if algo not in algos: raise ValueError("Unknown algorithm '%s'" % algo) names = {'lzma': 'lzma_alone'} diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index 9fa8e9e049..911c955cba 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -107,7 +107,7 @@ BASE_DTB_PROPS = ['offset', 'size', 'image-pos'] REPACK_DTB_PROPS = ['orig-offset', 'orig-size'] # Supported compression bintools -COMP_BINTOOLS = ['bzip2', 'lz4', 'lzma_alone'] +COMP_BINTOOLS = ['bzip2', 'gzip', 'lz4', 'lzma_alone'] class TestFunctional(unittest.TestCase): """Functional tests for binman