From 9a988cebd1245d7a292b907d57264bdfe2d4c3e0 Mon Sep 17 00:00:00 2001 From: Renn F Date: Mon, 22 Jun 2026 01:54:32 +0200 Subject: [PATCH] feat(toolchain): build-essentials in the agent runtime for target interpreters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The agent runner stage had build-essential only in the builder. When toolchain matching is on, uv provisions the workspace against the target project's Python and must compile an sdist for any dependency lacking a wheel for that version — so build-essential now stays at runtime. The runner already permits uv managed python downloads (only the builder pins UV_PYTHON_PREFERENCE=only-system, for RoboCo's own 3.13 venv). Verified locally: in the built image, `uv venv --python 3.14 && uv run python` prints Python 3.14.6 while the system interpreter stays 3.13. --- docker/agent-base.Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docker/agent-base.Dockerfile b/docker/agent-base.Dockerfile index d4ea2fc3..bc503481 100644 --- a/docker/agent-base.Dockerfile +++ b/docker/agent-base.Dockerfile @@ -36,8 +36,13 @@ FROM python:3.13-slim-bookworm AS runner # Runtime deps: Node.js 22 for claude CLI, git for workspace ops, jq for hooks. # gnupg is only needed to add the NodeSource repo, purged after install. +# build-essential stays at runtime (NOT purged): when toolchain matching is on, +# uv provisions the agent's workspace against the TARGET project's Python and +# must be able to compile an sdist for any dependency that ships no wheel for +# that interpreter version. Without a compiler the install fails and the agent +# can't run the target's suite. RUN apt-get update && apt-get install -y --no-install-recommends \ - curl ca-certificates git gnupg jq \ + curl ca-certificates git gnupg jq build-essential \ && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ && npm install -g @anthropic-ai/claude-code \