diff mbox series

binman: bintool: bzip2: fix version function on non-Debian-based systems

Message ID 20220831143208.54124-1-foss+uboot@0leil.net
State Superseded
Delegated to: Simon Glass
Headers show
Series binman: bintool: bzip2: fix version function on non-Debian-based systems | expand

Commit Message

Quentin Schulz Aug. 31, 2022, 2:32 p.m. UTC
From: Quentin Schulz <quentin.schulz@theobroma-systems.com>

Upstream bzip2 1.0.x actually is stuck when running bzip2 -V and
redirecting the output. This is fixed in Debian for about a decade
already in
https://git.launchpad.net/ubuntu/+source/bzip2/tree/debian/patches/20-legacy.patch?h=ubuntu/jammy
and in bzip2 1.1.x (no release yet, see
https://gitlab.com/bzip2/bzip2/-/commit/65179284ceddc43e6388bf4ed8c2d85cf16e1b2f
).

Fedora notably does not have such a patch.

Since bzip2 --help actually prints the version number too, let's use it
instead so that binman works fine on (hopefully) all distributions.

Fixes: 45aa2798008c ("binman: Add bzip2 bintool")
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
---
 tools/binman/btool/bzip2.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Comments

Stefan Herbrechtsmeier Aug. 31, 2022, 2:44 p.m. UTC | #1
Hi Quentin,

Am 31.08.2022 um 16:32 schrieb Quentin Schulz:
> From: Quentin Schulz <quentin.schulz@theobroma-systems.com>
> 
> Upstream bzip2 1.0.x actually is stuck when running bzip2 -V and
> redirecting the output. This is fixed in Debian for about a decade
> already in
> https://git.launchpad.net/ubuntu/+source/bzip2/tree/debian/patches/20-legacy.patch?h=ubuntu/jammy
> and in bzip2 1.1.x (no release yet, see
> https://gitlab.com/bzip2/bzip2/-/commit/65179284ceddc43e6388bf4ed8c2d85cf16e1b2f
> ).
> 
> Fedora notably does not have such a patch.
> 
> Since bzip2 --help actually prints the version number too, let's use it
> instead so that binman works fine on (hopefully) all distributions.
> 
> Fixes: 45aa2798008c ("binman: Add bzip2 bintool")
> Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
> ---
>   tools/binman/btool/bzip2.py | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/tools/binman/btool/bzip2.py b/tools/binman/btool/bzip2.py
> index 9be87a621f..b375140da1 100644
> --- a/tools/binman/btool/bzip2.py
> +++ b/tools/binman/btool/bzip2.py
> @@ -28,3 +28,21 @@ class Bintoolbzip2(bintool.BintoolPacker):
>       """
>       def __init__(self, name):
>           super().__init__(name, version_regex=r'bzip2.*Version ([0-9.]+)')
> +
> +    def version(self):
> +        """Version handler
> +
> +        Returns:
> +            str: Version number for bzip2
> +        """
> +        import re
> +
> +        result = self.run_cmd_result('--help')
> +        out = result.stdout.strip()
> +        if not out:
> +            out = result.stderr.strip()
> +        if not out:
> +            return super().version()
> +
> +        m_version = re.search(self.version_regex, out)
> +        return m_version.group(1) if m_version else out

Can you please add an option to BintoolPacker class to change the 
version args like it is done for the compress args to avoid the code 
duplication.

Regards
   Stefan
diff mbox series

Patch

diff --git a/tools/binman/btool/bzip2.py b/tools/binman/btool/bzip2.py
index 9be87a621f..b375140da1 100644
--- a/tools/binman/btool/bzip2.py
+++ b/tools/binman/btool/bzip2.py
@@ -28,3 +28,21 @@  class Bintoolbzip2(bintool.BintoolPacker):
     """
     def __init__(self, name):
         super().__init__(name, version_regex=r'bzip2.*Version ([0-9.]+)')
+
+    def version(self):
+        """Version handler
+
+        Returns:
+            str: Version number for bzip2
+        """
+        import re
+
+        result = self.run_cmd_result('--help')
+        out = result.stdout.strip()
+        if not out:
+            out = result.stderr.strip()
+        if not out:
+            return super().version()
+
+        m_version = re.search(self.version_regex, out)
+        return m_version.group(1) if m_version else out