From bc12d03493d7aa1bdda6d9dc40e2457fb8e33684 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 19 Jul 2023 17:48:19 -0600 Subject: [PATCH] buildman: Warn about dangling maintainer entries 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 --- tools/buildman/boards.py | 21 ++++++++++++++++----- tools/buildman/func_test.py | 9 ++++++--- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/buildman/boards.py b/tools/buildman/boards.py index df57f278da..122fe7090b 100644 --- a/tools/buildman/boards.py +++ b/tools/buildman/boards.py @@ -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: diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py index 43087b4e08..eb1fa9f0b8 100644 --- a/tools/buildman/func_test.py +++ b/tools/buildman/func_test.py @@ -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) -- 2.39.5