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

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions