Skip to content

fix: restore ESP-IDF 4.4 SDK and linker compatibility - #1649

Merged
zackees merged 2 commits into
mainfrom
fix/4686-sdkconfig
Oct 4, 2026
Merged

zackees merged 2 commits into
mainfrom
fix/4686-sdkconfig

Conversation

@zackees

@zackees zackees commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Fix ESP-IDF 4.4 and I2S builds by including the SDK's qspi_qspi memory variant and dropping linker options unsupported by the pinned GCC 8 toolchain. Bump fbuild to 2.5.35 for the FastLED pin.

Validated with focused RED→GREEN tests, fbuild-library and fbuild-build-esp suites, fmt, Clippy, actual esp32dev_idf44 Blink and esp32dev_i2s SpecialDrivers/ESP/DriverTest builds, and source-bound local gate proof fb47df051011.

Tracks FastLED/FastLED#4686.

Summary by CodeRabbit

  • Bug Fixes
    • Improved compatibility for ESP32 builds using Xtensa GCC 8 by correcting linker settings.
    • Improved ESP-IDF 4.4 SDK include detection for projects using the qspi_qspi memory variant, helping builds locate the required SDK configuration files.
  • Release
    • Updated the project version to 2.5.35.

Local-Gate: v1 tree=1ba64bcd3ed593e44262fb41d0c7073ff880395c secs=558 lanes=linux-minimal:run
Ci-Attestation: {"at":1791123005,"gate":"general/all/ubuntu-ci-guards","host":"linux-x86_64","key":"1084f630b61e0b74e1d61a5fdc0da2c6647dc78752bec3dfb1d7140101c69ac4","lane":"linux-minimal","parents":["ed1d82303a53f134a4d1bbbbb02dcc11b34070de"],"secs":557,"stamp":"f4f32de9ac4c79515cbe1c3f57b81810","tree":"1ba64bcd3ed593e44262fb41d0c7073ff880395c","v":1,"via":"run"}
Ci-Attestation: {"at":1791123005,"gate":"rust/x86_64-unknown-linux-gnu/workspace-clippy","host":"linux-x86_64","key":"1084f630b61e0b74e1d61a5fdc0da2c6647dc78752bec3dfb1d7140101c69ac4","lane":"linux-minimal","parents":["ed1d82303a53f134a4d1bbbbb02dcc11b34070de"],"secs":557,"stamp":"d544479f289236cca6bbed0e82e6ea2c","tree":"1ba64bcd3ed593e44262fb41d0c7073ff880395c","v":1,"via":"run"}
Ci-Attestation: {"at":1791123005,"gate":"rust/x86_64-unknown-linux-gnu/workspace-test","host":"linux-x86_64","key":"1084f630b61e0b74e1d61a5fdc0da2c6647dc78752bec3dfb1d7140101c69ac4","lane":"linux-minimal","parents":["ed1d82303a53f134a4d1bbbbb02dcc11b34070de"],"secs":557,"stamp":"182a6acafae11e0653de645426c64056","tree":"1ba64bcd3ed593e44262fb41d0c7073ff880395c","v":1,"via":"run"}
Ci-Attestation: {"at":1791123005,"gate":"rust/x86_64-unknown-linux-gnu/python-facade-test","host":"linux-x86_64","key":"1084f630b61e0b74e1d61a5fdc0da2c6647dc78752bec3dfb1d7140101c69ac4","lane":"linux-minimal","parents":["ed1d82303a53f134a4d1bbbbb02dcc11b34070de"],"secs":557,"stamp":"11baffac842c81a62b745fac8ee0904a","tree":"1ba64bcd3ed593e44262fb41d0c7073ff880395c","v":1,"via":"run"}
@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: FastLED/fbuild/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 66cde61e-73cf-4188-8623-2914fd8d7922
📥 Commits

Reviewing files that changed from the base of the PR and between 430a64f and fb47df0.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • Cargo.toml
  • crates/fbuild-build-esp/src/esp32/fixups.rs
  • crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs
  • crates/fbuild-library/src/library/esp32_framework/tests.rs
  • pyproject.toml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The change updates GCC 8 linker flags, adds qspi_qspi to SDK variant fallback discovery, and changes the workspace and project versions to 2.5.35.

Changes

GCC 8 linker flags

Layer / File(s) Summary
GCC 8 linker flag fixup
crates/fbuild-build-esp/src/esp32/fixups.rs
legacy_gcc8 removes -Wl,--no-warn-rwx-segments and -Wl,--wrap=log_printf. Tests check that the relevant GCC 8 toolchains omit these flags.

SDK variant fallback

Layer / File(s) Summary
qspi_qspi SDK discovery
crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs, crates/fbuild-library/src/library/esp32_framework/tests.rs
When no requested variant directory exists, sdk_memory_variant_dir also checks qspi_qspi. A test checks that SDK include discovery includes the parent directory of sdkconfig.h there.

