Skip to content

Commit 83062f5

Browse files
committed
Use debian base for armel
Signed-off-by: CrazyMax <[email protected]>
1 parent 697074d commit 83062f5

1 file changed

Lines changed: 23 additions & 25 deletions

File tree

Dockerfile

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# syntax=docker/dockerfile:1
22

3-
ARG BASE_IMAGE="ubuntu:20.04"
3+
ARG UBUNTU_BASE="ubuntu:20.04"
4+
# debian base is only used for armel builds
5+
ARG DEBIAN_BASE="debian:bullseye"
6+
47
ARG GO_VERSION=1.18.1
58
ARG XX_VERSION=1.1.0
69

@@ -33,34 +36,31 @@ ARG DOCKERCLI_VERSION=v17.06.2-ce
3336
# cross compilation helper
3437
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
3538

39+
# go base image to retrieve /usr/local/go
40+
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION} AS golang
41+
3642
# dummy stage to make sure the image is built for unsupported deps
3743
FROM --platform=$BUILDPLATFORM busybox AS build-dummy
3844
RUN mkdir -p /out
3945
FROM scratch AS binary-dummy
4046
COPY --from=build-dummy / /
4147

42-
FROM --platform=$BUILDPLATFORM ${BASE_IMAGE} AS golang
43-
ARG DEBIAN_FRONTEND
44-
RUN apt-get update && apt-get install --no-install-recommends -y ca-certificates curl jq
45-
WORKDIR /golang
46-
RUN curl -m30 --retry 5 --retry-connrefused --retry-delay 5 -sSL "https://go.dev/dl/?mode=json&include=all" -o "godist.json"
47-
ARG GO_VERSION
48-
ARG BUILDOS
49-
ARG BUILDARCH
50-
ENV PATH="/usr/local/go/bin:$PATH"
51-
RUN <<EOT
52-
GO_DIST_FILE=go${GO_VERSION%.0}.${BUILDOS}-${BUILDARCH}.tar.gz
53-
GO_DIST_URL=https://golang.org/dl/${GO_DIST_FILE}
54-
SHA256=$(cat godist.json | jq -r ".[] | select(.version==\"go${GO_VERSION%.0}\") | .files[] | select(.filename==\"$GO_DIST_FILE\").sha256")
55-
curl -sSL "$GO_DIST_URL.asc" -o "go.tgz.asc"
56-
curl -sSL "$GO_DIST_URL" -o "go.tgz"
57-
echo "$SHA256 *go.tgz" | sha256sum -c -
58-
tar -C /usr/local -xzf go.tgz
59-
go version
60-
EOT
61-
62-
FROM --platform=$BUILDPLATFORM ${BASE_IMAGE} AS base
48+
FROM --platform=$BUILDPLATFORM ${UBUNTU_BASE} AS base-ubuntu
49+
FROM --platform=$BUILDPLATFORM ${DEBIAN_BASE} AS base-debian
50+
FROM base-ubuntu AS base-windows
51+
FROM base-ubuntu AS base-linux-amd64
52+
FROM base-debian AS base-linux-armv5
53+
FROM base-debian AS base-linux-armv6
54+
FROM base-ubuntu AS base-linux-armv7
55+
FROM base-ubuntu AS base-linux-arm64
56+
FROM base-ubuntu AS base-linux-ppc64le
57+
FROM base-ubuntu AS base-linux-riscv64
58+
FROM base-ubuntu AS base-linux-s390x
59+
60+
FROM base-linux-${TARGETARCH}${TARGETVARIANT} AS base-linux
61+
FROM base-${TARGETOS} AS base
6362
COPY --from=xx / /
63+
ENV XX_APT_PREFER_CROSS=1
6464
RUN echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
6565
ENV GO111MODULE=off
6666
ARG DEBIAN_FRONTEND
@@ -169,8 +169,6 @@ RUN git clone https://github.com/krallin/tini.git tini
169169
FROM base AS tini-base
170170
WORKDIR /go/src/github.com/krallin/tini
171171
ARG DEBIAN_FRONTEND
172-
RUN apt-get update && apt-get install -y clang
173-
ENV XX_CC_PREFER_LINKER=ld
174172
ARG TARGETPLATFORM
175173
RUN --mount=type=cache,sharing=locked,id=moby-tini-aptlib,target=/var/lib/apt \
176174
--mount=type=cache,sharing=locked,id=moby-tini-aptcache,target=/var/cache/apt \
@@ -184,7 +182,7 @@ RUN --mount=from=tini-src,src=/usr/src/tini,rw \
184182
export TINI_TARGET=$([ "$GO_LINKMODE" = "static" ] && echo "tini-static" || echo "tini") \
185183
&& git fetch origin \
186184
&& git checkout -q "$TINI_VERSION" \
187-
&& cmake $(xx-clang --print-cmake-defines) . \
185+
&& CC=$(xx-info)-gcc cmake . \
188186
&& make "$TINI_TARGET" \
189187
&& xx-verify $([ "$GO_LINKMODE" = "static" ] && echo "--static") "$TINI_TARGET" \
190188
&& mkdir /out \

0 commit comments

Comments
 (0)