Merge branch 'esp32_ard_compile_time' into integration

This commit is contained in:
J. Nick Koston
2026-02-05 06:29:57 +01:00
3 changed files with 12 additions and 20 deletions

View File

@@ -5,7 +5,6 @@ import logging
import os
from pathlib import Path
import re
import shutil
from esphome import yaml_util
import esphome.codegen as cg
@@ -47,7 +46,7 @@ from esphome.coroutine import CoroPriority, coroutine_with_priority
import esphome.final_validate as fv
from esphome.helpers import copy_file_if_changed, write_file_if_changed
from esphome.types import ConfigType
from esphome.writer import clean_cmake_cache
from esphome.writer import clean_cmake_cache, rmtree
from .boards import BOARDS, STANDARD_BOARDS
from .const import ( # noqa
@@ -1883,7 +1882,7 @@ def _write_idf_component_yml():
for component_name in required_idf_components:
stub_path = stubs_dir / _idf_component_stub_name(component_name)
if stub_path.exists():
shutil.rmtree(stub_path)
rmtree(stub_path)
if CORE.data[KEY_ESP32][KEY_COMPONENTS]:
components: dict = CORE.data[KEY_ESP32][KEY_COMPONENTS]

View File

@@ -443,18 +443,6 @@ async def to_code(config):
var.get_disconnect_trigger(), [], on_disconnect_config
)
if on_connect_config := config.get(CONF_ON_CONNECT):
cg.add_define("USE_ETHERNET_CONNECT_TRIGGER")
await automation.build_automation(
var.get_connect_trigger(), [], on_connect_config
)
if on_disconnect_config := config.get(CONF_ON_DISCONNECT):
cg.add_define("USE_ETHERNET_DISCONNECT_TRIGGER")
await automation.build_automation(
var.get_disconnect_trigger(), [], on_disconnect_config
)
CORE.add_job(final_step)

View File

@@ -421,6 +421,11 @@ def _rmtree_error_handler(
func(path)
def rmtree(path: Path | str) -> None:
"""Remove a directory tree, handling read-only files on Windows."""
shutil.rmtree(path, onerror=_rmtree_error_handler)
def clean_build(clear_pio_cache: bool = True):
# Allow skipping cache cleaning for integration tests
if os.environ.get("ESPHOME_SKIP_CLEAN_BUILD"):
@@ -430,11 +435,11 @@ def clean_build(clear_pio_cache: bool = True):
pioenvs = CORE.relative_pioenvs_path()
if pioenvs.is_dir():
_LOGGER.info("Deleting %s", pioenvs)
shutil.rmtree(pioenvs, onerror=_rmtree_error_handler)
rmtree(pioenvs)
piolibdeps = CORE.relative_piolibdeps_path()
if piolibdeps.is_dir():
_LOGGER.info("Deleting %s", piolibdeps)
shutil.rmtree(piolibdeps, onerror=_rmtree_error_handler)
rmtree(piolibdeps)
dependencies_lock = CORE.relative_build_path("dependencies.lock")
if dependencies_lock.is_file():
_LOGGER.info("Deleting %s", dependencies_lock)
@@ -455,7 +460,7 @@ def clean_build(clear_pio_cache: bool = True):
cache_dir = Path(config.get("platformio", "cache_dir"))
if cache_dir.is_dir():
_LOGGER.info("Deleting PlatformIO cache %s", cache_dir)
shutil.rmtree(cache_dir, onerror=_rmtree_error_handler)
rmtree(cache_dir)
def clean_all(configuration: list[str]):
@@ -480,7 +485,7 @@ def clean_all(configuration: list[str]):
if item.is_file() and not item.name.endswith(".json"):
item.unlink()
elif item.is_dir() and item.name != "storage":
shutil.rmtree(item, onerror=_rmtree_error_handler)
rmtree(item)
# Clean PlatformIO project files
try:
@@ -494,7 +499,7 @@ def clean_all(configuration: list[str]):
path = Path(config.get("platformio", pio_dir))
if path.is_dir():
_LOGGER.info("Deleting PlatformIO %s %s", pio_dir, path)
shutil.rmtree(path, onerror=_rmtree_error_handler)
rmtree(path)
GITIGNORE_CONTENT = """# Gitignore settings for ESPHome