Repository navigation
Description
Context
The expanded real firmware regression for #1672 passes Feather M0, Feather M4 with LTO, and ClearCore locally on Linux. Hosted Windows run 39746745165 passes workspace Clippy/tests and both Feather firmware builds, then fails ClearCore's EthernetServer.cpp: ARM GCC 9.2.1 bits/c++config.h cannot include bits/os_defines.h.
ClearCore selects ArmGcc8Toolchain (historical type name, GCC9), package 1.90201.191206. The published Windows archive was downloaded and its SHA256 verified as 31301e144002f2043f60c518b87327dfcfca9f1dc0c1add72322d553d5733f0e. It contains regular os_defines.h files, including the hard-float Cortex-M4 multilib directory. Therefore the source package is not simply missing that member. Installed layout and actual compiler include-search behavior need to distinguish extraction/cache incompleteness from Windows GCC path resolution.
Proposal
Diagnose the installed header and real compiler search paths on Windows, fix the owning package/compiler path boundary, and retain the real ClearCore regression introduced alongside the SAMD linkage fix.
Acceptance criteria
- RED -> GREEN on real Windows ARM GCC: reproduce the missing-header failure, then build ClearCore firmware successfully.
- Both existing Feather architecture/interrupt overrides, including LTO, remain passing.
- Preserve real workspace and firmware tests; do not skip ClearCore or downgrade compiler diagnostics.
- Add focused coverage for the confirmed root cause and validate existing caches if installer completeness is involved.
- No new workflow files, fbuild clones/worktrees, hardcoded runtime USB data, or Bosn requirement.
Decisions
- Follow up separately from atmelsam: SAMD21/SAMD51 get ARDUINO_ARCH_SAM instead of ARDUINO_ARCH_SAMD; then EIC_Handler is defined twice at link #1672 because both SAMD firmware cases pass; the new coverage exposed a ClearCore-specific toolchain failure.
- Keep the test enabled on Windows and diagnose the actual package rather than remove coverage.
- Diagnostic Windows run 39811121068 proved the installed header was readable, while GCC searched long raw paths with repeated parent components. The fix queries the selected driver’s actual multilib include order, canonicalizes existing directories, and uses that complete list for ClearCore C++ compilation. It leaves C compilation unchanged.
- PR fix(sam): canonicalize ClearCore GCC9 C++ system headers #1702 passes the previously failing real ClearCore firmware test on Windows, including final rebased head b0fdf92 in run 39820514191. The full run passed, including all firmware, workspace, archive, overflow, tool-reuse and long-path checks. PR fix(sam): canonicalize ClearCore GCC9 C++ system headers #1702 merged as cd1c09a. The prior run’s later esptool startup timeout did not repeat and remains recorded in the PR.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTriage
Activity
test(sam): diagnose installed ClearCore GCC9 headers (#1701)
fix(sam): canonicalize GCC C++ system headers for ClearCore (#1701)
test(sam): diagnose installed ClearCore GCC9 headers (#1701)
fix(sam): canonicalize GCC C++ system headers for ClearCore (#1701)