[esp32] Make ESP-IDF builds reproducible (#16008)

Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
Darafei Praliaskouski
2026-04-26 15:31:32 +04:00
committed by GitHub
parent 68625a1b76
commit b084fa4490
3 changed files with 23 additions and 0 deletions
+4
View File
@@ -1729,6 +1729,10 @@ async def to_code(config):
cg.add_build_flag("-DUSE_ESP32_FRAMEWORK_ESP_IDF")
if use_platformio:
cg.add_platformio_option("framework", "espidf")
# Strip volatile build path/time metadata from PlatformIO-managed
# ESP-IDF builds so equivalent projects can produce reproducible
# outputs and downstream tooling can safely reuse artifacts.
add_idf_sdkconfig_option("CONFIG_APP_REPRODUCIBLE_BUILD", True)
# Wrap std::__throw_* functions to abort immediately, eliminating ~3KB of
# exception class overhead. See throw_stubs.cpp for implementation.
@@ -0,0 +1,8 @@
esphome:
name: test
esp32:
board: esp32dev
variant: esp32
framework:
type: esp-idf
+11
View File
@@ -232,3 +232,14 @@ def test_execute_from_psram_disabled_sdkconfig(
assert "CONFIG_SPIRAM_FETCH_INSTRUCTIONS" not in sdkconfig
assert "CONFIG_SPIRAM_RODATA" not in sdkconfig
assert "CONFIG_SPIRAM_XIP_FROM_PSRAM" not in sdkconfig
def test_platformio_idf_enables_reproducible_build(
generate_main: Callable[[str | Path], str],
component_config_path: Callable[[str], Path],
) -> None:
"""Test PlatformIO ESP-IDF builds enable reproducible app metadata."""
generate_main(component_config_path("reproducible_build.yaml"))
sdkconfig = CORE.data[KEY_ESP32][KEY_SDKCONFIG_OPTIONS]
assert sdkconfig.get("CONFIG_APP_REPRODUCIBLE_BUILD") is True