summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2022-09-07 08:38:44 -0400
committerTom Rini <trini@konsulko.com>2022-09-07 08:38:44 -0400
commitfc2f4085d33cf3e877695e24f63d009134382c48 (patch)
treeb3e4a9d689de64cc9c8234431215990cee41a9ea
parent59c51fa4abbca41d2a4d60c0fe4d8f05fc83fb46 (diff)
parent7ac6842316ad1d412a49f88d8668923b40b09b5f (diff)
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.py46
-rw-r--r--tools/binman/btool/btool_gzip.py2
-rw-r--r--tools/binman/btool/bzip2.py2
-rw-r--r--tools/binman/btool/fiptool.py11
-rw-r--r--tools/binman/btool/futility.py13
-rw-r--r--tools/binman/btool/lz4.py14
-rw-r--r--tools/binman/btool/mkimage.py18
7 files changed, 27 insertions, 79 deletions
diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py
index ec30ceff74..032179a99d 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 7bea300b5d..70cbc19f04 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 9be87a621f..c3897d63ac 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 c6d71cebc2..c80f8275c4 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 8d00966a9d..75a05c2ac6 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 f09c5c8904..dc9e37921a 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 c85bfe053c..da5f344162 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