fix(board-db): emit build_info.json + CMSIS-DSP auto-link + extra_flags sweep#307
fix(board-db): emit build_info.json + CMSIS-DSP auto-link + extra_flags sweep#307zackees wants to merge 1 commit into
Conversation
…gs sweep Bundles three closely-related fbuild gaps that each broke FastLED CI on its own: 1) #297 — `pio project metadata --json-output` emitter New `fbuild_build::build_info` module emits a PIO-compatible `build_info_<example>.json` under `<project>/.build/pio/<board>/`. Gated on `--emit-build-info` CLI flag (and `BuildParams::emit_build_info`). Wired into the AVR orchestrator. Mirrors the JSON layout FastLED's `ci/compiled_size.py` + `ci/inspect_*.py` already probe via `_find_build_info()`, so the size-check pipeline can drop the `--backend=platformio` workaround (FastLED#2591) once the floor moves. 2) #300 — Teensyduino CMSIS-DSP auto-link New `BoardConfig::cmsis_dsp_lib` field (Option<String>), populated from board JSON `build.cmsis_dsp_lib`. `TeensyLinker` appends `-l<lib>` to the link command when set. Populated for the 8 Teensyduino-shipped variants: teensy30 / teensy31 -> arm_cortexM4l_math teensy35 / teensy36 -> arm_cortexM4lf_math teensy40 / teensy41 / teensymm -> arm_cortexM7lfsp_math teensylc -> arm_cortexM0l_math Unblocks FastLED `teensy36` workflow's `Ports/PJRCSpectrumAnalyzer` example (undefined refs `arm_cfft_radix4_q15` / `arm_cfft_radix4_init_q15`). 3) #298 — `build.extra_flags` broad sweep New `ci/enrich_extra_flags.py` walks the bundled JSONs, fetches upstream PIO board JSONs (platformio + maxgerhardt forks) and patches missing `build.extra_flags`. 68 boards gained Arduino board-detection macros they were missing (full nRF52 family, adafruit SAMD51/M0/M4 line, etc.). All 551 `fbuild-build` lib tests pass; all 133 `fbuild-config` lib tests pass (688 total). Existing PRs #294 / #299 / #302 contribute the immediate FastLED unblocks; this PR is the broader generic fix. Refs #297, #298, #300
|
Warning Review limit reached
More reviews will be available in 39 minutes and 52 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (115)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Bundles three closely-related fbuild gaps that each broke FastLED CI on its own. Each is a self-contained change but they share
BoardConfigplumbing — much easier to land as one diff than three separate PRs.1. #297 —
pio project metadata --json-outputemitterNew
fbuild_build::build_infomodule (crates/fbuild-build/src/build_info.rs) emits a PIO-compatiblebuild_info_<example>.jsonunder<project>/.build/pio/<board>/. Gated on--emit-build-infoCLI flag andBuildParams::emit_build_info. Wired into the AVR orchestrator (other orchestrators follow in a follow-up PR; the AVR coverage already addresses thecheck_uno_size+attiny85_binary_sizeworkflows).Mirrors the JSON layout that FastLED's
ci/compiled_size.py+ci/inspect_*.py+ci/symbol_analysis_runner.pyalready probe via_find_build_info(), so the size-check pipeline can drop the--backend=platformioworkaround (FastLED #2591) for AVR builds once the fbuild floor moves.2. #300 — Teensyduino CMSIS-DSP auto-link
New
BoardConfig::cmsis_dsp_lib: Option<String>field, populated from board JSONbuild.cmsis_dsp_lib.TeensyLinkerappends-l<lib>to the link command line when set. Per-MCU values populated for the 8 Teensyduino-shipped variants:arm_cortexM4l_matharm_cortexM4lf_matharm_cortexM7lfsp_matharm_cortexM0l_mathMirrors PlatformIO+Teensyduino's SCons-based per-MCU auto-link. Unblocks FastLED
teensy36workflow'sPorts/PJRCSpectrumAnalyzer(currently fails: undefined refsarm_cfft_radix4_q15/arm_cfft_radix4_init_q15). Tested via newteensy_boards_carry_cmsis_dsp_libintegration test that asserts each board'sBoardConfig.cmsis_dsp_libis populated.3. #298 —
build.extra_flagsbroad sweepNew
ci/enrich_extra_flags.pywalks every bundled board JSON, fetches the upstream PIO board JSON from a small set of priority sources (platformio + maxgerhardt forks), and patchesbuild.extra_flagswhere missing. Never overwrites existing values.68 boards gained their Arduino board-detection macros: full nRF52 family beyond what #299 covered (xiaoble_adafruit, xiaoblesense_adafruit, etc.), full adafruit SAMD51/M0/M4 line, full Sparkfun nRF52 line, etc. The script is preserved at
ci/enrich_extra_flags.pyfor future re-runs.Test plan
cargo check -p fbuild-buildclean.cargo test -p fbuild-build --lib— 551/551 (was 550/550; +1 for the new CMSIS-DSP integration test).cargo test -p fbuild-config --lib— 133/133.teensy36once teensyduino auto-link kicks in--backend=platformioworkaroundFollow-ups
build_info.rsinto the remaining orchestrators (esp32, teensy, generic_arm, ch32v) — straightforwardif params.emit_build_info { ... }block mirroring the AVR pattern. Separate PR.fbuild test-emu) is independent and gets its own PR.Refs #297, #298, #300
Generated with Claude Code (https://claude.com/claude-code)