From 8793d65da3682b259ef2db12d7c94197ef37e2fa Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Tue, 10 Nov 2026 17:09:58 -0800 Subject: [PATCH 1/2] static: Simplify archive directory layout 9c15c0c staged each archive as an FHS prefix tree. Consumers that only need part of an archive (the usual case when assembling an image) have to know that internal nesting and strip it again, and the layout means nothing for the Windows zips, where Docker looks in `%ProgramFiles%\Docker\cli-plugins`. Use the directory names the docker CLI itself uses instead: - `/bin/` - `/cli-plugins/` (buildx, compose, model, agent) - `/doc/{LICENSE,README.md}` The top-level directory and the doc contents are unchanged (containerd still ships `runc.*` and `runhcs.*` alongside its own). Picking out one piece is now a single extraction, for example: tar -C /usr/local/libexec/docker/cli-plugins --strip-components=2 \ -xzf docker-buildx-plugin_.tgz \ docker-buildx-plugin/cli-plugins Extracting an archive wholesale into `/usr/local` no longer installs plugins where the docker CLI looks, so the verify images now show the intended integration: bin to `/usr/local/bin`, cli-plugins to `/usr/local/libexec/docker/cli-plugins`, and doc to `/usr/local/share/doc/`. Assisted-By: "claude my eyes right out" Signed-off-by: Tianon Gravi --- pkg/agent/scripts/pkg-static-build.sh | 6 +++--- pkg/agent/verify.Dockerfile | 6 +++++- pkg/buildx/scripts/pkg-static-build.sh | 6 +++--- pkg/buildx/verify.Dockerfile | 6 +++++- pkg/compose/scripts/pkg-static-build.sh | 6 +++--- pkg/compose/verify.Dockerfile | 6 +++++- pkg/containerd/scripts/pkg-static-build.sh | 12 ++++++------ pkg/containerd/verify.Dockerfile | 6 +++++- pkg/credential-helpers/scripts/pkg-static-build.sh | 4 ++-- pkg/credential-helpers/verify.Dockerfile | 6 +++++- pkg/docker-cli/scripts/pkg-static-build.sh | 4 ++-- pkg/docker-cli/verify.Dockerfile | 6 +++++- pkg/docker-engine/scripts/pkg-static-build.sh | 4 ++-- pkg/docker-engine/verify.Dockerfile | 6 +++++- pkg/model/scripts/pkg-static-build.sh | 6 +++--- pkg/model/verify.Dockerfile | 6 +++++- 16 files changed, 64 insertions(+), 32 deletions(-) diff --git a/pkg/agent/scripts/pkg-static-build.sh b/pkg/agent/scripts/pkg-static-build.sh index 00fb9500..e4bbd22d 100755 --- a/pkg/agent/scripts/pkg-static-build.sh +++ b/pkg/agent/scripts/pkg-static-build.sh @@ -70,11 +70,11 @@ mkdir -p "${pkgoutput}" cd "$BUILDDIR" for pkgname in *; do workdir=$(mktemp -d -t docker-packaging.XXXXXXXXXX) - mkdir -p "$workdir/${pkgname}/libexec/docker/cli-plugins" "$workdir/${pkgname}/share/doc/${pkgname}" + mkdir -p "$workdir/${pkgname}/cli-plugins" "$workdir/${pkgname}/doc" ( set -x - cp "${pkgname}"/* "$workdir/${pkgname}/libexec/docker/cli-plugins/" - cp "${SRCDIR}/LICENSE" "${SRCDIR}/README.md" "$workdir/${pkgname}/share/doc/${pkgname}/" + cp "${pkgname}"/* "$workdir/${pkgname}/cli-plugins/" + cp "${SRCDIR}/LICENSE" "${SRCDIR}/README.md" "$workdir/${pkgname}/doc/" ) if [ "$(xx-info os)" = "windows" ]; then pkgfile="${pkgoutput}/${pkgname}_${GENVER_VERSION#v}.zip" diff --git a/pkg/agent/verify.Dockerfile b/pkg/agent/verify.Dockerfile index ec9c49a9..7888bb65 100644 --- a/pkg/agent/verify.Dockerfile +++ b/pkg/agent/verify.Dockerfile @@ -110,7 +110,11 @@ RUN --mount=from=bin,target=/build < Date: Wed, 11 Nov 2026 13:59:05 -0800 Subject: [PATCH 2/2] Also drop the `/` prefix in the new artifacts Assisted-By: "claude my eyes right out" Signed-off-by: Tianon Gravi --- pkg/agent/scripts/pkg-static-build.sh | 10 +++++----- pkg/agent/verify.Dockerfile | 4 ++-- pkg/buildx/scripts/pkg-static-build.sh | 10 +++++----- pkg/buildx/verify.Dockerfile | 4 ++-- pkg/compose/scripts/pkg-static-build.sh | 10 +++++----- pkg/compose/verify.Dockerfile | 4 ++-- pkg/containerd/scripts/pkg-static-build.sh | 18 +++++++++--------- pkg/containerd/verify.Dockerfile | 4 ++-- .../scripts/pkg-static-build.sh | 10 +++++----- pkg/credential-helpers/verify.Dockerfile | 4 ++-- pkg/docker-cli/scripts/pkg-static-build.sh | 10 +++++----- pkg/docker-cli/verify.Dockerfile | 4 ++-- pkg/docker-engine/scripts/pkg-static-build.sh | 10 +++++----- pkg/docker-engine/verify.Dockerfile | 4 ++-- pkg/model/scripts/pkg-static-build.sh | 10 +++++----- pkg/model/verify.Dockerfile | 4 ++-- 16 files changed, 60 insertions(+), 60 deletions(-) diff --git a/pkg/agent/scripts/pkg-static-build.sh b/pkg/agent/scripts/pkg-static-build.sh index e4bbd22d..935c6cb4 100755 --- a/pkg/agent/scripts/pkg-static-build.sh +++ b/pkg/agent/scripts/pkg-static-build.sh @@ -70,24 +70,24 @@ mkdir -p "${pkgoutput}" cd "$BUILDDIR" for pkgname in *; do workdir=$(mktemp -d -t docker-packaging.XXXXXXXXXX) - mkdir -p "$workdir/${pkgname}/cli-plugins" "$workdir/${pkgname}/doc" + mkdir -p "$workdir/cli-plugins" "$workdir/doc" ( set -x - cp "${pkgname}"/* "$workdir/${pkgname}/cli-plugins/" - cp "${SRCDIR}/LICENSE" "${SRCDIR}/README.md" "$workdir/${pkgname}/doc/" + cp "${pkgname}"/* "$workdir/cli-plugins/" + cp "${SRCDIR}/LICENSE" "${SRCDIR}/README.md" "$workdir/doc/" ) if [ "$(xx-info os)" = "windows" ]; then pkgfile="${pkgoutput}/${pkgname}_${GENVER_VERSION#v}.zip" ( set -x cd "$workdir" - zip -r "$pkgfile" "${pkgname}" + zip -r "$pkgfile" cli-plugins doc ) else pkgfile="${pkgoutput}/${pkgname}_${GENVER_VERSION#v}.tgz" ( set -x - tar -czf "$pkgfile" -C "$workdir" "${pkgname}" + tar -czf "$pkgfile" -C "$workdir" cli-plugins doc ) fi write-sha256sum "$pkgfile" diff --git a/pkg/agent/verify.Dockerfile b/pkg/agent/verify.Dockerfile index 7888bb65..c84b6a17 100644 --- a/pkg/agent/verify.Dockerfile +++ b/pkg/agent/verify.Dockerfile @@ -113,8 +113,8 @@ RUN --mount=from=bin,target=/build <