From patchwork Fri May 1 10:59:53 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 2244 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1777633261; bh=RXJO9BKrXmooq1ZK2hlrsk/6KFOaMXTV8ZxRmn0xYRg=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=krOeUeX7zZTMIV5mmgAlFRxEQbSzVAxFEp9ZP+tzg2myW1HyT2XKyvupk4OPfxoE0 MTfVpTCzCGx+no8wVdqvcBHIaow33FQNISIj5Iw1G383Uj9A5jCH/IX01ndYkXEaV2 eLIj+0547m0xuFFU/8tAGf/csRrOUGdMQt9vQklM= Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 046076A837 for ; Fri, 1 May 2026 05:01:01 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id 5--5uSyyksiw for ; Fri, 1 May 2026 05:01:00 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1777633260; bh=RXJO9BKrXmooq1ZK2hlrsk/6KFOaMXTV8ZxRmn0xYRg=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=XPnztBrv9wcsZN0iZNzLX/knqKKOZVArR2PjY47sdoHxfXAj6Azn3P4O+Q02iaLGk aPHuAf5/WOMETksm1MeTAOqzj3gXrcojOrB/pEwT1iVqcPgG/cxsp0dAaYTQVaRmaV g04Q5MwS6Y196Z3ZZeCRC6HipIymYMtZTexPmZrg= Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E78666A7AF for ; Fri, 1 May 2026 05:01:00 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1777633258; bh=oq9XLCi55yIIMwHxrLoGbi6AgILry+Vj1x0lgKes/BU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n0SLrCdeVt78ExAqGKaNbwxhzkbcG47FSm/tAb3TmDDmCExwfz9oqpHhq85Fr7wnY 4n9TPO5YSEfPfFjNa6f5lOwdW4kne068vVRNrSS4xIm4cJqB2kSgju1WxANjZPLKDF k/e2RQuwZZEM58HekClhlje4FGksSuCxMLW+gviQ= Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D2FB16A82E; Fri, 1 May 2026 05:00:58 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id Z7rN5QuReiBv; Fri, 1 May 2026 05:00:58 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1777633254; bh=BR0SJsIDmDUIj4vJm1RKuh1kDfscVCdi+8Otb0VBfb4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s/GubcDDI7DcJGfEkFOCddX1TNZCb3TfT2jwMwMNthy725zpKSSMbcToxzhdcxvIS 6DK91i/9SHW3dwKFMHD5fgTxUW+UAg4tXDdRfMPdKjzU/siKQiCYEueQ3Ou+T4jONV FxhiVfEGk5aJSZnbz8O1DFQtKJgj9fubvaHVJGZI= Received: from u-boot.org (unknown [174.51.25.52]) by mail.u-boot.org (Postfix) with ESMTPSA id 5BF586A7AF; Fri, 1 May 2026 05:00:54 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Fri, 1 May 2026 04:59:53 -0600 Message-ID: <20260501110040.1874719-2-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260501110040.1874719-1-sjg@u-boot.org> References: <20260501110040.1874719-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: DALOZ3633RLO2DSXXLQDDCDUQVLFKNEZ X-Message-ID-Hash: DALOZ3633RLO2DSXXLQDDCDUQVLFKNEZ X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 01/29] buildman: Hide 'Boards not built' by default List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass When building a tools-only series, every commit shows a 'Boards not built' line listing all selected boards, which clutters the output without adding useful information. Add a --show-not-built flag to control this output. The default is now to hide the list; pass --show-not-built to see it. Signed-off-by: Simon Glass --- tools/buildman/builder.py | 3 ++- tools/buildman/buildman.rst | 5 +++++ tools/buildman/cmdline.py | 3 +++ tools/buildman/control.py | 3 ++- tools/buildman/func_test.py | 2 +- tools/buildman/outcome.py | 1 + tools/buildman/resulthandler.py | 3 ++- tools/buildman/test.py | 12 ++++++++---- tools/buildman/test_builder.py | 3 ++- tools/buildman/worker.py | 3 ++- 10 files changed, 28 insertions(+), 10 deletions(-) diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index b3cc136d036..b07eb675ea9 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -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 diff --git a/tools/buildman/buildman.rst b/tools/buildman/buildman.rst index 2bc0265a61d..4a6c8ee0796 100644 --- a/tools/buildman/buildman.rst +++ b/tools/buildman/buildman.rst @@ -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 diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py index 5396ee640fa..34e88048468 100644 --- a/tools/buildman/cmdline.py +++ b/tools/buildman/cmdline.py @@ -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, diff --git a/tools/buildman/control.py b/tools/buildman/control.py index bb866910491..87b7ffa09d8 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -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 diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py index 90c4974960e..98b2a899e28 100644 --- a/tools/buildman/func_test.py +++ b/tools/buildman/func_test.py @@ -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) diff --git a/tools/buildman/outcome.py b/tools/buildman/outcome.py index 18c97e523a0..42a9f1f196b 100644 --- a/tools/buildman/outcome.py +++ b/tools/buildman/outcome.py @@ -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 diff --git a/tools/buildman/resulthandler.py b/tools/buildman/resulthandler.py index fca8e7d6ba1..85f0112e765 100644 --- a/tools/buildman/resulthandler.py +++ b/tools/buildman/resulthandler.py @@ -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 diff --git a/tools/buildman/test.py b/tools/buildman/test.py index 998f2227281..74a39c9556d 100644 --- a/tools/buildman/test.py +++ b/tools/buildman/test.py @@ -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) diff --git a/tools/buildman/test_builder.py b/tools/buildman/test_builder.py index 74f19ec9528..282d446b1ec 100644 --- a/tools/buildman/test_builder.py +++ b/tools/buildman/test_builder.py @@ -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): diff --git a/tools/buildman/worker.py b/tools/buildman/worker.py index ddf023a1979..c0d561f877e 100644 --- a/tools/buildman/worker.py +++ b/tools/buildman/worker.py @@ -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(