From c424edd055c19dd761c9071bcd6732e01b5cfecc Mon Sep 17 00:00:00 2001 From: Jacob Dahl Date: Thu, 26 Feb 2026 14:11:21 -0900 Subject: [PATCH] ci: sort board scan order to fix VOXL2 build ordering os.scandir() returns entries in non-deterministic order, which caused voxl2-slpi to sometimes build before voxl2_default (which it depends on). Sort all os.scandir() calls lexicographically by name so the shorter prefix voxl2 always precedes voxl2-slpi. --- Tools/ci/generate_board_targets_json.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tools/ci/generate_board_targets_json.py b/Tools/ci/generate_board_targets_json.py index 214edd8186..7931bacd8a 100755 --- a/Tools/ci/generate_board_targets_json.py +++ b/Tools/ci/generate_board_targets_json.py @@ -148,18 +148,18 @@ grouped_targets['base']['manufacturers'] = {} grouped_targets['base']['manufacturers']['px4'] = [] grouped_targets['base']['manufacturers']['px4'] += metadata_targets -for manufacturer in os.scandir(os.path.join(source_dir, '../boards')): +for manufacturer in sorted(os.scandir(os.path.join(source_dir, '../boards')), key=lambda e: e.name): if not manufacturer.is_dir(): continue if manufacturer.name in excluded_manufacturers: if verbose: print(f'excluding manufacturer {manufacturer.name}') continue - for board in os.scandir(manufacturer.path): + for board in sorted(os.scandir(manufacturer.path), key=lambda e: e.name): if not board.is_dir(): continue - for files in os.scandir(board.path): + for files in sorted(os.scandir(board.path), key=lambda e: e.name): if files.is_file() and files.name.endswith('.px4board'): board_name = manufacturer.name + '_' + board.name