aboutsummaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)AuthorFilesLines
2023-03-14buildman: Fix CROSS_COMPILE output for sandboxSimon Glass1-2/+3
The previous attempt at fixing this broke the normal usage of the -A flag. At present, 'buildman -A sandbox' adds the path containing the toolchain. We can assume that this is in the path and we don't want to set CROSS_COMPILE=/bin/ Change this to align with what MakeEnvironment() does, but only for sandbox boards. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-14Revert "buildman: Correct CROSS_COMPILE output for sandbox"Simon Glass1-1/+2
This reverts commit bd0a548ad4a155fec29473d4cc8e135832926973. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-14tools: add fdt_add_pubkeyRoman Kopytin3-0/+142
Having to use the -K option to mkimage to populate U-Boot's .dtb with the public key while signing the kernel FIT image is often a little awkward. In particular, when using a meta-build system such as bitbake/Yocto, having the tasks of the kernel and U-Boot recipes intertwined, modifying deployed artifacts and rebuilding U-Boot with an updated .dtb is quite cumbersome. Also, in some scenarios one may wish to build U-Boot complete with the public key(s) embedded in the .dtb without the corresponding private keys being present on the same build host. So this adds a simple tool that allows one to disentangle the kernel and U-Boot builds, by simply copy-pasting just enough of the mkimage code to allow one to add a public key to a .dtb. When using mkimage, some of the information is taken from the .its used to build the kernel (algorithm and key name), so that of course needs to be supplied on the command line. Signed-off-by: Roman Kopytin <Roman.Kopytin@kaspersky.com> Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Cc: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2023-03-14binman: add tests for sign optionIvan Mikhaylov7-6/+227
Add the test which provides sequence of actions: 1. create the image from binman dts 2. create public and private keys 3. add public key into dtb with fdt_add_pubkey 4. 1. sign FIT container with new sign option with extracting from image 2. sign exact FIT container with replacing of it in image 5. check with fit_check_sign Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com> Renumber test file from 277 to 280; Move UpdateSignatures() to Entry base class; Don't allow missing mkimage as it doesn't make sense; Propagate --toolpath for CI; Call mark_build_done() to avoid regenerating FIT: Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-14binman: add sign option for binmanIvan Mikhaylov4-1/+61
Introduce proof of concept for binman's new option which provides sign and replace FIT containers in binary images. Usage as example: from: mkimage -G privateky -r -o sha256,rsa4096 -F fit binman replace -i flash.bin -f fit.fit fit to: binman sign -i flash.bin -k privatekey -a sha256,rsa4096 -f fit.fit fit and to this one if it's need to be extracted, signed with key and put it back in image: binman sign -i flash.bin -k privatekey -a sha256,rsa4096 fit Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com>
2023-03-14binman: add documentation for binman sign optionIvan Mikhaylov1-0/+47
Add the documentation about binman sign option and providing an example. Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com> Add a section about 'binman sign' at the bottom: Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-14Merge tag 'v2023.04-rc4' into nextTom Rini9-5/+120
Prepare v2023.04-rc4 Signed-off-by: Tom Rini <trini@konsulko.com>
2023-03-13tools: relocate-rela: add support for handling 32-bit big endian filesOvidiu Panait1-16/+16
Currently, a microblaze build with CONFIG_SYS_BIG_ENDIAN=y and CONFIG_STATIC_RELA=y fails with: tools/relocate-rela: Not supported machine type ELF decoding failed make[2]: *** [u-boot/Makefile:1306: u-boot-nodtb.bin] Error 1 To fix this, convert the 32-bit codepath to use the previously added elf{16,32}_to_cpu() functions. The aarch64 codepath is left untouched. This commit ensures that CI doesn't fail for the next patches which enable runtime relocation by default for microblaze. Reviewed-by: Michal Simek <michal.simek@amd.com> Signed-off-by: Ovidiu Panait <ovpanait@gmail.com> Link: https://lore.kernel.org/r/20230311173838.521804-3-ovpanait@gmail.com Signed-off-by: Michal Simek <michal.simek@amd.com>
2023-03-13tools: relocate-rela: introduce elf16_to_cpu() and elf32_to_cpu()Ovidiu Panait1-0/+20
Add elf16_to_cpu() and elf32_to_cpu() functions that allow to read data in both big-endian and little-endian formats. Reviewed-by: Michal Simek <michal.simek@amd.com> Signed-off-by: Ovidiu Panait <ovpanait@gmail.com> Link: https://lore.kernel.org/r/20230311173838.521804-2-ovpanait@gmail.com Signed-off-by: Michal Simek <michal.simek@amd.com>
2023-03-13tools: relocate-rela: adjust le64_to_cpu -> le32_to_cpu in decode_elf32()Ovidiu Panait1-3/+3
The sh_addr/sh_offset/sh_size fields in Elf32_Shdr are 32-bits wide, so use le32_to_cpu() instead of the 64-bit variant. Fixes: 5e0e1a86d327 ("tools: relocate-rela: Fix ELF decoding on big-endian hosts") Reviewed-by: Michal Simek <michal.simek@amd.com> Signed-off-by: Ovidiu Panait <ovpanait@gmail.com> Link: https://lore.kernel.org/r/20230311173838.521804-1-ovpanait@gmail.com Signed-off-by: Michal Simek <michal.simek@amd.com>
2023-03-08binman: Support generation of x509 certificatesSimon Glass7-0/+333
And a new entry type which supports generation of x509 certificates. This uses a new 'openssl' btool with just one operation so far. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Support updating section contentsSimon Glass10-15/+287
Implement this feature since it is useful for updating FITs within an image. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Handle missing bintools correctly in fitSimon Glass2-1/+11
At present these are handled as if they are allowed to be missing, but this is only true if the -M flag is provided. Fix this and add a test. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Allow preserving the output dir when replacingSimon Glass3-7/+20
Add these flags for the 'replace' subcommand too, to aid debugging. Signed-off-by: Simon Glass <sjg@chromium.org> 44 2023 -0700
2023-03-08buildman: Correct CROSS_COMPILE output for sandboxSimon Glass1-2/+1
At present, 'buildman -A sandbox' adds the path containing the toolchain at present. We can assume that this is in the path and we don't want to set CROSS_COMPILE=/bin/ so change this to align with what MakeEnvironment() does. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08patman: Check patches in parallelSimon Glass1-20/+26
For large series this can take a while. Run checkpatch in parallel to try to reduce the time. The checkpatch information is still reported in sequential order, so a very slow patch at the start can still slow things down. But overall this gives good results. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org>
2023-03-08patman: Run get_maintainer.pl in parallelSimon Glass2-3/+32
This script can take ages on some series. Try to limit the time by using threads. If a few stubborn patches remain, show progress so the user has some idea what is going on. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org>
2023-03-08patman: Refactor MakeCcFile() into two functionsSimon Glass1-24/+57
This function is quite long. Moving the handling of a commit into a separate function. This will make it easier to do the work in parallel. Update function comments while we are here. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org>
2023-03-08patman: Drop an incorrect comment about git amSimon Glass1-1/+1
Patman does not do this anymore, as of this commit: 7428dc14b0f ("patman: Remove the -a option") Drop the comment. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org>
2023-03-08doc: Add notes on how to install patman and binmanSimon Glass2-0/+25
These can be installed with 'pip' now. Add the details for those who are interested. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Add support for building a binmanu PyPi packageSimon Glass1-0/+29
Create the necessary files to build this new package. It is not actually clear whether this is useful, since buildman has no purpose outside U-Boot. Move the main program into a function so that it can easily be called by the PyPi-created script. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Use importlib to find the helpSimon Glass1-3/+3
Use this function so that the help can be found even when binman is running from a package. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Hide the 'test' command unless test code is availableSimon Glass1-13/+21
It doesn't make much sense to expose tests when dtoc is running outside of the U-Boot git checkout. Hide the option in this case. Fix a long line while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Move the main code into a functionSimon Glass1-4/+8
Put this code into a function so it is easy for it be run when packaged. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08dtoc: Add support for building a dtoc PyPi packageSimon Glass2-0/+41
Create the necessary files to build this new package. This is needed for binman. Move the main program into a function so that it can easily be called by the PyPi-created script. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08dtoc: Use pathlib to find the test directorySimon Glass1-2/+4
Update this so that the directory being used is declared at the top of the file. Use pathlib as it seems to be more modern. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08dtoc: Move the main code into a functionSimon Glass1-48/+52
Put this code into a function so it is easy for it be run when packaged. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08dtoc: Hide the test options unless test code is availableSimon Glass1-6/+13
It doesn't make much sense to expose tests when dtoc is running outside of the U-Boot git checkout. Hide the option in this case. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Add support for building a buildman PyPi packageSimon Glass1-0/+29
Create the necessary files to build this new package. It is not actually clear whether this is useful, since buildman has no purpose outside U-Boot. It is included for completeness, since adding this later would be more trouble. Move the main program into a function so that it can easily be called by the PyPi-created script. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Use importlib to find the helpSimon Glass1-3/+3
Use this function so that the help can be found even when buildman is running from a package. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Fix use of a type as a variableSimon Glass1-2/+2
Using 'str' as a variable makes it impossible to use it as a type in the same function. Fix this by using a different name. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Hide the test options unless test code is availableSimon Glass1-4/+10
It doesn't make much sense to expose tests when buildman is running outside of the U-Boot git checkout. Hide the option in this case Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Move the main code into a functionSimon Glass1-11/+16
Put this code into a function so it is easy for it be run when packaged. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08patman: Add support for building a patman PyPi packageSimon Glass1-0/+29
Create the necessary files to build this new package. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08patman: Avoid importing test_checkpatch before it is neededSimon Glass1-1/+1
Tests are not packaged with patman so this file will not be accessible when installing with pip. Move the import later in the file, when we know the file is present. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08patman: Add support for building a u_boot_tools PyPi packageSimon Glass3-0/+376
Create the necessary files to build this new package. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08patman: Move library functions into a library directorySimon Glass85-150/+180
The patman directory has a number of modules which are used by other tools in U-Boot. This makes it hard to package the tools using pypi since the common files must be copied along with the tool that uses them. To address this, move these files into a new u_boot_pylib library. This can be packaged separately and listed as a dependency of each tool. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08Remove concurrencytestSimon Glass5-221/+2
While our version is better, it is tricky to use it when we are trying to package things with pip. Drop it. Somewhat reduced functionality is provided by the upstream version[1], along with a rather annoying message each time it is used[2] [3]. [1] pip install concurrencytest [2] https://github.com/cgoldberg/concurrencytest/issues/12 [3] https://github.com/cgoldberg/concurrencytest/pull/14 Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08Revert "patman: test_util: Print test stdout/stderr within test summaries"Simon Glass2-112/+4
Unfortunately this adds a new feature to concurrencytest and it has not made it upstream to the project[1]. Drop it for now so we can use the upstream module. Once it is applied we can bring this functionality back. [1] https://github.com/cgoldberg/concurrencytest This reverts commit ebcaafcded40da8ae6cb4234c2ba9901c7bee644. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Avoid unwanted output in testFitFirmwareLoadables()Simon Glass1-4/+5
This prints a message about the missing tee-os generated by the test. This is confusing, so suppress it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Make the tooldir configurableSimon Glass6-14/+64
Add a command-line argument for setting the tooldir, so that the default can be overridden. Add this directory to the toolpath automatically. Create the directory if it does not already exist. Put the default in the argument parser instead of the class, so that it is more obvious. Update a few tests that expect the utility name to be provided without any path (e.g. 'futility'), so they can accept a path, e.g. /path/to/futility Update the documentation and add a few tests. Improve the help for --toolpath while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Use a private directory for bintoolsSimon Glass2-1/+3
At present binman writes tools into the ~/bin directory. This is convenient but some may be concerned about downloading unverified binaries and running them. Place then in a special ~/.binman-tools directory instead. Mention this in the documentation. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
2023-03-08binman: Move the tools directory into the Bintool classSimon Glass2-5/+6
We want to be able to change this directory. Use a class member to hold the value, since changing a constant is not good. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Update bintools documentationSimon Glass1-0/+70
This was not regenerated with recent changes. Update it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Correct an 'aot' typoSimon Glass1-1/+1
Fix this typo. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Add a flag for reproducible buildsSimon Glass6-12/+54
This is quite a useful thing to use when building since it avoids small size changes between commits. Add a -r flag for it. Also undefine CONFIG_LOCALVERSION_AUTO since this appends the git hash to the version string, causing every build to be slightly different. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Support disabling LTOSimon Glass6-6/+44
This cuts down build performance considerably and is not always needed, when checking for build errors, etc. Add a flag to disable it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Write out the build command usedSimon Glass3-0/+34
It is sometimes useful to see the exact 'make' command used by buildman for a commit. Add an output file for this. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Add a note about the out-env fileSimon Glass1-0/+2
This file holds the environment used when doing a build. Add a note about it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08binman: Use correct argument name in docstringsJonas Karlman3-4/+4
Use correct argument name in docstrings. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Simon Glass <sjg@chromium.org>