From 984dc0e5ace48817f6b8fcbd8f4116bc56d7aeaa Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Mon, 12 Jan 2026 23:56:32 -0800 Subject: [PATCH] Dockerfile: allow building from git worktree Signed-off-by: Tonis Tiigi --- Dockerfile | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 94509c172..9b73a5d3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,10 +73,19 @@ ENV GOFLAGS=-mod=vendor FROM buildkit-base AS buildkit-version # TODO: PKG should be inferred from go modules RUN --mount=target=. <<'EOT' - git rev-parse HEAD 2>/dev/null || { + # if git is worktree (file starting with gitdir:) then skip verions check + if [ -f .git ] && head -1 .git | grep -q "^gitdir:"; then + echo >&2 "Skipping version check for worktree" + # set dev stubs + echo "-X github.com/moby/buildkit/version.Version=dev -X github.com/moby/buildkit/version.Revision=dev -X github.com/moby/buildkit/version.Package=github.com/moby/buildkit" > /tmp/.ldflags; + echo -n "dev" > /tmp/.version; + echo -n "$(date -u +%Y-%m-%dT%H:%M:%SZ)" > /tmp/.commit_date; + exit 0 + fi + if ! git rev-parse HEAD 2>/dev/null; then echo >&2 "Failed to get git revision, make sure --build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=1 is set when building from Git directly" exit 1 - } + fi set -ex export PKG=github.com/moby/buildkit VERSION=$(git describe --match 'v[0-9]*' --dirty='.m' --always --tags) REVISION=$(git rev-parse HEAD)$(if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi) COMMIT_DATE=$(git show -s --format=%cI HEAD); echo "-X ${PKG}/version.Version=${VERSION} -X ${PKG}/version.Revision=${REVISION} -X ${PKG}/version.Package=${PKG}" > /tmp/.ldflags;