binman: Convert to using the FIP bintool

Update the FIP tests to use this bintool, instead of running fiptool
directly. This simplifies the code and provides more consistency as well
as supporting missing bintools.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2022-01-09 20:13:59 -07:00
parent 5417da574e
commit 388f04fb67
2 changed files with 8 additions and 41 deletions

View file

@ -623,31 +623,5 @@ directory''')
return 0 return 0
def fiptool(fname, *fip_args):
"""Run fiptool with provided arguments
If the tool fails then this function raises an exception and prints out the
output and stderr.
Args:
fname (str): Filename of FIP
*fip_args: List of arguments to pass to fiptool
Returns:
CommandResult: object containing the results
Raises:
ValueError: the tool failed to run
"""
args = ['fiptool', fname] + list(fip_args)
result = command.RunPipe([args], capture=not VERBOSE,
capture_stderr=not VERBOSE, raise_on_error=False)
if result.return_code:
print(result.stderr, file=sys.stderr)
raise ValueError("Failed to run (error %d): '%s'" %
(result.return_code, ' '.join(args)))
return result
if __name__ == "__main__": if __name__ == "__main__":
sys.exit(main(sys.argv[1:], OUR_FILE)) # pragma: no cover sys.exit(main(sys.argv[1:], OUR_FILE)) # pragma: no cover

View file

@ -22,13 +22,11 @@ sys.path.insert(2, os.path.join(OUR_PATH, '..'))
# pylint: disable=C0413 # pylint: disable=C0413
from patman import test_util from patman import test_util
from patman import tools from patman import tools
from binman import bintool
from binman import fip_util from binman import fip_util
HAVE_FIPTOOL = True FIPTOOL = bintool.Bintool.create('fiptool')
try: HAVE_FIPTOOL = FIPTOOL.is_present()
tools.Run('which', 'fiptool')
except ValueError:
HAVE_FIPTOOL = False
# pylint: disable=R0902,R0904 # pylint: disable=R0902,R0904
class TestFip(unittest.TestCase): class TestFip(unittest.TestCase):
@ -286,13 +284,13 @@ blah blah''', binary=False)
data = fip.get_data() data = fip.get_data()
fname = tools.GetOutputFilename('data.fip') fname = tools.GetOutputFilename('data.fip')
tools.WriteFile(fname, data) tools.WriteFile(fname, data)
result = fip_util.fiptool('info', fname) result = FIPTOOL.info(fname)
self.assertEqual( self.assertEqual(
'''Firmware Updater NS_BL2U: offset=0xB0, size=0x7, cmdline="--fwu" '''Firmware Updater NS_BL2U: offset=0xB0, size=0x7, cmdline="--fwu"
Trusted Boot Firmware BL2: offset=0xC0, size=0xE, cmdline="--tb-fw" Trusted Boot Firmware BL2: offset=0xC0, size=0xE, cmdline="--tb-fw"
00010203-0405-0607-0809-0A0B0C0D0E0F: offset=0xD0, size=0xE, cmdline="--blob" 00010203-0405-0607-0809-0A0B0C0D0E0F: offset=0xD0, size=0xE, cmdline="--blob"
''', ''',
result.stdout) result)
fwu_data = b'my data' fwu_data = b'my data'
tb_fw_data = b'some more data' tb_fw_data = b'some more data'
@ -315,11 +313,7 @@ Trusted Boot Firmware BL2: offset=0xC0, size=0xE, cmdline="--tb-fw"
fname = tools.GetOutputFilename('data.fip') fname = tools.GetOutputFilename('data.fip')
uuid = 'e3b78d9e-4a64-11ec-b45c-fba2b9b49788' uuid = 'e3b78d9e-4a64-11ec-b45c-fba2b9b49788'
fip_util.fiptool('create', '--align', '8', '--plat-toc-flags', '0x123', FIPTOOL.create_new(fname, 8, 0x123, fwu, tb_fw, uuid, other_fw)
'--fwu', fwu,
'--tb-fw', tb_fw,
'--blob', f'uuid={uuid},file={other_fw}',
fname)
return fip_util.FipReader(tools.ReadFile(fname)) return fip_util.FipReader(tools.ReadFile(fname))
@ -396,9 +390,8 @@ Trusted Boot Firmware BL2: offset=0xC0, size=0xE, cmdline="--tb-fw"
"""Check some error reporting from fiptool""" """Check some error reporting from fiptool"""
with self.assertRaises(Exception) as err: with self.assertRaises(Exception) as err:
with test_util.capture_sys_output(): with test_util.capture_sys_output():
fip_util.fiptool('create', '--fred') FIPTOOL.create_bad()
self.assertIn("Failed to run (error 1): 'fiptool create --fred'", self.assertIn("unrecognized option '--fred'", str(err.exception))
str(err.exception))
if __name__ == '__main__': if __name__ == '__main__':