From 36668539ecd230d8f65643a73ec1d0e2499bece3 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 31 Dec 2025 10:04:28 -1000 Subject: [PATCH] [docker] Make ESP-IDF venvs cleanable with "Clean All" --- docker/docker_entrypoint.sh | 11 +++++++++-- .../etc/s6-overlay/s6-rc.d/esphome/run | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh index 1b9224244c..241673f788 100755 --- a/docker/docker_entrypoint.sh +++ b/docker/docker_entrypoint.sh @@ -15,12 +15,19 @@ if [[ ! -d "${pio_cache_base}" ]]; then mkdir -p "${pio_cache_base}" fi -# we can't set core_dir, because the settings file is stored in `core_dir/appstate.json` -# setting `core_dir` would therefore prevent pio from accessing +# We can't set PLATFORMIO_CORE_DIR because the settings file is stored in +# `core_dir/appstate.json` and setting it would prevent pio from reading +# cached settings. Instead we override individual subdirectories. export PLATFORMIO_PLATFORMS_DIR="${pio_cache_base}/platforms" export PLATFORMIO_PACKAGES_DIR="${pio_cache_base}/packages" export PLATFORMIO_CACHE_DIR="${pio_cache_base}/cache" +# Symlink penv to persistent storage so ESP-IDF venvs can be cleaned with +# "Clean All". There's no env var for penv location. +mkdir -p "${pio_cache_base}/penv" +mkdir -p /root/.platformio +ln -sfn "${pio_cache_base}/penv" /root/.platformio/penv + # If /build is mounted, use that as the build path # otherwise use path in /config (so that builds aren't lost on container restart) if [[ -d /build ]]; then diff --git a/docker/ha-addon-rootfs/etc/s6-overlay/s6-rc.d/esphome/run b/docker/ha-addon-rootfs/etc/s6-overlay/s6-rc.d/esphome/run index cdbaff6c04..2c90c839b1 100755 --- a/docker/ha-addon-rootfs/etc/s6-overlay/s6-rc.d/esphome/run +++ b/docker/ha-addon-rootfs/etc/s6-overlay/s6-rc.d/esphome/run @@ -9,12 +9,19 @@ readonly pio_cache_base=/data/cache/platformio export ESPHOME_IS_HA_ADDON=true export PLATFORMIO_GLOBALLIB_DIR=/piolibs -# we can't set core_dir, because the settings file is stored in `core_dir/appstate.json` -# setting `core_dir` would therefore prevent pio from accessing +# We can't set PLATFORMIO_CORE_DIR because the settings file is stored in +# `core_dir/appstate.json` and setting it would prevent pio from reading +# cached settings. Instead we override individual subdirectories. export PLATFORMIO_PLATFORMS_DIR="${pio_cache_base}/platforms" export PLATFORMIO_PACKAGES_DIR="${pio_cache_base}/packages" export PLATFORMIO_CACHE_DIR="${pio_cache_base}/cache" +# Symlink penv to persistent storage so ESP-IDF venvs can be cleaned with +# "Clean All". There's no env var for penv location. +mkdir -p "${pio_cache_base}/penv" +mkdir -p /root/.platformio +ln -sfn "${pio_cache_base}/penv" /root/.platformio/penv + if bashio::config.true 'leave_front_door_open'; then export DISABLE_HA_AUTHENTICATION=true fi