diff mbox series

[v6,18/21] binman: Add gzip bintool

Message ID 20220819142538.24847-19-stefan.herbrechtsmeier-oss@weidmueller.com
State Accepted
Delegated to: Simon Glass
Headers show
Series binman: Rework compression support | expand

Commit Message

Stefan Herbrechtsmeier Aug. 19, 2022, 2:25 p.m. UTC
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

Comments

Simon Glass Aug. 20, 2022, 9:33 p.m. UTC | #1
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>
Simon Glass Aug. 21, 2022, 12:10 a.m. UTC | #2
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!
Simon Glass Aug. 21, 2022, 12:11 a.m. UTC | #3
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
Stefan Herbrechtsmeier Aug. 22, 2022, 7:07 a.m. UTC | #4
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
Simon Glass Aug. 22, 2022, 4:38 p.m. UTC | #5
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 mbox series

Patch

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