| Age | Commit message (Collapse) | Author |
|
This check should now be done whatever mode buildman is running in, since
we may be displaying information while building.
Signed-off-by: Simon Glass <[email protected]>
|
|
Commit f219e01311b2 (tools: Import Kconfiglib)
added SPDX GPL-2.0+ to this library by mistake.
It should be ISC.
Signed-off-by: Masahiro Yamada <[email protected]>
Cc: Ulf Magnusson <[email protected]>
|
|
Kconfiglib is the flexible Python Kconfig parser and library
created by Ulf Magnusson.
(https://github.com/ulfalizer/Kconfiglib)
This commit imports kconfiglib.py from
commit ce84c22e58fa59cb93679d4ead03c3cd1387965e,
with ISC SPDX-License-Identifier.
Signed-off-by: Masahiro Yamada <[email protected]>
Signed-off-by: Ulf Magnusson <[email protected]>
Cc: Ulf Magnusson <[email protected]>
Cc: Wolfgang Denk <[email protected]>
|
|
try run => dry run
no nothing => do nothing
"..." => '...'
The last one is for consistency with the other option helps.
Change-Id: I1d69047d1fae6ef095a18f69f44ee13c448db9b7
Signed-off-by: Masahiro Yamada <[email protected]>
Acked-by: Simon Glass <[email protected]>
|
|
When creating build directories also create parents as necessary. This
fixes a failure when building a hierarchical branch (i.e. foo/bar).
Signed-off-by: Thierry Reding <[email protected]>
Acked-by: Simon Glass <[email protected]>
Tested-by: Tom Rini <[email protected]>
|
|
Tags like Series-version are normally expected to appear once, and with a
unique value. But buildman doesn't actually look at these tags. So ignore
conflicts.
This allows bulidman to build a branch containing multiple patman series.
Reported-by: Steve Rae <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
At present buildman naively uses the branch name as part of its directory
path, which causes problems if the name has an embedded '/'.
Replace these with '_' to fix the problem.
Reported-by: Steve Rae <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
Now that buildman supports removing the build directory prefix from output,
add a test for it. Also ensure that output directories are removed when the
test completes.
Signed-off-by: Simon Glass <[email protected]>
|
|
This adds coverage of core features of the builder, including the
command-line options which affect building.
Signed-off-by: Simon Glass <[email protected]>
|
|
For testing it is useful to clean the output directory before running a
test. This avoids a test interfering with the results of a subsequent
test by leaving data around.
Add this feature as an optional parameter to the control logic.
Signed-off-by: Simon Glass <[email protected]>
|
|
When a build is to be performed, buildman checks to see if it has already
been done. In most cases it will not bother trying again. However, it was
not reading the return code from the 'done' file, so if the result was a
failure, it would not be counted. This depresses the 'failure' count stats
that buildman prints in this case.
Fix this bug by always reading the return code.
Signed-off-by: Simon Glass <[email protected]>
|
|
Rather than reading boards.cfg, which may take time to generate and is not
necessarily suitable for running tests, create our own list of boards.
Signed-off-by: Simon Glass <[email protected]>
|
|
These files may not exist in the environment, or may not be suitable for
testing. Provide our own config file and our own toolchains when running
tests.
Signed-off-by: Simon Glass <[email protected]>
|
|
Move the bsettings code back to the main buildman.py file, so we can do
something different when testing.
Signed-off-by: Simon Glass <[email protected]>
|
|
Buildman currently lacks testing in many areas, including its use of git,
make and many command-line flags.
Add a functional test which covers some of these areas. So far it does
a fake 'build' of all boards for the current source tree.
This version reads the real ~/.buildman and boards.cfg files. Future work
will improve this.
Signed-off-by: Simon Glass <[email protected]>
|
|
There is no good reason to keep this code separate. Move it into control.py
so it is easier to test.
Signed-off-by: Simon Glass <[email protected]>
|
|
We want to be able to issue parser commands from within buildman for test
purposes. Move the parser code into its own file so we don't end up needing
the buildman and test modules to reference each other.
Signed-off-by: Simon Glass <[email protected]>
|
|
Adjust the basic test so that it checks all console output. This will help
to ensure that the builder is behaving correctly with printing summary
information.
Signed-off-by: Simon Glass <[email protected]>
|
|
To allow us to verify the builder's console output, send it through a
function which can collect it when running in test mode.
Signed-off-by: Simon Glass <[email protected]>
|
|
Some boards unfortunately build with warnings and it is useful to be able
to easily distinguish the warnings from the errors.
Use a simple pattern match to categorise gcc output into warnings and
errors, and display each separately. New warnings are shown in magenta (with
a w+ prefix) and fixed warnings are shown in yellow with a w- prefix.
Signed-off-by: Simon Glass <[email protected]>
|
|
Add a -l option to display a list of offending boards against each
error/warning line. The information will be shown in brackets as below:
02: wip
sandbox: + sandbox
arm: + seaboard
+(sandbox) arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
+(sandbox) arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
+(seaboard) board/nvidia/seaboard/seaboard.c: In function 'pin_mux_mmc':
+(seaboard) board/nvidia/seaboard/seaboard.c:36:9: warning: unused variable 'fred' [-Wunused-variable]
+(seaboard) int fred;
+(seaboard) ^
Signed-off-by: Simon Glass <[email protected]>
|
|
The full path is long and also includes buildman private directories.
Clean this up, so that only a relative U-Boot path is shown.
This will change warnings like these:
/home/sjg/c/src/third_party/u-boot/buildman5/.bm-work/00/arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
/home/sjg/c/src/third_party/u-boot/buildman5/.bm-work/00/arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
/home/sjg/c/src/third_party/u-boot/files/arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
/home/sjg/c/src/third_party/u-boot/files/arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
to:
arch/sandbox/cpu/cpu.c: In function 'timer_get_us':
arch/sandbox/cpu/cpu.c:40:9: warning: unused variable 'i' [-Wunused-variable]
Signed-off-by: Simon Glass <[email protected]>
|
|
Some boards are known to be broken and it is convenient to be able to
exclude them from the build.
Add an --exclude option to specific boards to exclude. This uses the
same matching rules as the normal 'include' arguments, and is a comma-
separated list of regular expressions.
Suggested-by: York Sun <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
These characters are commonly used in variables, so permit them. Also
document the permitted characters.
Reported-by: Tom Rini <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
When buildman finds errors/warnings when building, set the return code to
indicate this.
Suggested-by: York Sun <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
This commit makes sure boards.cfg is up to date before starting
the build tests. tools/genboardscfg.py exits immediately printing
"boards.cfg is up to date. Nothing to do." when boards.cfg is
already new.
Signed-off-by: Masahiro Yamada <[email protected]>
Acked-by: Simon Glass <[email protected]>
|
|
"buildman [options]" is displayed by default.
Append the rest of help messages to parser.usage
instead of replacing it.
Besides, "-b <branch>" is not mandatory since commit fea5858e.
Drop it from the usage.
Signed-off-by: Masahiro Yamada <[email protected]>
|
|
Signed-off-by: Roger Meier <[email protected]>
Reviewed-by: Masahiro Yamada <[email protected]>
Tested-by: Masahiro Yamada <[email protected]>
Cc: Tom Rini <[email protected]>
Cc: Wolfgang Denk <[email protected]>
Cc: Simon Glass <[email protected]>
|
|
In Python, sys.exit() function can also take an object other
than an integer.
If an integer is given to the argument, Python exits with the return
code of it. If a non-integer argument is given, Python outputs it
to stderr and exits with the return code of 1.
That means,
print >> sys.stderr, "Blah Blah"
sys.exit(1)
is equivalent to
sys.exit("Blah Blah")
The latter is a useful shorthand.
Note:
Some error messages in Buildman and Patman were output to stdout.
But they should go to stderr. They are also fixed by this commit.
This is a nice side effect.
Signed-off-by: Masahiro Yamada <[email protected]>
Acked-by: Simon Glass <[email protected]>
|
|
It is useful to be able to build only some of the commits in a branch. Add
support for the -c option to allow this. It was previously parsed by
buildman but not implemented.
Suggested-by: York Sun <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
Acked-by: York Sun <[email protected]>
|
|
Currently buildman allows a list of boards to build to be specified on the
command line. The list can include specific board names, architecture, SOC
and so on.
At present the list of boards is dealt with in an 'OR' fashion, and there
is no way to specify something like 'arm & freescale', meaning boards with
ARM architecture but only those made by Freescale. This would exclude the
PowerPC boards made by Freescale.
Support an '&' operator on the command line to permit this. Ensure that
arguments can be specified in a single string to permit easy shell quoting.
Suggested-by: York Sun <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
Acked-by: York Sun <[email protected]>
|
|
The current README is a bit sparse in this area, so add a few more
examples.
Suggested-by: Tom Rini <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
If buildman finds no problems it prints nothing. This can be a bit confusing,
so add a message that all is well.
Signed-off-by: Simon Glass <[email protected]>
|
|
Add a new --config-file option (-G) to specify a different configuration
file from the default ~/.buildman.
Reported-by: Tom Rini <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
The non-incremental build method is no longer used, so remove it.
Signed-off-by: Simon Glass <[email protected]>
|
|
Normally buildman operates in two passes - one to do the build and another
to summarise the errors. Add a verbose option (-v) to display build problems
as they happen. With -e also given, this will display errors too.
When building the current source tree (rather than a list of commits in a
branch), both -v and -e are enabled automatically.
Signed-off-by: Simon Glass <[email protected]>
|
|
We need the output options to be available in several places. It's a pain
to pass them into each function. Make them properties of the builder and
add a single function to set them up. At the same time, add a function which
produces summary output using these options.
Signed-off-by: Simon Glass <[email protected]>
|
|
These options have got slightly out of order. Fix them.
Signed-off-by: Simon Glass <[email protected]>
|
|
The builder.py file is getting too long, so split out some code.
Signed-off-by: Simon Glass <[email protected]>
|
|
Originally buildman had some support for building the current source tree.
However this was dropped before it was submitted, as part of the effort to
make it faster when building entire branches.
Reinstate this support. If no -b option is given, buildman will build the
current source tree.
Reported-by: Masahiro Yamada <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
|
|
For those used to MAKEALL, buildman seems strange. Add some notes to ease
the transition.
Signed-off-by: Simon Glass <[email protected]>
|
|
There are several typos in the README - fix them.
Signed-off-by: Simon Glass <[email protected]>
|
|
Use "make <board>_defconfig" instead of "make <board>_config".
Invoke tools/genboardscfg.py to generate boards.cfg when it is missing.
Signed-off-by: Masahiro Yamada <[email protected]>
Acked-by: Simon Glass <[email protected]>
|
|
Since the command name 'make' may not be GNU Make on some platforms
such as FreeBSD, buildman should call scripts/show-gnu-make to get
the command name for GNU MAKE (and error out if it is not found).
Signed-off-by: Masahiro Yamada <[email protected]>
Acked-by: Simon Glass <[email protected]>
Tested-by: Jeroen Hofstee <[email protected]>
|
|
At present buildman always builds out-of-tree, that is it uses a separate
output directory from the source directory. Normally this is what you want,
but it is important that in-tree builds work also. Some Makefile changes may
break this.
Add a -i option to tell buildman to use in-tree builds, so that it is easy
to test this feature.
Signed-off-by: Simon Glass <[email protected]>
|
|
Normally buildman wil try to configure U-Boot for a particular board on the
first commit that it builds in a series. Subsequent commits are built
without reconfiguring which normally works. Where it doesn't, buildman
automatically reconfigures and retries.
To fully emulate the way MAKEALL works, we should have an option to disable
this optimisation.
Add a -C option to cause buildman to always reconfigure on each commit.
Signed-off-by: Simon Glass <[email protected]>
|
|
After a build fails buildman will reconfigure and try again, if it did not
reconfigure before the build. However it doesn't actually keep track of
whether it did reconfigure on the previous attempt.
Fix that logic to avoid a pointless rebuild. This speeds things up quite a
bit for failing builds. Previously they would always be built twice.
Change-Id: Ib37f21320baa7c60bed98f4042c0b7ed7c0dc85e
Signed-off-by: Simon Glass <[email protected]>
|
|
Generally a build failure with a particular commit cannot be fixed except
by changing that commit. Changing the commit will automatically cause
buildman to retry when you run it again: buildman sees that the commit
hash is different and that it has no previous build result for the new
commit hash.
However sometimes the build failure is due to a toolchain issue or some
other environment problem. In that case, retrying failed builds may yield
a different result.
Add a flag to retry failed builds. This differs from the force rebuild
flag (-f) in that it will not rebuild commits which are already marked as
succeeded.
Series-to: u-boot
Change-Id: Iac4306df499d65ff0888b1c60f06fc162a6faad8
|
|
'-elf' appears twice in the toolchain priority_list.
The second one is rudundant.
Signed-off-by: Masahiro Yamada <[email protected]>
Cc: Simon Glass <[email protected]>
Acked-by: Simon Glass <[email protected]>
|
|
Toolchains.__init__ is expected to display a warning message
when the [toolchain] section is missing from ~/.buildman file.
But it never works.
In that case, instead, buildmain fails with an error message
which is difficult to understand:
Traceback (most recent call last):
File "tools/buildman/buildman", line 126, in <module>
control.DoBuildman(options, args)
File "/home/foo/u-boot/tools/buildman/control.py", line 78, in DoBuildman
toolchains = toolchain.Toolchains()
File "/home/foo/u-boot/tools/buildman/toolchain.py", line 106, in __init__
config_fname)
NameError: global name 'config_fname' is not defined
Signed-off-by: Masahiro Yamada <[email protected]>
Cc: Simon Glass <[email protected]>
Acked-by: Simon Glass <[email protected]>
|