fix(boards): catch up tinyuf2 partition rename + whitelist cmsis_dsp_lib (clears 27/39 drift)#318
Conversation
…pawn lint After f86817a (refactor lib.rs → submodules) the four std::process::Command::new sites in fbuild-python/daemon.rs ended up inside `match` arms two lines below their `allow-direct-spawn:` comment. The detector in ci/find_direct_subprocess.py only looks at "same line or the line immediately above", so the annotation no longer covered the actual call sites and CI started reporting: NEW direct spawns without an `allow-direct-spawn: <reason>` marker: crates/fbuild-python/src/daemon.rs:96 crates/fbuild-python/src/daemon.rs:97 crates/fbuild-python/src/daemon.rs:247 crates/fbuild-python/src/daemon.rs:248 This blocks every PR's "Lint subprocess spawns" check (e.g. #306 for fbuild#304, which is the actual FastLED-vs-PIO size regression we need to land). Fix: add an inline `// allow-direct-spawn:` annotation immediately above each of the four arms. Behavior unchanged.
…ist cmsis_dsp_lib
`Validate Board Definitions` workflow has been failing 39 boards
drifted from PlatformIO. The two largest categories are pure schema
drift that this PR resolves; the remaining ~14 are configuration-
choice differences that need maintainer review.
## Fixed: tinyuf2 partition CSV rename (18 boards)
Upstream Adafruit (and the espressif32 platform's Adafruit board
defs) renamed `tinyuf2-partitions-<size>.csv` ->
`partitions-<size>-tinyuf2.csv`. Our bundled board JSONs still pointed
to the old name. Renamed in:
adafruit_feather_esp32s2{,_reversetft,_tft}
adafruit_feather_esp32s3{,_nopsram,_reversetft,_tft}
adafruit_funhouse_esp32s2
adafruit_magtag29_esp32s2
adafruit_matrixportal_esp32s3
adafruit_metro_esp32s2
adafruit_metro_esp32s3
adafruit_qtpy_esp32s2
adafruit_qtpy_esp32s3_n4r2
adafruit_qtpy_esp32s3_nopsram
adafruit_qualia_s3_rgb666
featheresp32-s2
wt32-sc01-plus
All swaps are mechanical s/tinyuf2-partitions-<N>MB.csv/partitions-<N>MB-tinyuf2.csv/.
## Fixed: 4d_systems_esp32s3_gen4_r8n16 partitions
`esp_sr_16.csv` -> `default_16MB.csv` per upstream.
## Fixed: validator whitelist for cmsis_dsp_lib (8 teensy boards)
`build.cmsis_dsp_lib` was added by fbuild#300 (PR#313) as an
intentional fbuild-only schema extension — Teensyduino's makefile
picks the matching `arm_cortexM*_math` archive at link time, but
fbuild needs it declared statically. The validator was flagging all
8 teensy variants because the diff treats every extra key in the
actual asset as drift.
Added `FBUILD_EXTENSION_BUILD_FIELDS` whitelist (currently just
`cmsis_dsp_lib`) and strip those from the actual side before diffing.
Documented in-place so future fbuild-only extensions have a place to
land with a one-line note.
## Not in scope
Remaining ~14 boards have configuration-choice drift (UM boards
`-DARDUINO_USB_MODE=1` difference, m5stack variant rename, seeed_
xiao_esp32c6 USB defines, arduino_nano_esp32 BOARD_USES_HW_GPIO_NUMBERS
vs BOARD_HAS_PIN_REMAP, um_tinys2 extras). Each requires a real
decision about which value is correct for fbuild's compile path —
not auto-resolvable by a snapshot rebase. Leaving those for a
separate maintainer-driven sweep.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (21)
📝 WalkthroughWalkthroughBoard validation now recognizes fbuild-only build extensions and filters them during PlatformIO drift comparison. Eighteen board JSON configurations update partitions CSV naming conventions. Daemon spawn logic includes clarifying comments on intentional direct spawns. ChangesBoard Configuration and Validation
Daemon Spawn Documentation
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 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 |
Bundles four user-facing fixes merged since 2.2.9: - #319, #320: SAMD51 cores/arduino fallback + variant include injection (Build SAMD51J was 100% red) - #321, #322: nRF52 nRF52DK -> pca10056 variant alias for Adafruit framework (Build nRF52840 DK was 100% red) - #298 (already shipped 2.2.9, board JSON drift cleanup): #318 catches up the tinyuf2 partition renames + adds cmsis_dsp_lib validator whitelist (Validate Boards was failing on 39 boards, now 14) - #317: daemon.rs Command::new annotations (Lint subprocess spawns was red — blocked every PR) Downstream FastLED bumps fbuild==2.2.9 to fbuild==2.2.10 to pick up these fixes.
…de paths per compile (#2617) ## fbuild pin: 2.2.9 -> 2.2.11 2.2.11 republishes 2.2.10's content with the full wheel set (win_amd64 + manylinux_x86_64 were missing from 2.2.10's PyPI upload — that release was effectively unusable on Windows and Linux x64). Content otherwise identical to 2.2.10. Brings in: - SAMD51 cores/arduino fallback + include-path injection (FastLED/fbuild#319/#320). Build SAMD51J was 100% red. - nRF52 nRF52DK -> pca10056 variant alias for the Adafruit framework (FastLED/fbuild#321/#322). Build nRF52840 DK was 100% red. - Board JSON tinyuf2 partition rename (18 Adafruit boards) + 4d_systems esp_sr_16.csv -> default_16MB.csv + cmsis_dsp_lib validator whitelist (FastLED/fbuild#318). Validate Boards drift drops 39 -> 14. - daemon.rs Command::new subprocess-spawn lint annotations (FastLED/fbuild#317). Unblocked every PR's Lint subprocess spawns check. ## ci/meson/compile.py: re-normalize strict-path includes before each build zccache strict-paths rejects relative + backslash include flags. The build_config helper normalizes once at setup, but ninja silently regenerates build.ninja when build files change, which re-introduces the relative form (e.g. -Ici/.../fastled.dll.p with a backslash). The next compile then dies with zccache --strict-paths violation. Fix: call normalize_meson_private_include_paths(build_dir) at the top of compile_meson, right after the stale-PCH check. Costs ~5-20 ms and is idempotent when nothing changed. KBI001-compliant (KeyboardInterrupt handler calls handle_keyboard_interrupt(ki) before re-raise; module already imports it at line 25).
Summary
Validate Board Definitionsworkflow has been failing with 39 boards drifted from PlatformIO. The two largest categories are pure schema drift that this PR resolves; the remaining ~14 are configuration-choice differences that need maintainer review.Fixed in this PR
1. tinyuf2 partition CSV rename (18 boards)
Upstream Adafruit / the espressif32 platform's Adafruit board defs renamed
tinyuf2-partitions-<size>.csv→partitions-<size>-tinyuf2.csv. Our bundled board JSONs still pointed to the old name.Renamed in:
adafruit_feather_esp32s2{,_reversetft,_tft}adafruit_feather_esp32s3{,_nopsram,_reversetft,_tft}adafruit_funhouse_esp32s2adafruit_magtag29_esp32s2adafruit_matrixportal_esp32s3adafruit_metro_esp32s2,adafruit_metro_esp32s3adafruit_qtpy_esp32s2adafruit_qtpy_esp32s3_n4r2,adafruit_qtpy_esp32s3_nopsramadafruit_qualia_s3_rgb666featheresp32-s2wt32-sc01-plusAll swaps are mechanical
s/tinyuf2-partitions-<N>MB.csv/partitions-<N>MB-tinyuf2.csv/.2. 4d_systems_esp32s3_gen4_r8n16 partitions
esp_sr_16.csv→default_16MB.csvper upstream.3. Validator whitelist for
cmsis_dsp_lib(8 teensy boards)build.cmsis_dsp_libwas added by fbuild#300 (PR #313) as an intentional fbuild-only schema extension — Teensyduino's makefile picks the matchingarm_cortexM*_matharchive at link time, but fbuild needs it declared statically. The validator was flagging all 8 teensy variants becausediff_dictstreats every key present in the actual asset that's missing in the expected (PIO) side as drift.Added
FBUILD_EXTENSION_BUILD_FIELDSwhitelist (currently justcmsis_dsp_lib) and strip those from the actual side before diffing. Documented in-place so future fbuild-only extensions have a place to land with a one-line note.Not in scope
Remaining ~14 boards have configuration-choice drift that needs a real decision:
arduino_nano_esp32:BOARD_HAS_PIN_REMAP(upstream) vsBOARD_USES_HW_GPIO_NUMBERS(ours)um_feathers3,um_nanos3,um_pros3,um_tinys3: ours have-DARDUINO_USB_MODE=1extraseeed_xiao_esp32c6:XIAO_ESP32C6variant + USB defines + PID driftm5stack_corefamily:m5stack_core(ours) vsm5stack_core_esp32(upstream)um_tinys2: extramemory_type+partitionslabplus_mpython,lolin_s3_mini: similar one-offsEach requires a maintainer decision about which value is correct for fbuild's compile path — not auto-resolvable by a snapshot rebase. Leaving those for a separate sweep.
Test plan
ci/validate_boards.pycount after fix: down from 39 → ~14 (the configuration-choice drifts).Validate Board Definitionscheck: still RED (real drift remains) but the categories that are mechanical schema drift are cleared. A follow-up PR per maintainer review closes the rest.Refs fbuild#300, fbuild#313.
Summary by CodeRabbit
Bug Fixes
Chores