diff options
author | Quentin Schulz <quentin.schulz@theobroma-systems.com> | 2022-09-01 17:51:37 +0200 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2022-09-01 11:36:36 -0600 |
commit | 723a63eeec3ee22d63006dcae593d395698fa55c (patch) | |
tree | 07cb82c8a0e29a891d7e1081bb10a435c613c010 | |
parent | daa2da754afe1bac777f6cb0f05233e0de7b325d (diff) | |
download | u-boot-723a63eeec3ee22d63006dcae593d395698fa55c.zip u-boot-723a63eeec3ee22d63006dcae593d395698fa55c.tar.gz u-boot-723a63eeec3ee22d63006dcae593d395698fa55c.tar.bz2 |
binman: bintool: move version check implementation into bintool class
Version checking has nothing specific to compression/decompression tools
so let's move it to the Bintool class.
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | tools/binman/bintool.py | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py index ec30cef..ef2bdeb 100644 --- a/tools/binman/bintool.py +++ b/tools/binman/bintool.py @@ -53,9 +53,10 @@ class Bintool: # List of bintools to regard as missing missing_list = [] - def __init__(self, name, desc): + def __init__(self, name, desc, version_regex=None): self.name = name self.desc = desc + self.version_regex = version_regex @staticmethod def find_bintool_class(btype): @@ -464,16 +465,27 @@ binaries. It is fairly easy to create new bintools. Just add a new file to the print(f"No method to fetch bintool '{self.name}'") return False - # pylint: disable=R0201 def version(self): """Version handler for a bintool - This should be implemented by the base class - Returns: str: Version string for this bintool """ - return 'unknown' + if self.version_regex is None: + return 'unknown' + + import re + + result = self.run_cmd_result('-V') + out = result.stdout.strip() + if not out: + out = result.stderr.strip() + if not out: + return 'unknown' + + m_version = re.search(self.version_regex, out) + return m_version.group(1) if m_version else out + class BintoolPacker(Bintool): """Tool which compression / decompression entry contents @@ -497,7 +509,7 @@ class BintoolPacker(Bintool): decompress_args=None, fetch_package=None, version_regex=r'(v[0-9.]+)'): desc = '%s compression' % (compression if compression else name) - super().__init__(name, desc) + super().__init__(name, desc, version_regex) if compress_args is None: compress_args = ['--compress'] self.compress_args = compress_args @@ -507,7 +519,6 @@ class BintoolPacker(Bintool): if fetch_package is None: fetch_package = name self.fetch_package = fetch_package - self.version_regex = version_regex def compress(self, indata): """Compress data @@ -557,21 +568,3 @@ class BintoolPacker(Bintool): if method != FETCH_BIN: return None return self.apt_install(self.fetch_package) - - def version(self): - """Version handler - - Returns: - str: Version number - """ - import re - - result = self.run_cmd_result('-V') - 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 |