diff options
author | Kevin Alvarez <crazy-max@users.noreply.github.com> | 2023-01-18 18:41:16 +0100 |
---|---|---|
committer | CrazyMax <crazy-max@users.noreply.github.com> | 2023-01-18 18:46:52 +0100 |
commit | f676dab8dc58c9eaa83b260c631a92d95a7a0b10 (patch) | |
tree | ca1c3319fb7ffb54188c16cfb458ce0e5c7edc66 /Dockerfile | |
parent | 4f716c731ab775a11a89e3366f4c52ff057538d1 (diff) | |
download | docker-f676dab8dc58c9eaa83b260c631a92d95a7a0b10.tar.gz |
Dockerfile: use clang to build dockerd/docker-proxy
Static binaries for dockerd are broken on armhf and armel (32-bit).
It seems to be an issue with GCC as building using clang solves
this issue. Also adds extra instruction to prefer ld for
cross-compiling arm64 in bullseye otherwise it doesn't link.
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
Diffstat (limited to 'Dockerfile')
-rw-r--r-- | Dockerfile | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile index 08b48f97fe..1abd6c2230 100644 --- a/Dockerfile +++ b/Dockerfile @@ -547,6 +547,12 @@ WORKDIR /go/src/github.com/docker/docker ENV GO111MODULE=off ENV CGO_ENABLED=1 ARG DEBIAN_FRONTEND +RUN --mount=type=cache,sharing=locked,id=moby-build-aptlib,target=/var/lib/apt \ + --mount=type=cache,sharing=locked,id=moby-build-aptcache,target=/var/cache/apt \ + apt-get update && apt-get install --no-install-recommends -y \ + clang \ + lld \ + llvm ARG TARGETPLATFORM RUN --mount=type=cache,sharing=locked,id=moby-build-aptlib,target=/var/lib/apt \ --mount=type=cache,sharing=locked,id=moby-build-aptcache,target=/var/cache/apt \ @@ -573,6 +579,12 @@ ARG PACKAGER_NAME # PREFIX overrides DEST dir in make.sh script otherwise it fails because of # read only mount in current work dir ENV PREFIX=/tmp +RUN <<EOT + # in bullseye arm64 target does not link with lld so configure it to use ld instead + if xx-info is-cross && [ "$(xx-info arch)" = "arm64" ]; then + XX_CC_PREFER_LINKER=ld xx-clang --setup-target-triple + fi +EOT RUN --mount=type=bind,target=. \ --mount=type=tmpfs,target=cli/winresources/dockerd \ --mount=type=tmpfs,target=cli/winresources/docker-proxy \ |