mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 12:46:14 +02:00
buildman: Add a flag to force mrproper on failure
When a file is removed by a commit (e.g. include/common.h yay!) it can cause incremental build failures since one of the dependency files from a previous build may mention the file. Add an option to run 'make mrproper' automatically when a build fails. This can be used to automatically resolve the problem, without always adding the large overhead of 'make mrproper' to every build. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7e93bd30b1
commit
8941477e02
@ -256,14 +256,14 @@ class Builder:
|
||||
def __init__(self, toolchains, base_dir, git_dir, num_threads, num_jobs,
|
||||
gnu_make='make', checkout=True, show_unknown=True, step=1,
|
||||
no_subdirs=False, full_path=False, verbose_build=False,
|
||||
mrproper=False, per_board_out_dir=False,
|
||||
config_only=False, squash_config_y=False,
|
||||
warnings_as_errors=False, work_in_output=False,
|
||||
test_thread_exceptions=False, adjust_cfg=None,
|
||||
allow_missing=False, no_lto=False, reproducible_builds=False,
|
||||
force_build=False, force_build_failures=False,
|
||||
force_reconfig=False, in_tree=False,
|
||||
force_config_on_failure=False, make_func=None):
|
||||
mrproper=False, fallback_mrproper=False,
|
||||
per_board_out_dir=False, config_only=False,
|
||||
squash_config_y=False, warnings_as_errors=False,
|
||||
work_in_output=False, test_thread_exceptions=False,
|
||||
adjust_cfg=None, allow_missing=False, no_lto=False,
|
||||
reproducible_builds=False, force_build=False,
|
||||
force_build_failures=False, force_reconfig=False,
|
||||
in_tree=False, force_config_on_failure=False, make_func=None):
|
||||
"""Create a new Builder object
|
||||
|
||||
Args:
|
||||
@ -283,6 +283,7 @@ class Builder:
|
||||
PATH
|
||||
verbose_build: Run build with V=1 and don't use 'make -s'
|
||||
mrproper: Always run 'make mrproper' when configuring
|
||||
fallback_mrproper: Run 'make mrproper' and retry on build failure
|
||||
per_board_out_dir: Build in a separate persistent directory per
|
||||
board rather than a thread-specific directory
|
||||
config_only: Only configure each build, don't build it
|
||||
@ -352,6 +353,7 @@ class Builder:
|
||||
self.force_reconfig = force_reconfig
|
||||
self.in_tree = in_tree
|
||||
self.force_config_on_failure = force_config_on_failure
|
||||
self.fallback_mrproper = fallback_mrproper
|
||||
|
||||
if not self.squash_config_y:
|
||||
self.config_filenames += EXTRA_CONFIG_FILENAMES
|
||||
|
||||
@ -705,8 +705,10 @@ class BuilderThread(threading.Thread):
|
||||
# with a reconfig.
|
||||
if self.builder.force_config_on_failure:
|
||||
result, request_config = self.run_commit(commit_upto,
|
||||
brd, work_dir, True, self.mrproper, False, True,
|
||||
False, job.work_in_output, job.adjust_cfg)
|
||||
brd, work_dir, True,
|
||||
self.mrproper or self.builder.fallback_mrproper,
|
||||
False, True, False, job.work_in_output,
|
||||
job.adjust_cfg)
|
||||
did_config = True
|
||||
if not self.builder.force_reconfig:
|
||||
do_config = request_config
|
||||
|
||||
@ -995,7 +995,8 @@ By default, buildman doesn't execute 'make mrproper' prior to building the
|
||||
first commit for each board. This reduces the amount of work 'make' does, and
|
||||
hence speeds up the build. To force use of 'make mrproper', use -the -m flag.
|
||||
This flag will slow down any buildman invocation, since it increases the amount
|
||||
of work done on any build.
|
||||
of work done on any build. An alternative is to use the --fallback-mrproper
|
||||
flag, which retries the build with 'make mrproper' only after a build failure.
|
||||
|
||||
One possible application of buildman is as part of a continual edit, build,
|
||||
edit, build, ... cycle; repeatedly applying buildman to the same change or
|
||||
|
||||
@ -90,7 +90,9 @@ def add_upto_m(parser):
|
||||
parser.add_argument('--list-tool-chains', action='store_true', default=False,
|
||||
help='List available tool chains (use -v to see probing detail)')
|
||||
parser.add_argument('-m', '--mrproper', action='store_true',
|
||||
default=False, help="Run 'make mrproper before reconfiguring")
|
||||
default=False, help="Run 'make mrproper' before reconfiguring")
|
||||
parser.add_argument('--fallback-mrproper', action='store_true',
|
||||
default=False, help="Run 'make mrproper' and retry on build failure")
|
||||
parser.add_argument(
|
||||
'-M', '--allow-missing', action='store_true', default=False,
|
||||
help='Tell binman to allow missing blobs and generate fake ones as needed')
|
||||
|
||||
@ -656,6 +656,7 @@ def do_buildman(args, toolchains=None, make_func=None, brds=None,
|
||||
no_subdirs=args.no_subdirs, full_path=args.full_path,
|
||||
verbose_build=args.verbose_build,
|
||||
mrproper=args.mrproper,
|
||||
fallback_mrproper=args.fallback_mrproper,
|
||||
per_board_out_dir=args.per_board_out_dir,
|
||||
config_only=args.config_only,
|
||||
squash_config_y=not args.preserve_config_y,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user