Version metadata

Layer / File(s) Summary
Package version updates
Cargo.toml, pyproject.toml
The workspace package version and project version change from 2.5.34 to 2.5.35.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 4c475

The changes update GCC 8 linker configuration, enable discovery of qspi_qspi SDK includes without changing requested-variant precedence, and keep workspace and project versions aligned. No concrete regression is established, so the change appears ready for normal checks.

Architecture Summary

Architecture risk: 🔵 Low · up to fb47d

The change affects 3 systems.

Changed systems: crates, Cargo.toml, pyproject.toml

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — crates (service) was modified; 3 changed files map to changed impact.
  • observed — Cargo.toml (service) was modified; 1 changed file maps to changed impact.
  • observed — pyproject.toml (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in Cargo.toml: The workspace package version changes from 2.5.34 to 2.5.35.
  • observed — Modified behavior in crates/fbuild-build-esp/src/esp32/fixups.rs: legacy_gcc8 now removes -Wl,--no-warn-rwx-segments and -Wl,--wrap=log_printf from the selected linker flags before applying the GCC 8 language-standard and LTO fixups.
  • observed — Modified behavior in crates/fbuild-build-esp/src/esp32/fixups.rs: The GCC 8 test now asserts that -Wl,--wrap=log_printf is absent. A new test checks that toolchain-xtensa-esp32 GCC 8 also omits -Wl,--no-warn-rwx-segments.
  • observed — Modified behavior in crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs: When no requested variant directory is found, sdk_memory_variant_dir now also checks qspi_qspi, after the five previously checked variants.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 10 functions across 3 files. (2 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the ESP-IDF 4.4 SDK path and linker compatibility fixes.
Full details: Docstring Coverage

Explanation

Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 10 functions across 3 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · 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.

Local-Gate: v1 tree=20be635afca65b6c3c4341d8e201d290b520e620 secs=575 lanes=linux-minimal:run,dylint:run
Ci-Attestation: {"at":1791123663,"gate":"general/all/ubuntu-ci-guards","host":"linux-x86_64","key":"0746ec6c5d4336fe45917681a9ccfb010b127f3b8c9b4855535677da0b3718d1","lane":"linux-minimal","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":325,"stamp":"37e7b0f661089233767d47d1c786ea16","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
Ci-Attestation: {"at":1791123663,"gate":"rust/x86_64-unknown-linux-gnu/workspace-clippy","host":"linux-x86_64","key":"0746ec6c5d4336fe45917681a9ccfb010b127f3b8c9b4855535677da0b3718d1","lane":"linux-minimal","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":325,"stamp":"ec89d2aed3d0657bda2153f46cdd37d7","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
Ci-Attestation: {"at":1791123663,"gate":"rust/x86_64-unknown-linux-gnu/workspace-test","host":"linux-x86_64","key":"0746ec6c5d4336fe45917681a9ccfb010b127f3b8c9b4855535677da0b3718d1","lane":"linux-minimal","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":325,"stamp":"925f8f14c26254ef59e9ad65434581dc","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
Ci-Attestation: {"at":1791123663,"gate":"rust/x86_64-unknown-linux-gnu/python-facade-test","host":"linux-x86_64","key":"0746ec6c5d4336fe45917681a9ccfb010b127f3b8c9b4855535677da0b3718d1","lane":"linux-minimal","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":325,"stamp":"33cdb4ebbcf332536fb5a31825fcab49","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
Ci-Attestation: {"at":1791123663,"gate":"general/all/dylint-policy","host":"linux-x86_64","key":"ed5424140f654f35c58d661f039751d9823830df5149f0520e21621a9e019a25","lane":"dylint","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":250,"stamp":"a33a2b2a20d6def386a8763c19d112cf","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
Ci-Attestation: {"at":1791123663,"gate":"rust/x86_64-unknown-linux-gnu/dylint-library-check","host":"linux-x86_64","key":"ed5424140f654f35c58d661f039751d9823830df5149f0520e21621a9e019a25","lane":"dylint","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":250,"stamp":"6976afb42feefc15bfeb99a5f5d2f8fd","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
Ci-Attestation: {"at":1791123663,"gate":"rust/x86_64-unknown-linux-gnu/workspace-dylint","host":"linux-x86_64","key":"ed5424140f654f35c58d661f039751d9823830df5149f0520e21621a9e019a25","lane":"dylint","parents":["fb47df0510111d356b12f6376960bd38bcc8cf1a","430a64fd3cbb458c26f9087a311f51f9d64deadb"],"secs":250,"stamp":"41131cdf6daedb1d8b7b74ca5260ab79","tree":"20be635afca65b6c3c4341d8e201d290b520e620","v":1,"via":"run"}
@zackees
zackees merged commit c38329f into main Oct 4, 2026
32 checks passed
@zackees
zackees deleted the fix/4686-sdkconfig branch October 4, 2026 14:27
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