| # SPDX-License-Identifier: GPL-2.0+ | |
| # Copyright 2024 Marek Vasut <marex@denx.de> | |
| # | |
| """Bintool implementation for cst""" | |
| import re | |
| from binman import bintool | |
| class Bintoolcst(bintool.Bintool): | |
| """Image generation for U-Boot | |
| This bintool supports running `cst` with some basic parameters as | |
| needed by binman. | |
| cst (imx code signing tool) is used for sigining bootloader binaries for | |
| various i.MX SoCs. | |
| See `Code Signing Tool Users Guide`_ for more information. | |
| .. _`Code Signing Tool Users Guide`: | |
| https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/202591/1/CST_UG.pdf | |
| """ | |
| def __init__(self, name): | |
| super().__init__(name, 'Sign NXP i.MX image') | |
| # pylint: disable=R0913 | |
| def run(self, output_fname=None): | |
| """Run cst | |
| Args: | |
| output_fname: Output filename to write to | |
| """ | |
| args = [] | |
| if output_fname: | |
| args += ['-o', output_fname] | |
| return self.run_cmd(*args) | |
| def fetch(self, method): | |
| """Build cst from git""" | |
| if method != bintool.FETCH_BUILD: | |
| return None | |
| from platform import architecture | |
| arch = 'linux64' if architecture()[0] == '64bit' else 'linux32' | |
| result = self.build_from_git( | |
| 'https://gitlab.apertis.org/pkg/imx-code-signing-tool', | |
| ['all'], | |
| f'code/obj.{arch}/cst', | |
| flags=[f'OSTYPE={arch}', 'ENCRYPTION=yes'], | |
| git_branch='debian/unstable', | |
| make_path=f'code/obj.{arch}/') | |
| return result |