buildman: Detect boards with no CONFIG_TARGET defined
authorSimon Glass <sjg@chromium.org>
Wed, 19 Jul 2023 23:48:22 +0000 (17:48 -0600)
committerSimon Glass <sjg@chromium.org>
Mon, 24 Jul 2023 15:34:10 +0000 (09:34 -0600)
We generally expected exactly one of these. Add a check for it.

Note: This warning is not displayed by default. An option will be added
to enable it.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/buildman/boards.py
tools/buildman/func_test.py

index 56fb6f4..dabf694 100644 (file)
@@ -262,6 +262,10 @@ class KconfigScanner:
                 else:
                     target = tname
 
+        if not target:
+            cfg_name = expect_target.replace('-', '_').upper()
+            warnings.append(f'WARNING: {leaf}: No TARGET_{cfg_name} enabled')
+
         params['target'] = expect_target
 
         # fix-up for aarch64
index 154fa61..71f3029 100644 (file)
@@ -951,6 +951,7 @@ Active  aarch64     armv8 - armltd total_compute board2
 
         # Add another TARGET to the Kconfig
         tools.write_file(main, data, binary=False)
+        orig_kc_data = tools.read_file(kc_file)
         extra = (b'''
 if TARGET_BOARD2
 config TARGET_OTHER
@@ -958,9 +959,19 @@ config TARGET_OTHER
 \tdefault y
 endif
 ''')
-        tools.write_file(kc_file, tools.read_file(kc_file) + extra)
+        tools.write_file(kc_file, orig_kc_data + extra)
         params_list, warnings = self._boards.build_board_list(config_dir, src)
         self.assertEquals(2, len(params_list))
         self.assertEquals(
             ['WARNING: board2_defconfig: Duplicate TARGET_xxx: board2 and other'],
              warnings)
+
+        # Remove the TARGET_BOARD0 Kconfig option
+        lines = [b'' if line == b'config TARGET_BOARD2\n' else line
+                  for line in orig_kc_data.splitlines(keepends=True)]
+        tools.write_file(kc_file, b''.join(lines))
+        params_list, warnings = self._boards.build_board_list(config_dir, src)
+        self.assertEquals(2, len(params_list))
+        self.assertEquals(
+            ['WARNING: board2_defconfig: No TARGET_BOARD2 enabled'],
+             warnings)