summaryrefslogtreecommitdiff
path: root/tools/buildman
AgeCommit message (Collapse)Author
2023-07-24buildman: Move dry-run handling higher in do_buildman()Simon Glass
Move this up above where the builder is created, since it no-longer makes use of the builder. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Drop use of builder in show_actions()Simon Glass
This function only needs the output directory from the builder. This is passed into the builder, so just pass the same value to show_actions(). The avoids needing a builder to call show_actions(). Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Add a test for the -A optionSimon Glass
This lacks a test at present. Add one. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Move fetch-arch code into a separate functionSimon Glass
Reduce the size of the do_buildman() function a little by moving the code that handles --fetch-arch into a separate function. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Move series calculations into a separate functionSimon Glass
Reduce the size of the do_buildman() function a little by moving the code that figures out the series into a separate function. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Move full-help processing to mainSimon Glass
This does not need any of the control features. Move it out of main to reduce the size of the do_buildman() function. For Python 3.6 the -H feature will not work, but this does not seem to be a huge problem, as it dates from 2016. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Fix most pylint warnings in controlSimon Glass
Tidy up the easier-to-fix pylint warnings in module 'control'. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Convert camel case in control.pySimon Glass
Convert this file to snake case and update all files which use it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Tidy up pylint warnings in mainSimon Glass
Tidy up the various pylint warnings in module 'main'. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Provide an argument to the -R optionSimon Glass
Allow writing the file to a selected location, since otherwise this is controlled by the buildman configuration, so cannot be determined by the caller. Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: https://source.denx.de/u-boot/u-boot/-/issues/17
2023-07-24buildman: Add an option to check maintainersSimon Glass
Rather than using the -R option to get this report as a side effect, add a dedicated option for it. Disable CI for now as there are some missing maintainers, unfortunately. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Correct logic for missing maintainersSimon Glass
An orphaned board should produce a warning, as should a missing name for the maintainer (when '-' is provided). Add these cases. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Sort the maintainer warningsSimon Glass
Sort the warnings into alphabetical order, for easier reading. Also make sure that the buildman test files are ignored. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Just display a single line for missing maintainersSimon Glass
At present we get multiple lines of output when a board has no MAINTAINERS entry: WARNING: no status info for 'bananapi-m2-pro' WARNING: no maintainers for 'bananapi-m2-pro' Suppress the 'status' one since it is implied by the other. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Correct operation of MAINTAINERS N:Simon Glass
This doesn't work as intended. Instead it scans every defconfig file in the source tree. Fix it and add a test. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Detect boards with no CONFIG_TARGET definedSimon Glass
We generally expected exactly one of these. Add a check for it. Note: This warning is not displayed by default. An option will be added to enable it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Detect boards with multiple CONFIG_TARGETs definedSimon Glass
The TARGET_xxx options are special in that they refer to a single target. Exactly one should be enabled for each target, corresponding to a defconfig file. Detect configs which result in two TARGET_xxx options being set. For example, at present, TARGET_POLEG and TARET_POLEG_EVB are enabled for the same board. Note: This warning is not displayed by default. An option will be added to enable it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Refactor target handling in Boards.scan()Simon Glass
Move the assert to the top of the function and provide an explicit variables for the target name and base name. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Warn about dangling maintainer entriesSimon Glass
Other than the top-level MAINTAINERS file, all maintainer entries should actually reference a target. Add a warning to detect those that do not. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Tidy up common code in parse_file()Simon Glass
Use a function to add to the maintainers database, to avoid duplicating the same code twice. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Add a partial test for ensure_board_list()Simon Glass
Create a new function which has the non-UI parts of ensure_board_list(). Add some tests for everything except the N: tag. While we are here, fix the confusing usage of fname inside a loops that also uses fname. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Add a test for Boards.output_is_new()Simon Glass
Add a test for this code, adjusting the timestamp on various files to check each use case. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Add a test for Boards.scan_defconfigs()Simon Glass
Add a test for this code. It requires some defconfig files and a test Kconfig to work with, so copy these into the temporary directory at the start. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Avoid globals in leaf functionsSimon Glass
Rather than using the global thoughout each function, pass in these values. This allows tests to use different values when testing the same functions. Improve a few comments while we are here. No functional change is intended. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Drop dead code to handle :CONFIG_ constructSimon Glass
This is not needed anymore, so drop it. Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: 252ed872 ("kconfig: remove meaningless prefixes in defconfig files")
2023-07-24buildman: Rename the ARM boardsSimon Glass
Use names consistent with their target names. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Exit with the return code consistentlySimon Glass
Test should return a suitable exit code when they fail. Fix this and tidy up the code a little. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Allow --debug to enable debuggingSimon Glass
The -D option is used, but plumb it through --debug to enable a full traceback when something goes wrong. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-24buildman: Fix verboose typo and add commentSimon Glass
Fix the typo in the RunTests() function, adding comments while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-07-21buildman: Create a requirements.txt fileTom Rini
At this point, buildman requires a few different modules and so we need a requirements.txt to track what modules are needed. Cc: Simon Glass <sjg@chromium.org> Cc: Neha Malcom Francis <n-francis@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Neha Malcom Francis <n-francis@ti.com> Signed-off-by: Tom Rini <trini@konsulko.com>
2023-07-20CI: Update to gcc-13.1.0Tom Rini
As this is the current version of the public cross toolchains we use, upgrade to this now. Suggested-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com> Signed-off-by: Tom Rini <trini@konsulko.com> Acked-by: Alexey Brodkin <abrodkin@synopsys.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-07-20buildman: Switch ARC toolchain to the upstream versionAlexey Brodkin
Back in the day we relied a lot on Synopsys own build of the GNU tools for ARC processors, but since then we worked hard on getting all our changes upstream and for a couple of years now we have ARCompact (AKA ARCv1) and ARCv2 processors supported very well in upstream GCC, Binutils, GDB etc. And so there's no need to use Synopsys forks any longer, thus we remove all the references to that form and use upstream components as majority of other architectures in U-Boot. Thanks to Tom for pointing to that left-over! Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Simon Glass <sjg@chromium.org> Cc: Tom Rini <trini@konsulko.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-05-03buildman: Pass -Werror to the host compiler tooSimon Glass
The host compiler is not failing on warnings at present, when the -E flag is used in buildman. Add the required flag to fix this. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Tom Rini <trini@konsulko.com>
2023-04-28tools: Fall back to importlib_resources on Python 3.6Jan Kiszka
importlib.resources became part of 3.7 only. Allow using distros with 3.6 and the importlib_resources backport. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-04-03Merge branch 'next'Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2023-03-31buildman: Correct overwriting of settings fileSimon Glass
The toolchain test causes the settings file to be overwritten, which is annoying for local development. Fix it by passing None as the filename. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-14buildman: Fix CROSS_COMPILE output for sandboxSimon Glass
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 Glass
This reverts commit bd0a548ad4a155fec29473d4cc8e135832926973. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-03-08buildman: Correct CROSS_COMPILE output for sandboxSimon Glass
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-08buildman: Add support for building a buildman PyPi packageSimon Glass
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 Glass
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 Glass
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 Glass
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 Glass
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: Move library functions into a library directorySimon Glass
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-08buildman: Add a flag for reproducible buildsSimon Glass
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 Glass
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 Glass
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 Glass
This file holds the environment used when doing a build. Add a note about it. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-02-10buildman: invalid reference to READMEHeinrich Schuchardt
The readme file for buildman is called buildman.rst. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>