You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
FastLED CI started routing STM32 boards through fbuild after FastLED commit 82afa960b ("ci: make fbuild the default for board builds", 2026-04-23), and every STM32 board now fails because fbuild's STM32 orchestrator does not add Arduino_Core_STM32 framework library include paths. The failure signature is identical to the previously-fixed Teensy bug #163 / PR #164.
Other bundled libraries are also present: EEPROM, Wire, Servo, SoftwareSerial, USBDevice, SrcWrapper, IWatchdog, Keyboard, Mouse, SubGhz, VirtIO, RGB_LED_TLC59731, CMSIS_DSP.
The STM32 orchestrator installs the core and toolchain but doesn't walk libraries/*/src/ and add those include dirs to the sketch's compile command — exactly the bug pattern that #163 described for Teensy and that #164 fixed by adding Teensyduino framework-library include discovery.
fbuild STM32 builds should resolve and expose Arduino_Core_STM32 bundled framework libraries to sketches — at minimum SPI — matching PlatformIO's LDF behavior for framework = arduino on ststm32.
The libraries/*/src/ subdirs of the Arduino_Core_STM32 package should be discovered and added as include paths (and, for libraries with sources, compiled and linked) the same way PR #164 did for the Teensyduino package.
Suggested direction
Mirror the fix from #164 in the STM32 orchestrator:
Scan <framework>/libraries/*/ inside the Arduino_Core_STM32 package.
crates/fbuild-packages/src/library/ (add stm32_core.rs modeled after teensy_core.rs)
Impact
All STM32 FastLED boards fail in CI until this is fixed. FastLED could add STM32 back to an allowlist and restore PlatformIO as the backend for STM32 as a workaround, but the proper fix belongs in fbuild.
Versions
fbuild 2.2.3 (also reproduced in 2.2.1 in prior CI runs after the default switch)
Summary
FastLED CI started routing STM32 boards through fbuild after FastLED commit
82afa960b("ci: make fbuild the default for board builds", 2026-04-23), and every STM32 board now fails because fbuild's STM32 orchestrator does not add Arduino_Core_STM32 framework library include paths. The failure signature is identical to the previously-fixed Teensy bug #163 / PR #164.Evidence
Failing FastLED job (fbuild 2.2.3, 2026-04-24):
https://github.com/FastLED/FastLED/actions/runs/24910761486/job/72951522762
The Arduino core and SrcWrapper (196 files) compile fine; the failure is limited to the sketch translation unit that transitively includes
<SPI.h>.All STM32 boards fail:
stm32f103c8_bluepill— https://github.com/FastLED/FastLED/actions/runs/24910761486stm32f411ce_blackpill— https://github.com/FastLED/FastLED/actions/runs/24910761453Pre-switch (run 24821237314, 2026-04-23, using
pio run) — all STM32 boards passed.Root cause
fbuild successfully downloads the STM32duino framework package.
SPI.hexists in the fbuild cache at:Other bundled libraries are also present:
EEPROM,Wire,Servo,SoftwareSerial,USBDevice,SrcWrapper,IWatchdog,Keyboard,Mouse,SubGhz,VirtIO,RGB_LED_TLC59731,CMSIS_DSP.The STM32 orchestrator installs the core and toolchain but doesn't walk
libraries/*/src/and add those include dirs to the sketch's compile command — exactly the bug pattern that #163 described for Teensy and that #164 fixed by adding Teensyduino framework-library include discovery.Reproduction
In a FastLED checkout on master:
Reproduces locally on Windows with fbuild 2.2.3 and in CI on Ubuntu. Full failure reproduces in ~20s after the 196-file core compile.
Minimal sketch that triggers it (FastLED
examples/Blink/Blink.inois sufficient):Generated
platformio.ini(from FastLED CI):Expected behavior
fbuild STM32 builds should resolve and expose Arduino_Core_STM32 bundled framework libraries to sketches — at minimum
SPI— matching PlatformIO's LDF behavior forframework = arduinoonststm32.The
libraries/*/src/subdirs of the Arduino_Core_STM32 package should be discovered and added as include paths (and, for libraries with sources, compiled and linked) the same way PR #164 did for the Teensyduino package.Suggested direction
Mirror the fix from #164 in the STM32 orchestrator:
<framework>/libraries/*/inside the Arduino_Core_STM32 package.examples/,extras/,tests/.src/(or root, per Arduino library spec) to the sketch's include path.SPI.cppand needs linking.Relevant fbuild code (by analogy with PR #164):
crates/fbuild-build/src/stm32/orchestrator.rs(or equivalent)crates/fbuild-packages/src/library/(addstm32_core.rsmodeled afterteensy_core.rs)Impact
All STM32 FastLED boards fail in CI until this is fixed. FastLED could add STM32 back to an allowlist and restore PlatformIO as the backend for STM32 as a workaround, but the proper fix belongs in fbuild.
Versions
0dfcea64a