[PATCH v3 80/81] buildman: Add an option to check maintainers and targets

Simon Glass sjg at chromium.org
Sun Jul 16 02:36:48 CEST 2023

In poking around it seems that many boards don't define a CONFIG_TARGET
Kconfig variable. This is not strictly necessary, but add an option to
buildman so these can be viewed.

Signed-off-by: Simon Glass <sjg at chromium.org>

Changes in v3:
- Add new patch with an option to check maintains and targets

 tools/buildman/buildman.rst |  4 ++++
 tools/buildman/cmdline.py   |  3 +++
 tools/buildman/control.py   | 14 +++++++++-----
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/tools/buildman/buildman.rst b/tools/buildman/buildman.rst
index f6905d499fcb..934fc79e6902 100644
--- a/tools/buildman/buildman.rst
+++ b/tools/buildman/buildman.rst
@@ -1328,6 +1328,10 @@ Use the `--maintainer-check` option to check this::
 Buildman returns with an exit code of 2 if there area any warnings.
+An experimental `--full-check option` also checks for boards which don't have a
+CONFIG_TARGET_xxx where xxx corresponds to their defconfig filename. This is
+not strictly necessary, but may be useful information.
 Checking the command
diff --git a/tools/buildman/cmdline.py b/tools/buildman/cmdline.py
index 4331fbdab310..052e223597c8 100644
--- a/tools/buildman/cmdline.py
+++ b/tools/buildman/cmdline.py
@@ -60,6 +60,9 @@ def add_upto_m(parser):
           help="Fetch a toolchain for architecture FETCH_ARCH ('list' to list)."
               ' You can also fetch several toolchains separate by comma, or'
               " 'all' to download all")
+    parser.add_argument(
+          '--full-check', action='store_true',
+          help='Check maintainer entries and TARGET configs')
     parser.add_argument('-g', '--git', type=str,
           help='Git repo containing branch to build', default='.')
     parser.add_argument('-G', '--config-file', type=str,
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index c96018252a57..5c5720034b64 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -365,8 +365,8 @@ def get_toolchains(toolchains, col, override_toolchain, fetch_arch,
     return toolchains
-def get_boards_obj(output_dir, regen_board_list, maintainer_check, threads,
-                   verbose):
+def get_boards_obj(output_dir, regen_board_list, maintainer_check, full_check,
+                   threads, verbose):
     """Object the Boards object to use
     Creates the output directory and ensures there is a boards.cfg file, then
@@ -376,6 +376,8 @@ def get_boards_obj(output_dir, regen_board_list, maintainer_check, threads,
         output_dir (str): Output directory to use
         regen_board_list (bool): True to just regenerate the board list
         maintainer_check (bool): True to just run a maintainer check
+        full_check (bool): True to just run a full check of Kconfig and
+            maintainers
         threads (int or None): Number of threads to use to create boards file
         verbose (bool): False to suppress output from boards-file generation
@@ -386,8 +388,9 @@ def get_boards_obj(output_dir, regen_board_list, maintainer_check, threads,
     brds = boards.Boards()
     nr_cpus = threads or multiprocessing.cpu_count()
-    if maintainer_check:
-        warnings = brds.build_board_list(jobs=nr_cpus)[1]
+    if maintainer_check or full_check:
+        warnings = brds.build_board_list(jobs=nr_cpus,
+                                         warn_targets=full_check)[1]
         if warnings:
             for warn in warnings:
                 print(warn, file=sys.stderr)
@@ -614,7 +617,8 @@ def do_buildman(args, toolchains=None, make_func=None, brds=None,
     # Work out what subset of the boards we are building
     if not brds:
         brds = get_boards_obj(output_dir, args.regen_board_list,
-                              args.maintainer_check, args.threads, args.verbose)
+                              args.maintainer_check, args.full_check,
+                              args.threads, args.verbose)
         if isinstance(brds, int):
             return brds

More information about the U-Boot mailing list