summaryrefslogtreecommitdiff
path: root/tools/buildman
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-07-20 02:48:23 +0300
committerSimon Glass <sjg@chromium.org>2023-07-24 18:34:10 +0300
commitc649153b5885ebd2beeb9ebf997896da8321c480 (patch)
tree2c4e8c2190872d18b06a180d1e78687fe461bc7a /tools/buildman
parentad99599ca2b584eb388e09406c6ef2b21a488f0a (diff)
downloadu-boot-c649153b5885ebd2beeb9ebf997896da8321c480.tar.xz
buildman: Correct operation of MAINTAINERS N:
This doesn't work as intended. Instead it scans every defconfig file in the source tree. Fix it and add a test. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/buildman')
-rw-r--r--tools/buildman/boards.py15
-rw-r--r--tools/buildman/func_test.py17
2 files changed, 23 insertions, 9 deletions
diff --git a/tools/buildman/boards.py b/tools/buildman/boards.py
index dabf694e0d..bf396574e2 100644
--- a/tools/buildman/boards.py
+++ b/tools/buildman/boards.py
@@ -411,12 +411,17 @@ class MaintainersDatabase:
walk_path = os.walk(os.path.join(srcdir, 'configs'))
for dirpath, _, fnames in walk_path:
for cfg in fnames:
- path = os.path.join(dirpath, cfg)
+ path = os.path.join(dirpath, cfg)[len(srcdir) + 1:]
front, match, rear = path.partition('configs/')
- if not front and match:
- front, match, rear = rear.rpartition('_defconfig')
- if match and not rear:
- targets.append(front)
+ if front or not match:
+ continue
+ front, match, rear = rear.rpartition('_defconfig')
+
+ # Use this entry if it matches the defconfig file
+ # without the _defconfig suffix. For example
+ # 'am335x.*' matches am335x_guardian_defconfig
+ if match and not rear and re.search(rest, front):
+ targets.append(front)
elif line == '\n':
add_targets(linenum)
targets = []
diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py
index 71f3029f15..164dd7c620 100644
--- a/tools/buildman/func_test.py
+++ b/tools/buildman/func_test.py
@@ -933,8 +933,8 @@ Active aarch64 armv8 - armltd total_compute board2
# Move the contents of the second file into this one, removing the
# second file, to check multiple records in a single file.
- data = orig_data + tools.read_file(other, binary=False)
- tools.write_file(main, data, binary=False)
+ both_data = orig_data + tools.read_file(other, binary=False)
+ tools.write_file(main, both_data, binary=False)
os.remove(other)
params_list, warnings = self._boards.build_board_list(config_dir, src)
self.assertEquals(2, len(params_list))
@@ -942,7 +942,7 @@ Active aarch64 armv8 - armltd total_compute board2
# 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)
+ tools.write_file(main, both_data + extra, binary=False)
params_list, warnings = self._boards.build_board_list(config_dir, src)
self.assertEquals(2, len(params_list))
self.assertEquals(
@@ -950,7 +950,7 @@ Active aarch64 armv8 - armltd total_compute board2
warnings)
# Add another TARGET to the Kconfig
- tools.write_file(main, data, binary=False)
+ tools.write_file(main, both_data, binary=False)
orig_kc_data = tools.read_file(kc_file)
extra = (b'''
if TARGET_BOARD2
@@ -975,3 +975,12 @@ endif
self.assertEquals(
['WARNING: board2_defconfig: No TARGET_BOARD2 enabled'],
warnings)
+ tools.write_file(kc_file, orig_kc_data)
+
+ # Replace the last F: line of board 2 with an N: line
+ data = ''.join(both_data.splitlines(keepends=True)[:-1])
+ tools.write_file(main, data + 'N: oa.*2\n', binary=False)
+ params_list, warnings = self._boards.build_board_list(config_dir, src)
+ self.assertEquals(2, len(params_list))
+ self.assertFalse(warnings)
+