diff options
author | Tom Rini <trini@konsulko.com> | 2022-09-07 08:38:44 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-09-07 08:38:44 -0400 |
commit | fc2f4085d33cf3e877695e24f63d009134382c48 (patch) | |
tree | b3e4a9d689de64cc9c8234431215990cee41a9ea | |
parent | 59c51fa4abbca41d2a4d60c0fe4d8f05fc83fb46 (diff) | |
parent | 7ac6842316ad1d412a49f88d8668923b40b09b5f (diff) | |
download | u-boot-fc2f4085d33cf3e877695e24f63d009134382c48.zip u-boot-fc2f4085d33cf3e877695e24f63d009134382c48.tar.gz u-boot-fc2f4085d33cf3e877695e24f63d009134382c48.tar.bz2 |
Merge tag 'dm-pull-7sep22' of https://source.denx.de/u-boot/custodians/u-boot-dm
binman fixes for bintool support
-rw-r--r-- | tools/binman/bintool.py | 46 | ||||
-rw-r--r-- | tools/binman/btool/btool_gzip.py | 2 | ||||
-rw-r--r-- | tools/binman/btool/bzip2.py | 2 | ||||
-rw-r--r-- | tools/binman/btool/fiptool.py | 11 | ||||
-rw-r--r-- | tools/binman/btool/futility.py | 13 | ||||
-rw-r--r-- | tools/binman/btool/lz4.py | 14 | ||||
-rw-r--r-- | tools/binman/btool/mkimage.py | 18 |
7 files changed, 27 insertions, 79 deletions
diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py index ec30cef..032179a 100644 --- a/tools/binman/bintool.py +++ b/tools/binman/bintool.py @@ -53,9 +53,11 @@ class Bintool: # List of bintools to regard as missing missing_list = [] - def __init__(self, name, desc): + def __init__(self, name, desc, version_regex=None, version_args='-V'): self.name = name self.desc = desc + self.version_regex = version_regex + self.version_args = version_args @staticmethod def find_bintool_class(btype): @@ -464,16 +466,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(self.version_args) + 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 @@ -495,9 +508,9 @@ class BintoolPacker(Bintool): """ def __init__(self, name, compression=None, compress_args=None, decompress_args=None, fetch_package=None, - version_regex=r'(v[0-9.]+)'): + version_regex=r'(v[0-9.]+)', version_args='-V'): desc = '%s compression' % (compression if compression else name) - super().__init__(name, desc) + super().__init__(name, desc, version_regex, version_args) if compress_args is None: compress_args = ['--compress'] self.compress_args = compress_args @@ -507,7 +520,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 +569,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 diff --git a/tools/binman/btool/btool_gzip.py b/tools/binman/btool/btool_gzip.py index 7bea300..70cbc19 100644 --- a/tools/binman/btool/btool_gzip.py +++ b/tools/binman/btool/btool_gzip.py @@ -27,5 +27,5 @@ class Bintoolbtool_gzip(bintool.BintoolPacker): man gzip """ def __init__(self, name): - super().__init__(name, compress_args=[], + super().__init__("gzip", compress_args=[], version_regex=r'gzip ([0-9.]+)') diff --git a/tools/binman/btool/bzip2.py b/tools/binman/btool/bzip2.py index 9be87a6..c3897d6 100644 --- a/tools/binman/btool/bzip2.py +++ b/tools/binman/btool/bzip2.py @@ -27,4 +27,4 @@ class Bintoolbzip2(bintool.BintoolPacker): man bzip2 """ def __init__(self, name): - super().__init__(name, version_regex=r'bzip2.*Version ([0-9.]+)') + super().__init__(name, version_regex=r'bzip2.*Version ([0-9.]+)', version_args='--help') diff --git a/tools/binman/btool/fiptool.py b/tools/binman/btool/fiptool.py index c6d71ce..c80f827 100644 --- a/tools/binman/btool/fiptool.py +++ b/tools/binman/btool/fiptool.py @@ -49,7 +49,7 @@ class Bintoolfiptool(bintool.Bintool): https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/tools-build.html?highlight=fiptool#building-and-using-the-fip-tool """ def __init__(self, name): - super().__init__(name, 'Manipulate ATF FIP files') + super().__init__(name, 'Manipulate ATF FIP files', r'^(.*)$', 'version') def info(self, fname): """Get info on a FIP image @@ -112,12 +112,3 @@ class Bintoolfiptool(bintool.Bintool): 'fiptool', 'tools/fiptool/fiptool') return result - - def version(self): - """Version handler for fiptool - - Returns: - str: Version number of fiptool - """ - out = self.run_cmd('version').strip() - return out or super().version() diff --git a/tools/binman/btool/futility.py b/tools/binman/btool/futility.py index 8d00966..75a05c2 100644 --- a/tools/binman/btool/futility.py +++ b/tools/binman/btool/futility.py @@ -69,7 +69,7 @@ class Bintoolfutility(bintool.Bintool): https://chromium.googlesource.com/chromiumos/platform/vboot/+/refs/heads/main/_vboot_reference/README """ def __init__(self, name): - super().__init__(name, 'Chromium OS firmware utility') + super().__init__(name, 'Chromium OS firmware utility', r'^(.*)$', 'version') def gbb_create(self, fname, sizes): """Create a new Google Binary Block @@ -165,14 +165,3 @@ class Bintoolfutility(bintool.Bintool): fname, tmpdir = self.fetch_from_drive( '1hdsInzsE4aJbmBeJ663kYgjOQyW1I-E0') return fname, tmpdir - - def version(self): - """Version handler for futility - - Returns: - str: Version string for futility - """ - out = self.run_cmd('version').strip() - if not out: - return super().version() - return out diff --git a/tools/binman/btool/lz4.py b/tools/binman/btool/lz4.py index f09c5c8..dc9e379 100644 --- a/tools/binman/btool/lz4.py +++ b/tools/binman/btool/lz4.py @@ -76,7 +76,7 @@ class Bintoollz4(bintool.Bintool): man lz4 """ def __init__(self, name): - super().__init__(name, 'lz4 compression') + super().__init__(name, 'lz4 compression', r'.* (v[0-9.]*),.*') def compress(self, indata): """Compress data with lz4 @@ -126,15 +126,3 @@ class Bintoollz4(bintool.Bintool): if method != bintool.FETCH_BIN: return None return self.apt_install('lz4') - - def version(self): - """Version handler - - Returns: - str: Version number of lz4 - """ - out = self.run_cmd('-V').strip() - if not out: - return super().version() - m_version = re.match(r'.* (v[0-9.]*),.*', out) - return m_version.group(1) if m_version else out diff --git a/tools/binman/btool/mkimage.py b/tools/binman/btool/mkimage.py index c85bfe0..da5f344 100644 --- a/tools/binman/btool/mkimage.py +++ b/tools/binman/btool/mkimage.py @@ -18,11 +18,11 @@ class Bintoolmkimage(bintool.Bintool): Support is provided for fetching this on Debian-like systems, using apt. """ def __init__(self, name): - super().__init__(name, 'Generate image for U-Boot') + super().__init__(name, 'Generate image for U-Boot', r'mkimage version (.*)') # pylint: disable=R0913 def run(self, reset_timestamp=False, output_fname=None, external=False, - pad=None, version=False): + pad=None): """Run mkimage Args: @@ -44,8 +44,6 @@ class Bintoolmkimage(bintool.Bintool): args.append('-t') if output_fname: args += ['-F', output_fname] - if version: - args.append('-V') return self.run_cmd(*args) def fetch(self, method): @@ -66,15 +64,3 @@ class Bintoolmkimage(bintool.Bintool): if method != bintool.FETCH_BIN: return None return self.apt_install('u-boot-tools') - - def version(self): - """Version handler for mkimage - - Returns: - str: Version string for mkimage - """ - out = self.run(version=True).strip() - if not out: - return super().version() - m_version = re.match(r'mkimage version (.*)', out) - return m_version.group(1) if m_version else out |