summaryrefslogtreecommitdiff
path: root/tools/buildman
AgeCommit message (Collapse)Author
2020-04-10buildman: Drop the -a optionSimon Glass
There is no point in setting the ARCH environment variable since the U-Boot build system no-longer uses it. It seems safe to drop this feature since it was only recently added. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2020-04-10buildman: Allow building within a subdir of the current dirSimon Glass
This is useful in some situations, in particular with -w and when building in-tree. Now that we are more careful about what we remove in _PrepareOutputSpace(), it should be safe to relax this restriction. Update the progress information also so it is clear what buildman is doing. Remove files can take a long time. Signed-off-by: Simon Glass <[email protected]>
2020-04-10buildman: Be more selective about which directories to removeSimon Glass
At present buildman removes any directory it doesn't intend to write output into. This is overly expansive since if the output directory happens to be somewhere with existing files, they may be removed. Using an existing directory for buildman is not a good practice, but since the result might be catastrophic, it is best to guard against it. A previous commit[1] fixed this by refusing to write to a subdirectory of the current directory, assumed to have U-Boot source code. But we can do better by only removing directories that look like the ones buildman creates. Update the code to do this and add a test. Signed-off-by: Simon Glass <[email protected]> [1] 409fc029c40 tools: buildman: Don't use the working dir as build dir
2020-04-10buildman: Allow ignoring warnings in the return codeSimon Glass
Sometimes we don't want buildman to return failure if it seems warnings. Add a -W option to support this. If buildman detects warnings (and no errors) it will return an exit code of 0 (success). Note that the definition of 'warnings' includes the migration warnings produced by U-Boot, such as: ===================== WARNING ====================== This board does not use CONFIG_DM_MMC. Please update ... ==================================================== Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2020-04-10buildman: Update help for -dSimon Glass
This help is a bit ambiguous. It only does anything if asked to show size changes with -S. Update the help and the function comments. Signed-off-by: Simon Glass <[email protected]>
2020-04-10bulidman: Add support for a simple buildSimon Glass
It is useful to run a simple build and put all the output in a single directory. Add a -w option to support this. Signed-off-by: Simon Glass <[email protected]>
2020-04-10buildman: Document the members of BuilderJobSimon Glass
This class has a few more members now. Add documentation for them and fix a nit in the 'commits' comment. Signed-off-by: Simon Glass <[email protected]>
2020-04-10buildman: Support fetching gcc 9.2.0Bin Meng
This adds support to fetch gcc 9.2.0 toolchains. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2020-02-05buildman: Enable buildman on aarch64 hostsMatthias Brugger
At kernel.org aarch64 toolchains are published in folder arm64. Fix the URL for that case, so that we can fetch toolchains on aarch64 machines. Signed-off-by: Matthias Brugger <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2020-01-30tools: buildman: fix typoFlavio Suligoi
Signed-off-by: Flavio Suligoi <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2019-12-10buildman: Ignore blank lines during size checksTom Rini
Today when parsing the .sizes files we get a warning about an invalid line in the file as it's blank. Solve this by checking that we have a non-blank line prior to processing. Cc: Simon Glass <[email protected]> Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2019-12-10buildman: Add options to get the arch and toolchain infoSimon Glass
Sometimes it is useful for external tools to use buildman to provide the toolchain information. Add an -a option which shows the value to use for the ARCH environment variable, and -A which does the same for CROSS_COMPILE Signed-off-by: Simon Glass <[email protected]>
2019-12-10buildman: Figure out boards before commitsSimon Glass
At present buildman looks at toolchains, then commits and then boards. Move the board processing up above the commit processing, since it relates to the toolchain code. This will make it easier to check the toolchains needed for a board without processing commits first. Signed-off-by: Simon Glass <[email protected]>
2019-12-10buildman: Ask genboardscfg to be quietSimon Glass
Now that this tool has a 'quiet' flag, use it. Signed-off-by: Simon Glass <[email protected]>
2019-12-10buildman: Improve [make-flags] section parser to allow quoted stringsCristian Ciocaltea
The parser responsible for the '[make-flags]' section in the '.buildman' settings file is currently not able to handle quoted strings, as given in the sample bellow: [make-flags] qemu_arm=HOSTCC="cc -isystem /add/include" HOSTLDFLAGS="-L/add/lib" This patch replaces the simple string splitter based on the <space> delimiter with a regex tokenizer that preserves spaces inside double quoted strings. Signed-off-by: Cristian Ciocaltea <[email protected]>
2019-11-23buildman: Fix problem with non-existent output directoriesTom Rini
Now that we have buildman telling genboards.cfg to use an output directory we need to ensure that it exists. Cc: Bin Meng <[email protected]> Cc: Simon Glass <[email protected]> Fixes: bc750bca1246 ("tools: buildman: Honor output directory when generating boards.cfg") Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2019-11-04buildman: Convert to Python 3Simon Glass
Convert buildman to Python 3 and make it use that, to meet the 2020 deadline. Signed-off-by: Simon Glass <[email protected]>
2019-10-29tools: buildman: Remove useless mkdir() in Make() in test.pyBin Meng
In the 'Make' function, the codes tries to create a directory if current stage is 'build'. But the directory isn't used at all anywhere. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2019-10-29tools: buildman: Honor output directory when generating boards.cfgBin Meng
buildman always generates boards.cfg in the U-Boot source tree. When '-o' is given, we should generate boards.cfg to the given output directory. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2019-10-08buildman: Perform tests in a temporary directoryTom Rini
We may not always be able to write to the default output directory so have a temporary directory for our output be created. Cc: Simon Glass <[email protected]> Reviewed-by: Stephen Warren <[email protected]> Suggested-by: Stephen Warren <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2019-10-08kconfiglib: Update to the 12.14.0 releaseTom Rini
A large number of changes have happened upstream since our last sync which was to 375506d. The reason to do the upgrade at this point is for improved Python 3 support. As part of this upgrade we need to update moveconfig.py and genboardscfg.py the current API. This is: - Change "kconfiglib.Config" calls to "kconfiglib.Kconfig" - Change get_symbol() calls to syms.get(). - Change get_value() to str_value. Cc: Masahiro Yamada <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2019-07-24buildman: fix invocation examples typosBaruch Siach
Also, make command line example indentation consistent. Signed-off-by: Baruch Siach <[email protected]>
2019-05-21buildman: Deal more nicely with invalid build-status fileSimon Glass
The 'done' files created by buildman may end up being empty if buildman runs out of disk space while writing them. At present buildman dies with an exception when using -s to check the build status. Fix this. Seriesl-cc: trini Signed-off-by: Simon Glass <[email protected]>
2019-02-09buildman: fix typoChris Packham
Fix a typo in the error message from CheckOutputDir(). Signed-off-by: Chris Packham <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2019-02-09buildman: Write the environment out to an 'env' fileSimon Glass
Sometimes it is useful to see the environment that was used to build U-Boot. Write this out to a file in the build directory. Signed-off-by: Simon Glass <[email protected]>
2019-01-14buildman: Fix tabs in GetWrapper()Simon Glass
This function has tabs instead of spaces. Fix it. Signed-off-by: Simon Glass <[email protected]>
2019-01-14buildman: Add support for building with clangSimon Glass
Add a -O option which allows building with clang. Signed-off-by: Simon Glass <[email protected]>
2019-01-14buildman: Deal nicely with invalid build-status fileSimon Glass
The 'done' files created by buildman may end up being empty if buildman runs out of disk space while writing them. This error is then persistent, since even if disk space is reclaimed and the build retries, the empty file causes an exception in the builder thread. Deal with this silently by doing a rebuild. Signed-off-by: Simon Glass <[email protected]>
2019-01-14buildman: Drop comment about Ctrl-C problemSimon Glass
This bug is now fixed, so drop this comment. Signed-off-by: Simon Glass <[email protected]>
2018-12-05buildman/toolchain.py: handle inconsistent tarball namesTrevor Woerner
Unfortunately, for some releases the kernel.org toolchain tarball names adhere to the following pattern: <hostarch>-gcc-<ver>-nolib-<targetarch>-<type>.tar.xz e.g.: x86_64-gcc-8.1.0-nolibc-aarch64-linux.tar.xz while others use the following pattern: <hostarch>-gcc-<ver>-nolib_<targetarch>-<type>.tar.xz e.g.: x86_64-gcc-7.3.0-nolibc_aarch64-linux.tar.xz Notice that the first pattern has dashes throughout, while the second has dashes throughout except just before the target architecture which has an underscore. The "dash throughout" versions from kernel.org are: 8.1.0, 6.4.0, 5.5.0, 4.9.4, 4.8.5, 4.6.1 while the "dash and underscore" versions from kernel.org are: 7.3.0, 4.9.0, 4.8.0, 4.7.3, 4.6.3, 4.6.2, 4.5.1, 4.2.4 This tweak allows the code to handle both versions. Note that this tweak also causes the architecture parsing to get confused and find the following two bogus architectures, "2.0" and "64", which are explicitly checked for, and removed. Signed-off-by: Trevor Woerner <[email protected]> Reviewed-by: Simon Glass <[email protected]> Change single quotes to double quotes: Signed-off-by: Simon Glass <[email protected]>
2018-12-05buildman/toolchain.py: fix toolchain directoryTrevor Woerner
The hexagon toolchain (4.6.1) from kernel.org, for example, was packaged in a way that is different from most toolchains. The first entry when unpacking most toolchain tarballs is: gcc-<version>-nolib/<targetarch>-<system> e.g.: gcc-8.1.0-nolibc/aarch64-linux/ The first entry of the hexagon toolchain, however, is: gcc-4.6.1-nolibc/ This causes the buildman logic in toolchain.py::ScanPath() to not be able to find the "*gcc" executable since it looks in gcc-4.6.1-nolib/{.|bin|usr/bin} instead of gcc-4.6.1/hexagon-linux/{.|bin|usr/bin}. Therefore when buildman tries to download a set of toolchains that includes hexagon, the script fails. This update takes the second line of the tarball unpacking (which works for all the toolchains I've tested from kernel.org) and parses it to take the first two elements, separated by '/'. It makes this logic a bit more robust. Signed-off-by: Trevor Woerner <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2018-11-20buildman: Show boards with warning with w+Simon Glass
At present we should boards with warnings in the same way as those with errors. This is not ideal. Add a new 'warn' state and show these listed in yellow to match the actual warning lines printing with -e. Signed-off-by: Simon Glass <[email protected]>
2018-11-20buildman: Rename the good, better, worse variablesSimon Glass
At present we don't distinguish between errors and warnings when printing the architecture summary. Rename the variables to better describe their purpose. 'Worse' at present means we got an error, so use that as the name. Signed-off-by: Simon Glass <[email protected]>
2018-11-20buildman: Detect dtc warningsSimon Glass
At present messages from the device-tree compiler like this: arch/arm/dts/socfpga_arria10_socdk_sdmmc.dtb: Warning (avoid_unnecessary_addr_size): /clocks: unnecessary #address-cells/#size-cells without "ranges" or child "reg" property are detected as errors since they don't match the gcc warning regex. Add a new one for dtc to fix this. Signed-off-by: Simon Glass <[email protected]>
2018-11-20buildman: Only print toolchain probing with -vSimon Glass
At present --list-tool-chains prints a lot of information about the toolchain-probing process. This is generally not very interesting. Update buildman to print this only if --list-tool-chains is given with -v. Signed-off-by: Simon Glass <[email protected]>
2018-11-14buildman: Add a --boards option to specify particular boards to buildSimon Glass
At present 'buildman sandbox' will build all 5 boards for the sandbox architecture rather than the single board 'sandbox'. The only current way to exclude sandbox_spl, sandbox_noblk, etc. is to use -x which is a bit clumbsy. Add a --boards option to allow individual build targets to be specified. Signed-off-by: Simon Glass <[email protected]>
2018-10-08buildman: dtoc: Suppress unwanted output from testSimon Glass
There are a few test cases which print output. Suppress this so that tests can run silently in the normal case. Signed-off-by: Simon Glass <[email protected]>
2018-10-08buildman: Make the toolchain test more forgivingSimon Glass
The filenames of the toolchains on kernel.org changes every now and then. Fix it for the current change, and make the test use a regex so that it has a better chance of passing with future changes too. Signed-off-by: Simon Glass <[email protected]>
2018-09-29buildman: Avoid hanging when the config changesSimon Glass
Something has changed in the last several month such that when buildman builds U-Boot incrementally and a new CONFIG option has been added to the Kconfig, the build hanges waiting for input: Test new config (NEW_CONFIG) [N/y/?] (NEW) Since binamn does not connect the build's stdin to anything this waits on stdin to the build thread, which never comes. Eventually I suspect all the threads end up in this state and the build does not progress. Fix this by passing /dev/null as input to the build. That way, if there is a new CONFIG, the build will stop (and fail): Test new config (NEW_CONFIG) [N/y/?] (NEW) Error in reading or end of file. Signed-off-by: Simon Glass <[email protected]>
2018-09-10Remove CONFIG_USE_STDINTMasahiro Yamada
You do not need to use the typedefs provided by compiler. Our compilers are either IPL32 or LP64. Hence, U-Boot can/should always use int-ll64.h typedefs like Linux kernel, whatever the typedefs the compiler internally uses. Signed-off-by: Masahiro Yamada <[email protected]>
2018-06-07buildman: Add support for environment delta in summaryAlex Kiernan
When summarising the builds, add the -U option to emit delta lines for the default environment built into U-Boot at each commit. Signed-off-by: Alex Kiernan <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2018-06-07buildman: Extract environment as part of each buildAlex Kiernan
As we're building the boards, extract the default U-Boot environment to uboot.env so we can interrogate it later. Signed-off-by: Alex Kiernan <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2018-05-22buildman: support newer gcc versions from kernel.orgDaniel Schwierzeck
Add support for gcc versions 7.3.0, 6.4.0 and 4.9.4. Also use a regex for matching the tarball names. Some gcc versions use '-ARCH-' instead of '_ARCH-'. As part of this, we switch TravisCI to also using these toolchains for all platforms. Signed-off-by: Daniel Schwierzeck <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2018-05-16tools: buildman: Don't use the working dir as build dirLothar Waßmann
When the U-Boot base directory happens to have the same name as the branch that buildman is directed to use via the '-b' option and no output directory is specified with '-o', buildman happily starts removing the whole U-Boot sources eventually only stopped with the error message: OSError: [Errno 20] Not a directory: '../<branch-name>/boards.cfg Add a check to avoid this and also deal with the case where '-o' points to the source directory, or any subdirectory of it. Finally, tidy up the confusing logic for removing the old tree when using -b. This is only done when building a branch. Signed-off-by: Lothar Waßmann <[email protected]> Signed-off-by: Simon Glass <[email protected]> Tested-by: Lothar Waßmann <[email protected]>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <[email protected]>
2018-02-04buildman: add option -E for treating compiler warnings as errorsDaniel Schwierzeck
Add a new option '-E' for treating all compiler warnings as errors. Eventually this will pass 'KCFLAGS=-Werror' to Kbuild. Signed-off-by: Daniel Schwierzeck <[email protected]>
2018-01-28host-tools: use python2 explicitly for shebangMasahiro Yamada
All of these host tools are apparently written for Python2, not Python3. Use 'python2' in the shebang line according to PEP 394 (https://www.python.org/dev/peps/pep-0394/). Signed-off-by: Masahiro Yamada <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2018-01-16tools: Update python "help" tests to cope with "more" odditiesTom Rini
In some cases when "more" is told to page a given file it will prepend the output with: :::::::::::::: /PATH/TO/THE/FILE :::::::::::::: And when this happens the output will not match the expected length. Further, if we use a different pager we will instead fail the coverage tests as we will not have 100% coverage. Update the help test to remove the string in question. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2017-11-22buildman: Fix up testsSimon Glass
The tests were broken by two separate commits which adjusted the output when boards are listed. Fix this by adding back a PowerPC board and putting the name of each board in the test. Fixes: b9f7d881 (powerpc, 5xx: remove some "5xx" remains) Fixes: 8d7523c5 (buildman: Allow showing the list of boards with -n) Signed-off-by: Simon Glass <[email protected]>
2017-11-22buildman: Allow skipping of tests which use the networkSimon Glass
Accessing the network slows down the test and limits the environment in which it can be run. Add an option to disable network tests. Signed-off-by: Simon Glass <[email protected]>