Skip to content

feat(deploy): manage esptool as a provisioned package instead of requiring pip install #954

Description

@zackees

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions