@@ -359,7 +359,8 @@ class Builder:
self._opts = DisplayOptions(
show_errors=True, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=True, ide=False, list_error_boards=False)
+ show_unknown=True, ide=False, list_error_boards=False,
+ show_not_built=False)
self._filter_dtb_warnings = False
self._filter_migration_warnings = False
@@ -1442,6 +1442,11 @@ If there are both warnings and errors, errors win, so Buildman returns 100.
The -y option is provided (for use with -s) to ignore the bountiful device-tree
warnings. Similarly, -Y tells Buildman to ignore the migration warnings.
+When some boards cannot be built (e.g. because a toolchain is missing),
+Buildman can report which boards were skipped. Use ``--show-not-built`` to
+enable this. It is off by default since it adds noise when building series
+that only affect tools or a subset of architectures.
+
Sometimes you might get an error in a thread that is not handled by Buildman,
perhaps due to a failure of a tool that it calls. You might see the output, but
then Buildman hangs. Failing to handle any eventuality is a bug in Buildman and
@@ -94,6 +94,9 @@ def add_upto_m(parser):
default=False, help="Don't convert y to 1 in configs")
parser.add_argument('-l', '--list-error-boards', action='store_true',
default=False, help='Show a list of boards next to each error/warning')
+ parser.add_argument('--show-not-built', action='store_true',
+ default=False,
+ help='Show boards that were not built for each commit')
parser.add_argument('-L', '--no-lto', action='store_true',
default=False, help='Disable Link-time Optimisation (LTO) for builds')
parser.add_argument('--list-tool-chains', action='store_true', default=False,
@@ -1108,7 +1108,8 @@ def do_buildman(args, toolchains=None, make_func=None, brds=None,
show_environment=args.show_environment,
show_unknown=args.show_unknown,
ide=args.ide,
- list_error_boards=args.list_error_boards)
+ list_error_boards=args.list_error_boards,
+ show_not_built=args.show_not_built)
result_handler = ResultHandler(col, display_options)
# Create a new builder with the selected args
@@ -706,7 +706,7 @@ Idx Name Size VMA LMA File off Algn
# Now show summary - should report boards not built
terminal.get_print_test_lines() # Clear
self._run_control('-b', TEST_BRANCH, '-o', self._output_dir, '-s',
- clean_dir=False)
+ '--show-not-built', clean_dir=False)
lines = terminal.get_print_test_lines()
text = '\n'.join(line.text for line in lines)
@@ -27,6 +27,7 @@ DisplayOptions = namedtuple('DisplayOptions', [
'show_unknown', # Show unknown boards in summary
'ide', # IDE mode - output to stderr
'list_error_boards', # Include board list with error lines
+ 'show_not_built', # Show boards that were not built
])
# Error line information for display
@@ -174,7 +174,8 @@ class ResultHandler:
self._base_config = config
self._base_environment = environment
- self._show_not_built(board_selected, board_dict)
+ if self._opts.show_not_built:
+ self._show_not_built(board_selected, board_dict)
def _get_error_lines(self):
"""Get the number of error lines output
@@ -200,7 +200,8 @@ class TestBuildBase(unittest.TestCase):
self._opts = DisplayOptions(
show_errors=False, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=False, ide=False, list_error_boards=False)
+ show_unknown=False, ide=False, list_error_boards=False,
+ show_not_built=False)
self._result_handler = ResultHandler(self._col, self._opts)
self.base_dir = tempfile.mkdtemp()
@@ -272,7 +273,8 @@ class TestBuildOutput(TestBuildBase):
opts = DisplayOptions(
show_errors=show_errors, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=False, ide=False, list_error_boards=list_error_boards)
+ show_unknown=False, ide=False, list_error_boards=list_error_boards,
+ show_not_built=False)
build = builder.Builder(self.toolchains, self.base_dir, None, threads,
2, self._col, ResultHandler(self._col, opts),
checkout=False)
@@ -1233,7 +1235,8 @@ class TestBuildSummary(TestBuildBase):
opts = DisplayOptions(
show_errors=False, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=False, ide=False, list_error_boards=False)
+ show_unknown=False, ide=False, list_error_boards=False,
+ show_not_built=False)
build = builder.Builder(self.toolchains, self.base_dir, None, 1,
2, self._col, ResultHandler(self._col, opts),
checkout=False)
@@ -1288,7 +1291,8 @@ class TestBuildSummary(TestBuildBase):
opts = DisplayOptions(
show_errors=False, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=False, ide=False, list_error_boards=False)
+ show_unknown=False, ide=False, list_error_boards=False,
+ show_not_built=False)
build = builder.Builder(self.toolchains, self.base_dir, None, 1,
2, self._col, ResultHandler(self._col, opts),
checkout=False)
@@ -24,7 +24,8 @@ from u_boot_pylib import terminal
DEFAULT_OPTS = DisplayOptions(
show_errors=False, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=False, ide=False, list_error_boards=False)
+ show_unknown=False, ide=False, list_error_boards=False,
+ show_not_built=False)
class TestPrintFuncSizeDetail(unittest.TestCase):
@@ -658,7 +658,8 @@ def _create_builder(state, num_threads, num_jobs):
opts = DisplayOptions(
show_errors=False, show_sizes=False, show_detail=False,
show_bloat=False, show_config=False, show_environment=False,
- show_unknown=False, ide=True, list_error_boards=False)
+ show_unknown=False, ide=True, list_error_boards=False,
+ show_not_built=False)
result_handler = ResultHandler(col, opts)
bldr = builder_mod.Builder(