]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
buildman: Warn about dangling maintainer entries
authorSimon Glass <sjg@chromium.org>
Wed, 19 Jul 2023 23:48:19 +0000 (17:48 -0600)
committerSimon Glass <sjg@chromium.org>
Mon, 24 Jul 2023 15:34:10 +0000 (09:34 -0600)
Other than the top-level MAINTAINERS file, all maintainer entries should
actually reference a target. Add a warning to detect those that do not.

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

index df57f278daad5e3d934e48379c82abf3d7f5fb17..122fe7090bf84d23fc2b8a85071ee1f5515f368a 100644 (file)
@@ -345,17 +345,28 @@ class MaintainersDatabase:
             srcdir (str): Directory containing source code (Kconfig files)
             fname (str): MAINTAINERS file to be parsed
         """
-        def add_targets():
-            """Add any new targets"""
+        def add_targets(linenum):
+            """Add any new targets
+
+            Args:
+                linenum (int): Current line number
+            """
+            added = False
             if targets:
                 for target in targets:
                     self.database[target] = (status, maintainers)
+                    added = True
+            if not added and (status != '-' and maintainers):
+                leaf = fname[len(srcdir) + 1:]
+                if leaf != 'MAINTAINERS':
+                    self.warnings.append(
+                        f'WARNING: orphaned defconfig in {leaf} ending at line {linenum + 1}')
 
         targets = []
         maintainers = []
         status = '-'
         with open(fname, encoding="utf-8") as inf:
-            for line in inf:
+            for linenum, line in enumerate(inf):
                 # Check also commented maintainers
                 if line[:3] == '#M:':
                     line = line[1:]
@@ -388,11 +399,11 @@ class MaintainersDatabase:
                                 if match and not rear:
                                     targets.append(front)
                 elif line == '\n':
-                    add_targets()
+                    add_targets(linenum)
                     targets = []
                     maintainers = []
                     status = '-'
-        add_targets()
+        add_targets(linenum)
 
 
 class Boards:
index 43087b4e08d2804ddf76dfb6d1c50366348b727d..eb1fa9f0b86039512cbe4de49f75e1e500d2213f 100644 (file)
@@ -917,7 +917,8 @@ Active  aarch64     armv8 - armltd total_compute board2
         params_list, warnings = self._boards.build_board_list(config_dir, src)
         self.assertEquals(2, len(params_list))
         self.assertEquals(
-            ["WARNING: no status info for 'board0'",
+            ['WARNING: orphaned defconfig in boards/board0/MAINTAINERS ending at line 4',
+             "WARNING: no status info for 'board0'",
              "WARNING: no maintainers for 'board0'"], warnings)
 
         # Remove the maintainer line (M:) from a file (this should be fine)
@@ -937,9 +938,11 @@ Active  aarch64     armv8 - armltd total_compute board2
         self.assertEquals(2, len(params_list))
         self.assertFalse(warnings)
 
-        # Add another record, this should be ignored
+        # Add another record, this should be ignored with a warning
         extra = '\n\nAnother\nM: Fred\nF: configs/board9_defconfig\nS: other\n'
         tools.write_file(main, data + extra, binary=False)
         params_list, warnings = self._boards.build_board_list(config_dir, src)
         self.assertEquals(2, len(params_list))
-        self.assertFalse(warnings)
+        self.assertEquals(
+            ['WARNING: orphaned defconfig in boards/board0/MAINTAINERS ending at line 16'],
+             warnings)