Skip to content

ESP32: provision per-MCU registry toolchains so pre-unified platform pins (pioarduino 51.x) actually build against their pin #1444

Description

@zackees

Summary

pioarduino platform releases that predate the unified ESP32 toolchain, such as 51.03.04 (arduino-esp32 3.0 / IDF 5.1), declare per-MCU toolchains from the PlatformIO registry:

"toolchain-xtensa-esp32s3": { "owner": "espressif", "version": "12.2.0+20230208" },
"toolchain-riscv32-esp":    { "owner": "espressif", "version": "12.2.0+20230208" }

fbuild's ESP32 toolchain resolution only understands the unified metadata-URL scheme (toolchain-xtensa-esp-elf / toolchain-riscv32-esp whose version is a URL). Until now such a pin was never actually built: releases before #1434 ignored platform = pins, and the fix for the resulting 404 falls back to the stable platform with a warning (the PR that fixes the 404).

What honoring these pins would take

  • Resolve owner/tool/name@version through the registry API. https://api.registry.platformio.org/v3/packages/espressif/tool/toolchain-xtensa-esp32s3 lists every version's files per system (linux_x86_64, windows_amd64, darwin_arm64, …) with download_url and sha256.
  • Per-MCU binary prefixes (xtensa-esp32s3-elf-, not xtensa-esp-elf-) and the matching directory layout.
  • GCC 12-era compile/link flag differences against the 3.0 framework.

Why it matters

FastLED pins 51.03.04 for its "IDF 5.1" coverage boards, and that coverage has silently built against stable the whole time. Honoring the pin would make it real.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions