Skip to content

Migrate to espressif32 8.x (esp32 CI pinned to 7.1.3 meanwhile) #316

Open

Description

@ClutchplateDude

Background

espressif32 was the repo's only unpinned embedded platform and auto-drifted to 8.0.0 (released 2026-10-19 10:06 UTC — hours after the last green develop CI run at 00:22 UTC). Every PR opened since fails the Build (esp32) matrix job. The first hit was #315, whose diff cannot even affect the failing file (WifiControl.cpp compiles to an empty TU in matrix configs because WIFI_ENABLED is never set).

The immediate unblock is pinning espressif32@7.1.3 (last version CI ran green on, 2026-09-11). This issue tracks the actual 8.x migration so the pin can be lifted.

Known breakage on 8.0.0

src/Declination.cpp:49:

snprintf(achBufDeg + used, remaining, " (%s, %s)", valStr.c_str(), hoursStr.c_str());
error: ')' directive output may be truncated writing 1 byte into a region of size between 0 and 28 [-Werror=format-truncation=]

The 8.x GCC proves that writing the fixed tail of " (%s, %s)" into the remainder of the 32-byte global achBufDeg can truncate. The code has been unchanged since #281 (May 2026) and is green on 7.x, so this is purely the toolchain's stricter analysis — though the analysis is not wrong: worst-case runtime truncation is theoretically possible today (degree string ~9 chars + " (" + valStr + ", " + hoursStr + ")" can reach ~31 chars in a 32-byte buffer). A proper fix would assemble the tail into a fixed-size local and append with a bounded copy (or grow achBufDeg and restructure), rather than suppressing the warning.

Note: the CI run died at the first matrix configuration, so this is only the first known break — a full matrix run on 8.0.0 may surface more (including any arduino-esp32 core API changes bundled in the 8.0.0 major bump).

Work items

  • Fix Declination.cpp truncation warning properly (bounded assembly, not -Wno-format-truncation)
  • Run the full esp32 matrix on 8.0.0 and triage everything else it flags
  • Review espressif32 8.0.0 release notes for Arduino core / toolchain changes affecting the firmware (WiFi API, FreeRTOS, etc.)
  • Bump the pin in platformio.ini, then watch CI

Related drift risk

The RP2040 envs pin platform-raspberrypi by git URL without a commit hash (floats with that repo's default branch). Lower frequency than registry releases, but the same class of unpinned dependency.

🤖 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

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions