summaryrefslogtreecommitdiff
path: root/tools/binman
AgeCommit message (Collapse)Author
2022-11-22binman: Add documentation for the command line argsSimon Glass
Add command-line documentation for binman. Signed-off-by: Simon Glass <[email protected]>
2022-11-22binman: Add a separate section about environment variablesSimon Glass
These are documented in various several sections. Add a new section that mentions them all in one place so it is easier to see what environment variables can be used to control U-Boot's use of binman. Signed-off-by: Simon Glass <[email protected]> Suggested-by: Heinrich Schuchardt <[email protected]>
2022-11-22binman: Use an exit code when blobs are missingSimon Glass
At present binman returns success when told to handle missing/faked blobs or missing bintools. This is confusing since in fact the resulting image cannot work. Use exit code 103 to signal this problem, with a -W option to convert it to a warning. Rename the flag to --ignore-missing since it controls bintools also. Add documentation about exit codes while we are here. Signed-off-by: Simon Glass <[email protected]>
2022-11-22Revert "binman: btool: gzip: fix packer name so that binary can be found"Quentin Schulz
This reverts commit daa2da754afe1bac777f6cb0f05233e0de7b325d. This commit is not needed anymore since the btool_ prefix is automatically stripped by bintool. Cc: Quentin Schulz <[email protected]> Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-11-22binman: bintool: remove btool_ prefix from btool namesQuentin Schulz
The binary is looked on the system by the suffix of the packer class. This means binman was looking for btool_gzip on the system and not gzip. Since a btool can have its btool_ prefix missing but its module and binary presence on the system appropriately found, there's no need to actually keep this prefix after listing all possible btools, so let's remove it. This fixes gzip btool by letting Bintool.find_bintool_class handle the missing prefix and still return the correct class which is then init with gzip name instead of btool_gzip. Additionally, there was an issue with the cached module global variable. The variable only stores the module and not the associated class name when calling find_bintool_class. This means that when caching the module on the first call to find_bintool_class, class_name would be set to Bintoolbtool_gzip but the module_name gzip only, adding the module in the gzip key in the module dictionary. When hitting the cache on next calls, the gzip key would be found, so its value (the module) is used. However the default class_name (Bintoolgzip) is used, failing the getattr call. Instead, let's enforce the same class name: Bintool<packer>, whatever the filename it is contained in. Cc: Quentin Schulz <[email protected]> Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-10-31binman: Support writing symbols into ELF filesSimon Glass
In some cases the ELF version of SPL builds may be packaged, rather than a binary .bin file. Add support for this. Signed-off-by: Simon Glass <[email protected]>
2022-10-31binman: Handle writing ELF symbols in the Entry classSimon Glass
This feature is used by several etypes and we plan to add more that use it. Make symbol writing a feature of the base class to reduce the code duplication. Signed-off-by: Simon Glass <[email protected]>
2022-10-31binman: Split out looking up a symbol into a functionSimon Glass
Move this code into its own function so it can be used from tests. Signed-off-by: Simon Glass <[email protected]>
2022-10-31binman: Allow obtaining a symbol valueSimon Glass
Provide a function to obtain the integer value of an ELF symbol. This will be used Signed-off-by: Simon Glass <[email protected]>
2022-10-31Rename CONFIG_SYS_TEXT_BASE to CONFIG_TEXT_BASESimon Glass
The current name is inconsistent with SPL which uses CONFIG_SPL_TEXT_BASE and this makes it imposible to use CONFIG_VAL(). Rename it to resolve this problem. Signed-off-by: Simon Glass <[email protected]>
2022-10-29binman: Add support for symlinking imagesNeha Malcom Francis
Adding support to symlink an image packaged using binman. Signed-off-by: Neha Malcom Francis <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-29treewide: Drop image_header_t typedefSimon Glass
This is not needed and we should avoid typedefs. Use the struct instead and rename it to indicate that it really is a legacy struct. Signed-off-by: Simon Glass <[email protected]>
2022-09-21binman: Get futility by building itSimon Glass
A binary download is not great, since it depends on libraries being present in the system. Build futility from source instead. Signed-off-by: Simon Glass <[email protected]>
2022-09-12binman: Add VPL supportSimon Glass
Add support for U-Boot's Verifying Program Loader phase. Signed-off-by: Simon Glass <[email protected]>
2022-09-07Merge tag 'dm-pull-7sep22' of https://source.denx.de/u-boot/custodians/u-boot-dmTom Rini
binman fixes for bintool support
2022-09-04binman: allow user-defined filenames for mkimage entryQuentin Schulz
mkimage entry currently creates a file whose name is derived from the section name containing said entry. Let's allow the user to define a filename for the mkimage-generated binary by using the 'filename' DT property. Cc: Quentin Schulz <[email protected]> Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-04binman: add support for skipping file concatenation for mkimageQuentin Schulz
Some image types handled by mkimage require the datafiles to be passed independently (-d data1:data2) for specific handling of each. A concatenation of datafiles prior to passing them to mkimage wouldn't work. That is the case for rkspi for example which requires page alignment and only writing 2KB every 4KB. This adds the ability to tell binman to pass the datafiles without prior concatenation to mkimage, by adding the multiple-data-files boolean property to the mkimage node. Cc: Quentin Schulz <[email protected]> Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: bintool: bzip2: fix version function on non-Debian-based systemsQuentin Schulz
Upstream bzip2 1.0.x actually is stuck when running bzip2 -V and redirecting the output. This is fixed in Debian for about a decade already in https://git.launchpad.net/ubuntu/+source/bzip2/tree/debian/patches/20-legacy.patch?h=ubuntu/jammy and in bzip2 1.1.x (no release yet, see https://gitlab.com/bzip2/bzip2/-/commit/65179284ceddc43e6388bf4ed8c2d85cf16e1b2f ). Fedora notably does not have such a patch. Since bzip2 --help actually prints the version number too, let's use it instead so that binman works fine on (hopefully) all distributions. Fixes: 45aa2798008c ("binman: Add bzip2 bintool") Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: btool: futility: use Bintool.versionQuentin Schulz
Bintool.version can now be passed the binary argument to return the version text, so there's no need to override it in futility anymore. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: btool: fiptool: use Bintool.versionQuentin Schulz
Bintool.version can now be passed the binary argument to return the version text, so there's no need to override it in fiptool anymore. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: bintool: parametrize args to pass to binary for returning versionQuentin Schulz
The code to check the version is very similar between binaries, the most likely only needed variables are the regex to find the version (already supported) and the args to pass to the binary so that it prints this version (e.g. --version, -V or similar). Let's make it a parameter of Bintool so that code duplication can be avoided for simple changes. Signed-off-by: Quentin Schulz <[email protected]>
2022-09-01binman: btool: mkimage: use Bintool.versionQuentin Schulz
Bintool.version already contains everything required to get the version out of mkimage binary so let's not override it with its own implementation. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: btool: lz4: use Bintool.versionQuentin Schulz
Bintool.version already contains everything required to get the version out of lz4 binary so let's not override it with its own implementation. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: bintool: move version check implementation into bintool classQuentin Schulz
Version checking has nothing specific to compression/decompression tools so let's move it to the Bintool class. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-01binman: btool: gzip: fix packer name so that binary can be foundQuentin Schulz
The binary is looked on the system by the suffix of the packer class. This means binman was looking for btool_gzip on the system and not gzip. Therefore, let's pass "gzip" as the name so that it can be found and used. Fixes: 0f369d79925a ("binman: Add gzip bintool") Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-26binman: Sort tests and rework test-file numbersStefan Herbrechtsmeier
Tests should be in order of the test-file numbers. Sort the tests according to the test-file numbers and rework the test-file numbers to eliminate duplicate numbers. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-26binman: Document how to handle dependent imagesSimon Glass
Binman does not support this properly at present. Add documentation about it including a work-around. Signed-off-by: Simon Glass <[email protected]>
2022-08-26binman: Mention split-elf in the main docsSimon Glass
Since we are talking about ATF, add mention of this new feature too. Signed-off-by: Simon Glass <[email protected]>
2022-08-20binman: Add zstd bintoolStefan Herbrechtsmeier
Add zstd bintool to binman to support on-the-fly compression. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Add xz bintoolStefan Herbrechtsmeier
Add xz bintool to binman to support on-the-fly compression. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Add lzop bintoolStefan Herbrechtsmeier
Add lzop bintool to binman to support on-the-fly compression. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Add gzip bintoolStefan Herbrechtsmeier
Add gzip bintool to binman to support on-the-fly compression of Linux kernel images and FPGA bitstreams. The SPL basic fitImage implementation supports only gzip decompression. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]> Rename the module and support this, since gzip.py is a system module: Signed-off-by: Simon Glass <[email protected]>
2022-08-20binman: Add bzip2 bintoolStefan Herbrechtsmeier
Add bzip2 bintool to binman to support on-the-fly compression. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Add BintoolPacker class to bintoolStefan Herbrechtsmeier
Add a bintools base class for packers which compression / decompression entry contents. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]> Dropped dead/untested code in version(): Signed-off-by: Simon Glass <[email protected]>
2022-08-20binman: Add compression testsStefan Herbrechtsmeier
Add common test functions to test all supported compressions. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Support missing compression toolsStefan Herbrechtsmeier
Handle missing compression tools by returning empty data and record missing bintool. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Move compression bintool management into entry classStefan Herbrechtsmeier
Move management of the bintool to compress and decompress data into the entry class and add the bintool to the list of required bintools. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Select compression bintools in cbfs_util classStefan Herbrechtsmeier
Select the lz4 and lzma_alone bintools in cbfs_util class to centralize the supported compression algorithm evaluation inside the class and over multiple classes. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Move compression bintools creation into test setupStefan Herbrechtsmeier
Move compression bintools (packer) creation into test setup to reuse bintool objects between tests. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]> Put comp_util import back in, since it is still needed here: Signed-off-by: Simon Glass <[email protected]>
2022-08-20binman: Remove obsolete compressed data header handlingStefan Herbrechtsmeier
Remove the obsolete compressed data header handling from the utilities to compress and decompress data. The header is uncommon, not supported by U-Boot and incompatible with external compressed artifacts. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Disable compressed data headerStefan Herbrechtsmeier
Disable the compressed data header of the utilities to compress and decompress data. The header is uncommon, not supported by U-Boot and incompatible with external compressed artifacts. The header was introduced as part of commit eb0f4a4cb402 ("binman: Support replacing data in a cbfs") to allow device tree entries to be larger than the compressed contents. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Add length header attribute to dtb entryStefan Herbrechtsmeier
Add an optional length header attribute to the device tree blob entry class based on the compressed data header from the utilities to compress and decompress data. If needed the header could be enabled with the following attribute beside the compress attribute: prepend = "length"; The header was introduced as part of commit eb0f4a4cb402 ("binman: Support replacing data in a cbfs") to allow device tree entries to be larger than the compressed contents. Regarding the commit "this is necessary to cope with a compressed device tree being updated in such a way that it shrinks after the entry size is already set (an obscure case)". This case need to be fixed without influence any compressed data by itself. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Add DecompressData function to entry classStefan Herbrechtsmeier
Add a DecompressData function to entry class to allow override in child classes and to centralize the compress and decompress in a single class. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Check only section data in multi section testStefan Herbrechtsmeier
Check only section data instead of the rest of the image in multi section test. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Collect bintools before usageStefan Herbrechtsmeier
Collect and thereby initialize bintools before any usage but after generation of entries. This is needed to handle bintools for compress and decompress like other bintools. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Forward AddBintools calls to base classStefan Herbrechtsmeier
Forward AddBintools calls to base class to collect bintools of base class. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Forward AddBintools calls to sub entries in cbfs_utilStefan Herbrechtsmeier
Forward AddBintools calls to sub entries in cbfs_util to collect bintools of sub entries. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Avoid duplicates in bintool listsStefan Herbrechtsmeier
Avoid duplicate entries in the list of bintools used by the image and the list of missing bintools. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Skip elf tests if python elftools is not availableStefan Herbrechtsmeier
Skip tests which requires python elftools if the tool is not available. Signed-off-by: Stefan Herbrechtsmeier <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-08-20binman: Allow collection to use entries from other sectionsSimon Glass
At present the collections etype only works with entries in the same section. This can be limiting, since in some cases the data may be inside a subsection, e.g. if there are alignment constraints. Add a function to find the entries in an etype and have it search recursively. Make use of this for mkimage also. Signed-off-by: Simon Glass <[email protected]>