From 0aeaaa52a055fa91f086830a621295b2afe54d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Oct 2025 21:12:11 +0000 Subject: [PATCH 1/2] scripts: west_commands: don't search for HWMv1 boards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Support for HWMv1 was removed in Zephyr 4.2.0 Signed-off-by: Guðni Már Gilbert --- scripts/west_commands/boards.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/scripts/west_commands/boards.py b/scripts/west_commands/boards.py index 18267999d3a7b..b473839885325 100644 --- a/scripts/west_commands/boards.py +++ b/scripts/west_commands/boards.py @@ -92,20 +92,6 @@ def do_run(self, args, _): args.board_roots += module_settings['board_root'] args.soc_roots += module_settings['soc_root'] - for board in list_boards.find_boards(args): - if name_re is not None and not name_re.search(board.name): - continue - - if board.revisions: - revisions_list = ' '.join([rev.name for rev in board.revisions]) - else: - revisions_list = 'None' - - self.inf(args.format.format(name=board.name, arch=board.arch, - revision_default=board.revision_default, - revisions=revisions_list, - dir=board.dir, hwm=board.hwm, qualifiers='')) - for board in list_boards.find_v2_boards(args).values(): if name_re is not None and not name_re.search(board.name): continue From 67d0db02a9fdb64a20571db9b254dbc7e41b7978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 4 Oct 2025 21:13:51 +0000 Subject: [PATCH 2/2] scripts: list_boards: drop HWMv1 code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #97017 Support for HWMv1 was removed in Zephyr 4.2.0 Signed-off-by: Guðni Már Gilbert --- scripts/list_boards.py | 109 +---------------------------------------- 1 file changed, 1 insertion(+), 108 deletions(-) diff --git a/scripts/list_boards.py b/scripts/list_boards.py index b6c827e212334..5fb38d8e24d5f 100755 --- a/scripts/list_boards.py +++ b/scripts/list_boards.py @@ -5,9 +5,8 @@ import argparse import difflib -import itertools import sys -from collections import Counter, defaultdict +from collections import Counter from dataclasses import dataclass, field from pathlib import Path @@ -152,81 +151,6 @@ def from_qualifier(self, qualifiers): return node -def board_key(board): - return board.name - - -def find_arch2boards(args): - arch2board_set = find_arch2board_set(args) - return {arch: sorted(arch2board_set[arch], key=board_key) - for arch in arch2board_set} - - -def find_boards(args): - return sorted(itertools.chain(*find_arch2board_set(args).values()), - key=board_key) - - -def find_arch2board_set(args): - arches = sorted(find_arches(args)) - ret = defaultdict(set) - - for root in unique_paths(args.board_roots): - for arch, boards in find_arch2board_set_in(root, arches, args.board_dir).items(): - if args.board is not None: - ret[arch] |= {b for b in boards if b.name == args.board} - else: - ret[arch] |= boards - - return ret - - -def find_arches(args): - arch_set = set() - - for root in unique_paths(args.arch_roots): - arch_set |= find_arches_in(root) - - return arch_set - - -def find_arches_in(root): - ret = set() - arch = root / 'arch' - common = arch / 'common' - - if not arch.is_dir(): - return ret - - for maybe_arch in arch.iterdir(): - if not maybe_arch.is_dir() or maybe_arch == common: - continue - ret.add(maybe_arch.name) - - return ret - - -def find_arch2board_set_in(root, arches, board_dir): - ret = defaultdict(set) - boards = root / 'boards' - - for arch in arches: - if not (boards / arch).is_dir(): - continue - for maybe_board in (boards / arch).iterdir(): - if not maybe_board.is_dir(): - continue - if board_dir and maybe_board not in board_dir: - continue - for maybe_defconfig in maybe_board.iterdir(): - file_name = maybe_defconfig.name - if file_name.endswith('_defconfig') and not (maybe_board / BOARD_YML).is_file(): - board_name = file_name[:-len('_defconfig')] - ret[arch].add(Board(board_name, maybe_board, 'v1', arch=arch)) - - return ret - - def load_v2_boards(board_name, board_yml, systems): boards = {} board_extensions = [] @@ -426,37 +350,6 @@ def notfound(x): print(f'{b.name}') -def dump_boards(args): - arch2boards = find_arch2boards(args) - for arch, boards in arch2boards.items(): - if args.fuzzy_match is not None: - close_boards = difflib.get_close_matches(args.fuzzy_match, [b.name for b in boards]) - if not close_boards: - continue - boards = [b for b in boards if b.name in close_boards] - if args.cmakeformat is None: - print(f'{arch}:') - for board in boards: - if args.cmakeformat is not None: - info = args.cmakeformat.format( - NAME='NAME;' + board.name, - DIR='DIR;' + str(board.dir.as_posix()), - HWM='HWM;' + board.hwm, - VENDOR='VENDOR;NOTFOUND', - REVISION_DEFAULT='REVISION_DEFAULT;NOTFOUND', - REVISION_FORMAT='REVISION_FORMAT;NOTFOUND', - REVISION_EXACT='REVISION_EXACT;NOTFOUND', - REVISIONS='REVISIONS;NOTFOUND', - VARIANT_DEFAULT='VARIANT_DEFAULT;NOTFOUND', - SOCS='SOCS;', - QUALIFIERS='QUALIFIERS;' - ) - print(info) - else: - print(f' {board.name}') - - if __name__ == '__main__': args = parse_args() - dump_boards(args) dump_v2_boards(args)