test scripts / build (astyle-cleanliness) (push) Canceled after 0s
test scripts / build (check_autotest_options) (push) Canceled after 0s
test scripts / build (logger_metadata) (push) Canceled after 0s
test scripts / build (param-file-validation) (push) Canceled after 0s
test scripts / build (param_parse) (push) Canceled after 0s
test scripts / build (python-cleanliness) (push) Canceled after 0s
test scripts / build (shellcheck) (push) Canceled after 0s
test scripts / build (validate_board_list) (push) Canceled after 0s
size_compare_branches wrote its progress CSV to the hardcoded path
/tmp/some.csv; make the destination a command-line option, and write
no progress file at all when the option is not given. The write
helper lives in the shared base class, and build_boards gains the
same option, writing task counts, remaining tasks and failures as
builds complete (in both parallel and sequential modes).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add check_commit_subsystems() to check_branch_conventions.py, which uses
the allowed_subsystems library to verify, for every commit on the branch,
that:
- the declared subsystem prefix is an allowed subsystem (a libraries/
directory, a directory the commit creates, or a curated extra), and
- every file changed in the commit belongs to that subsystem.
When a file does not belong to the declared subsystem the error lists the
subsystem(s) it could be part of; when the prefix itself is unknown the
error suggests the closest allowed name ("did you mean ...?"). Revert and
fixup! commits are skipped (handled by the existing checks). This runs in
the existing test_branch_conventions.yml workflow; no CI configuration
change is required.
The generic git helpers get_added_paths_for_commit() and
created_library_dirs() live on BuildScriptBase so other build scripts can
reuse them. Register allowed_subsystems as a known-first-party module in
pyproject.toml so the new import sorts correctly under ruff/isort.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
this prevent linter to trigger on none existing progress_prefix on the base class
Child class will now have TypeError if they don't implement progress_prefix
mixing the progress with stdout is causing problems for tools trying to consume stdout:
[update.py]: feature EF: Running (arm-none-eabi-nm --demangle --print-size /home/autotest/build/tmp/binaries.build/ZeroOneX6_Air/bin/blimp) in (.) (ZeroOneX6_Air,Blimp) not in build_options.py
[update.py]: feature EF: Running (strings /home/autotest/build/tmp/binaries.build/ZeroOneX6_Air/bin/blimp) in (.) (ZeroOneX6_Air,Blimp) not in build_options.py
Create a base class for build scripts that provides common utilities extracted from size_compare_branches.py:
- run_program(): Execute commands with output handling
- run_waf(): Run waf with consistent build environment
- run_git(): Run git commands
- find_current_git_branch_or_sha1(): Get current branch/SHA
- find_git_branch_merge_base(): Find merge base
Refactor size_compare_branches.py to use the base class, reducing duplicated code.
Other scripts with similar patterns can be refactored in the future:
- build_binaries.py
- build_bootloaders.py
- build_iofirmware.py
- build_peripherals.py
- configure_all.py