Context
#942 harness, cold build on a pristine container: after a fully successful compile + link, the build fails at elf2image with:
build error: build failed: esptool not found — cannot convert firmware.elf to firmware.bin.
Install with: pip install esptool
fbuild manages toolchains, platforms, frameworks and libraries itself, but esptool — required to produce the flashable artifact for every ESP32 build — must be preinstalled by the user. PlatformIO provisions it as tool-esptoolpy. The #942 profiling image works around this by baking uv tool install esptool into the Dockerfile.
Proposal
Provision esptool through fbuild's package layer (download the release binary/wheel into ~/.fbuild/<mode>/cache/packages/ like other tools, or vendor the PlatformIO tool-esptoolpy package) and resolve it from there in the ESP32 build/deploy paths, falling back to PATH.
Acceptance criteria
Decisions
- Priority: P3 — the harness has a workaround; this is a clean-machine UX gap rather than a perf blocker.
Part of #942.
Context
#942 harness, cold build on a pristine container: after a fully successful compile + link, the build fails at elf2image with:
fbuild manages toolchains, platforms, frameworks and libraries itself, but esptool — required to produce the flashable artifact for every ESP32 build — must be preinstalled by the user. PlatformIO provisions it as
tool-esptoolpy. The #942 profiling image works around this by bakinguv tool install esptoolinto the Dockerfile.Proposal
Provision esptool through fbuild's package layer (download the release binary/wheel into
~/.fbuild/<mode>/cache/packages/like other tools, or vendor the PlatformIOtool-esptoolpypackage) and resolve it from there in the ESP32 build/deploy paths, falling back to PATH.Acceptance criteria
Decisions
Part of #942.