mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 13:56:20 +00:00
binman fixes for bintool support
-----BEGIN PGP SIGNATURE----- iQFFBAABCgAvFiEEslwAIq+Gp8wWVbYnfxc6PpAIreYFAmMYjgoRHHNqZ0BjaHJv bWl1bS5vcmcACgkQfxc6PpAIrea87Af9H605i3fkhZEmQUoGLgYVHnL6HTnWqVOk 1H7ysnSGkErwZKx+jQXG6dbW0Rkx4yPDYUMRkXQOdJPpgHZXlcp7FtOin3jT00Z/ M0+Se4NF4pUBqBdaNWtsSAicS+2snfbcHErI60XU2bu/E86Es+rqFstUZfd/Hcw9 HxFOf9pT8dbokg1K3hYh1tBco0NC4+iHfWheDWV9qLOQxG5LdzCWlBKkt9pegljH NHKrjMYvpU68e80I8rPIppJxyHipZgXorr9JKFLqS6cNgolbPF+cy9K10zEObno5 DCY7IuBv2BmY5ghwW2oN90gXkT0jqatSBbYBlu8oG0ioyRY2MDv6Yw== =i2Ik -----END PGP SIGNATURE----- Merge tag 'dm-pull-7sep22' of https://source.denx.de/u-boot/custodians/u-boot-dm binman fixes for bintool support
This commit is contained in:
commit
fc2f4085d3
7 changed files with 27 additions and 79 deletions
|
@ -53,9 +53,11 @@ class Bintool:
|
||||||
# List of bintools to regard as missing
|
# List of bintools to regard as missing
|
||||||
missing_list = []
|
missing_list = []
|
||||||
|
|
||||||
def __init__(self, name, desc):
|
def __init__(self, name, desc, version_regex=None, version_args='-V'):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.desc = desc
|
self.desc = desc
|
||||||
|
self.version_regex = version_regex
|
||||||
|
self.version_args = version_args
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def find_bintool_class(btype):
|
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}'")
|
print(f"No method to fetch bintool '{self.name}'")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# pylint: disable=R0201
|
|
||||||
def version(self):
|
def version(self):
|
||||||
"""Version handler for a bintool
|
"""Version handler for a bintool
|
||||||
|
|
||||||
This should be implemented by the base class
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: Version string for this bintool
|
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):
|
class BintoolPacker(Bintool):
|
||||||
"""Tool which compression / decompression entry contents
|
"""Tool which compression / decompression entry contents
|
||||||
|
@ -495,9 +508,9 @@ class BintoolPacker(Bintool):
|
||||||
"""
|
"""
|
||||||
def __init__(self, name, compression=None, compress_args=None,
|
def __init__(self, name, compression=None, compress_args=None,
|
||||||
decompress_args=None, fetch_package=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)
|
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:
|
if compress_args is None:
|
||||||
compress_args = ['--compress']
|
compress_args = ['--compress']
|
||||||
self.compress_args = compress_args
|
self.compress_args = compress_args
|
||||||
|
@ -507,7 +520,6 @@ class BintoolPacker(Bintool):
|
||||||
if fetch_package is None:
|
if fetch_package is None:
|
||||||
fetch_package = name
|
fetch_package = name
|
||||||
self.fetch_package = fetch_package
|
self.fetch_package = fetch_package
|
||||||
self.version_regex = version_regex
|
|
||||||
|
|
||||||
def compress(self, indata):
|
def compress(self, indata):
|
||||||
"""Compress data
|
"""Compress data
|
||||||
|
@ -557,21 +569,3 @@ class BintoolPacker(Bintool):
|
||||||
if method != FETCH_BIN:
|
if method != FETCH_BIN:
|
||||||
return None
|
return None
|
||||||
return self.apt_install(self.fetch_package)
|
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
|
|
||||||
|
|
|
@ -27,5 +27,5 @@ class Bintoolbtool_gzip(bintool.BintoolPacker):
|
||||||
man gzip
|
man gzip
|
||||||
"""
|
"""
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
super().__init__(name, compress_args=[],
|
super().__init__("gzip", compress_args=[],
|
||||||
version_regex=r'gzip ([0-9.]+)')
|
version_regex=r'gzip ([0-9.]+)')
|
||||||
|
|
|
@ -27,4 +27,4 @@ class Bintoolbzip2(bintool.BintoolPacker):
|
||||||
man bzip2
|
man bzip2
|
||||||
"""
|
"""
|
||||||
def __init__(self, name):
|
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')
|
||||||
|
|
|
@ -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
|
https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/tools-build.html?highlight=fiptool#building-and-using-the-fip-tool
|
||||||
"""
|
"""
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
super().__init__(name, 'Manipulate ATF FIP files')
|
super().__init__(name, 'Manipulate ATF FIP files', r'^(.*)$', 'version')
|
||||||
|
|
||||||
def info(self, fname):
|
def info(self, fname):
|
||||||
"""Get info on a FIP image
|
"""Get info on a FIP image
|
||||||
|
@ -112,12 +112,3 @@ class Bintoolfiptool(bintool.Bintool):
|
||||||
'fiptool',
|
'fiptool',
|
||||||
'tools/fiptool/fiptool')
|
'tools/fiptool/fiptool')
|
||||||
return result
|
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()
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ class Bintoolfutility(bintool.Bintool):
|
||||||
https://chromium.googlesource.com/chromiumos/platform/vboot/+/refs/heads/main/_vboot_reference/README
|
https://chromium.googlesource.com/chromiumos/platform/vboot/+/refs/heads/main/_vboot_reference/README
|
||||||
"""
|
"""
|
||||||
def __init__(self, name):
|
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):
|
def gbb_create(self, fname, sizes):
|
||||||
"""Create a new Google Binary Block
|
"""Create a new Google Binary Block
|
||||||
|
@ -165,14 +165,3 @@ class Bintoolfutility(bintool.Bintool):
|
||||||
fname, tmpdir = self.fetch_from_drive(
|
fname, tmpdir = self.fetch_from_drive(
|
||||||
'1hdsInzsE4aJbmBeJ663kYgjOQyW1I-E0')
|
'1hdsInzsE4aJbmBeJ663kYgjOQyW1I-E0')
|
||||||
return fname, tmpdir
|
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
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ class Bintoollz4(bintool.Bintool):
|
||||||
man lz4
|
man lz4
|
||||||
"""
|
"""
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
super().__init__(name, 'lz4 compression')
|
super().__init__(name, 'lz4 compression', r'.* (v[0-9.]*),.*')
|
||||||
|
|
||||||
def compress(self, indata):
|
def compress(self, indata):
|
||||||
"""Compress data with lz4
|
"""Compress data with lz4
|
||||||
|
@ -126,15 +126,3 @@ class Bintoollz4(bintool.Bintool):
|
||||||
if method != bintool.FETCH_BIN:
|
if method != bintool.FETCH_BIN:
|
||||||
return None
|
return None
|
||||||
return self.apt_install('lz4')
|
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
|
|
||||||
|
|
|
@ -18,11 +18,11 @@ class Bintoolmkimage(bintool.Bintool):
|
||||||
Support is provided for fetching this on Debian-like systems, using apt.
|
Support is provided for fetching this on Debian-like systems, using apt.
|
||||||
"""
|
"""
|
||||||
def __init__(self, name):
|
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
|
# pylint: disable=R0913
|
||||||
def run(self, reset_timestamp=False, output_fname=None, external=False,
|
def run(self, reset_timestamp=False, output_fname=None, external=False,
|
||||||
pad=None, version=False):
|
pad=None):
|
||||||
"""Run mkimage
|
"""Run mkimage
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -44,8 +44,6 @@ class Bintoolmkimage(bintool.Bintool):
|
||||||
args.append('-t')
|
args.append('-t')
|
||||||
if output_fname:
|
if output_fname:
|
||||||
args += ['-F', output_fname]
|
args += ['-F', output_fname]
|
||||||
if version:
|
|
||||||
args.append('-V')
|
|
||||||
return self.run_cmd(*args)
|
return self.run_cmd(*args)
|
||||||
|
|
||||||
def fetch(self, method):
|
def fetch(self, method):
|
||||||
|
@ -66,15 +64,3 @@ class Bintoolmkimage(bintool.Bintool):
|
||||||
if method != bintool.FETCH_BIN:
|
if method != bintool.FETCH_BIN:
|
||||||
return None
|
return None
|
||||||
return self.apt_install('u-boot-tools')
|
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
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue