Skip to content

tracking: platform_packages override silently ignored across framework packages (audit, sibling of #663) #664

Description

@zackees

TL;DR

#663 reports that nxplpc silently ignores platform_packages = framework-arduino-lpc8xx@<URL>#<sha> because ArduinoCoreLpc8xx pins the framework URL + commit + sha256 as const &str and the orchestrator never reads platform_packages from env_config. The same const-pin pattern shows up across every other framework package in crates/fbuild-packages/src/library/. This issue audits each one to find which platforms have the same bug and which (if any) already honor platform_packages.

PlatformIO honors the consumer's platform_packages line. Wherever fbuild silently ignores it, downstream bisection workflows (e.g. FastLED/FastLED#3325) are blocked on the fbuild backend.

Audit result: bug exists in 16 / 16 platforms

Every framework package audited follows the same pattern: URL pinned in a const, only-default constructor, orchestrator never reads platform_packages from env_config. Verdict + evidence is on each child issue.

CMSIS (cmsis_framework.rs, cmsis_atmel.rs) and the PlatformIO registry helper (registry.rs) were out of scope — not user-overridable framework packages.

Next step

The audit showed the bug is universal. The fix proposed in #663 (per-package with_override constructor + shared platform_packages parser) needs to generalize: every orchestrator listed above needs the same plumbing. Folding the override-construction into PackageBase so adding it to a new package is a one-line constructor variant — instead of N hand-written with_overrides — is worth considering before implementation begins.

  • Every child issue investigated and verdict landed.
  • Open a follow-up implementation issue: shared parse_platform_packages_entry helper + PackageBase-level override (or per-package with_override) + orchestrator wiring across all 16 platforms.

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions