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 <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-07-19 17:48:19 -06:00
parent a114c61536
commit bc12d03493
2 changed files with 22 additions and 8 deletions

View file

@ -345,17 +345,28 @@ class MaintainersDatabase:
srcdir (str): Directory containing source code (Kconfig files) srcdir (str): Directory containing source code (Kconfig files)
fname (str): MAINTAINERS file to be parsed fname (str): MAINTAINERS file to be parsed
""" """
def add_targets(): def add_targets(linenum):
"""Add any new targets""" """Add any new targets
Args:
linenum (int): Current line number
"""
added = False
if targets: if targets:
for target in targets: for target in targets:
self.database[target] = (status, maintainers) 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 = [] targets = []
maintainers = [] maintainers = []
status = '-' status = '-'
with open(fname, encoding="utf-8") as inf: with open(fname, encoding="utf-8") as inf:
for line in inf: for linenum, line in enumerate(inf):
# Check also commented maintainers # Check also commented maintainers
if line[:3] == '#M:': if line[:3] == '#M:':
line = line[1:] line = line[1:]
@ -388,11 +399,11 @@ class MaintainersDatabase:
if match and not rear: if match and not rear:
targets.append(front) targets.append(front)
elif line == '\n': elif line == '\n':
add_targets() add_targets(linenum)
targets = [] targets = []
maintainers = [] maintainers = []
status = '-' status = '-'
add_targets() add_targets(linenum)
class Boards: class Boards:

View file

@ -917,7 +917,8 @@ Active aarch64 armv8 - armltd total_compute board2
params_list, warnings = self._boards.build_board_list(config_dir, src) params_list, warnings = self._boards.build_board_list(config_dir, src)
self.assertEquals(2, len(params_list)) self.assertEquals(2, len(params_list))
self.assertEquals( 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) "WARNING: no maintainers for 'board0'"], warnings)
# Remove the maintainer line (M:) from a file (this should be fine) # 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.assertEquals(2, len(params_list))
self.assertFalse(warnings) 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' extra = '\n\nAnother\nM: Fred\nF: configs/board9_defconfig\nS: other\n'
tools.write_file(main, data + extra, binary=False) tools.write_file(main, data + extra, binary=False)
params_list, warnings = self._boards.build_board_list(config_dir, src) params_list, warnings = self._boards.build_board_list(config_dir, src)
self.assertEquals(2, len(params_list)) self.assertEquals(2, len(params_list))
self.assertFalse(warnings) self.assertEquals(
['WARNING: orphaned defconfig in boards/board0/MAINTAINERS ending at line 16'],
warnings)