diff --git a/esphome/espidf/framework.py b/esphome/espidf/framework.py index b40ea8cd39..30cc64a7a6 100644 --- a/esphome/espidf/framework.py +++ b/esphome/espidf/framework.py @@ -825,11 +825,9 @@ def _preinstall_idf_tool_archives( stream_output=True, ) if not success: - # Detail already streamed to the terminal by the script - _LOGGER.warning( - "ESP-IDF tool pre-extraction failed; the installer will " - "extract sequentially" - ) + # Detail already streamed to the terminal by the script; a + # surviving torn dir prints its own guidance there + _LOGGER.warning("ESP-IDF tool pre-extraction failed; see above") except Exception as e: # noqa: BLE001 # pylint: disable=broad-exception-caught _LOGGER.warning("ESP-IDF tool pre-extraction failed: %s", failure_reason(e)) _LOGGER.debug("Pre-extraction failure detail", exc_info=True) diff --git a/esphome/espidf/install_tool_archives.py b/esphome/espidf/install_tool_archives.py index 052080ca6b..6bbabc4356 100644 --- a/esphome/espidf/install_tool_archives.py +++ b/esphome/espidf/install_tool_archives.py @@ -63,7 +63,12 @@ def install_one(tool: object, name: str, version: str) -> bool | None: except FileNotFoundError: # pragma: no cover # failed before mkdir pass except OSError as cleanup_err: - print(f"could not remove {dest}: {cleanup_err}", file=sys.stderr) + print( + f"could not remove {dest}: {cleanup_err}; the installer may " + "trust the partial tool dir, delete it manually if the build " + "fails", + file=sys.stderr, + ) return None return False return True