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

Quentin Schulz foss+uboot at 0leil.net
Wed Aug 31 16:32:08 CEST 2022


From: Quentin Schulz <quentin.schulz at 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 at 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
-- 
2.37.2



More information about the U-Boot mailing list