[espidf] Gate esp_idf_size --ng on IDF version (#16441)

This commit is contained in:
Jonathan Swoboda
2026-05-14 22:41:36 -04:00
committed by GitHub
parent a92b607754
commit 56983f414f
2 changed files with 14 additions and 3 deletions
+8 -2
View File
@@ -3,7 +3,8 @@
import json
from pathlib import Path
from esphome.components.esp32 import get_esp32_variant
from esphome.components.esp32 import get_esp32_variant, idf_version
import esphome.config_validation as cv
from esphome.core import CORE
from esphome.helpers import mkdir_p, write_file_if_changed
from esphome.writer import update_storage_json
@@ -61,6 +62,11 @@ def get_project_cmakelists(minimal: bool = False) -> str:
variant = get_esp32_variant()
idf_target = variant.lower().replace("-", "")
# esp_idf_size 2.x (bundled with IDF >=6.0) made NG the default and
# removed the --ng flag; on 1.x (IDF 5.5) --ng is required to get
# --format=raw because the legacy mode doesn't support it.
size_ng_flag = "--ng" if idf_version() < cv.Version(6, 0, 0) else ""
# Project-wide compile options: -D defines and -W warning flags (skip
# -Wl, linker flags — those go on the src component via
# target_link_options below). Emitted via idf_build_set_property so the
@@ -146,7 +152,7 @@ project({CORE.name})
# Emit raw JSON size data for ESPHome to read post-build.
add_custom_command(
TARGET ${{CMAKE_PROJECT_NAME}}.elf POST_BUILD
COMMAND ${{PYTHON}} -m esp_idf_size --ng --format=raw
COMMAND ${{PYTHON}} -m esp_idf_size {size_ng_flag} --format=raw
-o ${{CMAKE_BINARY_DIR}}/esp_idf_size.json
${{CMAKE_PROJECT_NAME}}.map
WORKING_DIRECTORY ${{CMAKE_BINARY_DIR}}
+6 -1
View File
@@ -11,10 +11,12 @@ import pytest
from esphome.components.esp32 import (
KEY_COMPONENTS,
KEY_ESP32,
KEY_IDF_VERSION,
KEY_PATH,
KEY_REF,
KEY_REPO,
)
import esphome.config_validation as cv
from esphome.const import KEY_CORE
from esphome.core import CORE
@@ -24,7 +26,10 @@ def _reset_core(tmp_path: Path) -> None:
"""Give each test its own CORE.build_path and a clean esp32 data slot."""
CORE.build_path = str(tmp_path)
CORE.data.setdefault(KEY_CORE, {})
CORE.data[KEY_ESP32] = {KEY_COMPONENTS: {}}
CORE.data[KEY_ESP32] = {
KEY_COMPONENTS: {},
KEY_IDF_VERSION: cv.Version(5, 5, 4),
}
def _write_project_description(tmp_path: Path, components: dict[str, str]) -> None: