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 |
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 --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