Skip to content

feat(esp32): record requested framework and integration mode in the package summary (#1664) - #1766

Merged
zackees merged 1 commit into
mainfrom
agent/esp32-framework-metadata
Oct 28, 2026
Merged

zackees merged 1 commit into
mainfrom
agent/esp32-framework-metadata

Conversation

@zackees

@zackees zackees commented Oct 28, 2026

Copy link
Copy Markdown
Member

Why

#1664 asks that ESP framework selection be explicit: an
environment must build what it asked for, or be rejected with a precise error,
and the build metadata must say which integration mode actually ran.

#1730 landed the rejection half (a bare framework = espidf now fails before
any build work, and arduino, espidf warns that it is an Arduino-on-IDF build).
The metadata half was still missing: the ESP32 package stack summary reported
the package pins only, under a framework= label, so a reader could not tell
whether the environment requested arduino or arduino, espidf, nor which
integration mode the build used.

What changed

One build-log line, extended additively:

ESP32 packages: requested platform=…, framework=<requested>, framework_pin=<pin>,
                integration=<arduino-core|arduino-on-idf>;
                resolved platform=…@…, framework=…@…, toolchain=…@…, ESP-IDF SDK=…
  • framework= — the environment's requested framework = value
    (<board default> when the key is absent). This is the field fix(esp): honor or reject IDF framework requests instead of silently building Arduino #1664 calls the
    requested framework.
  • framework_pin= — the requested platform_packages framework pin. This is
    what the old line mislabelled as framework=; the requested side is not read
    by any parser (only the ; resolved segment is, in
    bench/fastled-examples), so renaming it is safe.
  • integration= — arduino-core or arduino-on-idf, derived from the same
    parser reject_unsupported_esp_framework now uses, so the warning/rejection
    path and the metadata can never disagree.

The effective framework remains the resolved … framework=name@version pair,
now unambiguous against the requested value.

No build_fingerprint.json field changed, so existing warm caches are not
invalidated by this PR.

Acceptance criteria from #1664

Tests

soldr cargo test -p fbuild-build-esp --lib
  test result: ok. 173 passed; 0 failed; 1 ignored

New:

  • requested_frameworks_parses_single_and_dual_requests — single, dual, reordered/spaced
    dual and bare espidf (unsupported ⇒ no integration mode).
  • stack_summary_records_requested_framework_and_integration_mode — dual request records
    framework=arduino, espidf, integration=arduino-on-idf, the pin, and the resolved stack;
    a default environment records framework=<board default>, integration=arduino-core.

Gates on 0b0053ea:

soldr cargo fmt --all --check                         EXIT=0
soldr cargo clippy --workspace --all-targets -- -D warnings   EXIT=0
uv run python ci/check_dylint_allowlists.py           EXIT=0
uv run python ci/enforce_platform_boundary.py --print-totals  rows=44 EXIT=0

Left unmerged for the owner, per the steward merge policy.

…ackage summary

#1664 asks that ESP framework selection be explicit. #1730
already rejects a bare `framework = espidf`, but the build metadata still
reported only the package pins, so a build log could not be read as either
`arduino` or `arduino, espidf`.

The ESP32 package stack summary now records, next to the resolved stack:

- `framework=` - the environment's requested `framework =` value
  (`<board default>` when the key is absent)
- `framework_pin=` - the requested `platform_packages` framework pin
  (previously reported, mislabelled, as `framework=`)
- `integration=` - `arduino-core` or `arduino-on-idf`, derived from the same
  parser `reject_unsupported_esp_framework` uses, so the two cannot drift

No fingerprint metadata field changed, so warm caches are not invalidated.

Tests: `requested_frameworks_parses_single_and_dual_requests` and
`stack_summary_records_requested_framework_and_integration_mode`.
@coderabbitai

coderabbitai Bot commented Oct 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@zackees
zackees added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit d06e8b9 Oct 28, 2026
34 checks passed
@fastled-project-sync fastled-project-sync Bot moved this to Triage in FastLED Tracker Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

1 participant