Skip to content

Commit 4d5c72d

Browse files
authored
fix: link arm64 ICU when hosted image builds cross-compile
Hosted Release Image builds linux/amd64 and linux/arm64 from an amd64 runner. Arm64 is cross-linked and needs libicu-dev:arm64; host-arch libicu-dev alone fails the link. Do not change published v0.2.0 or latest.
1 parent 68760b5 commit 4d5c72d

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

docker/Dockerfile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,17 @@ ENV GOARCH=$TARGETARCH
1212

1313
WORKDIR /app
1414

15-
# Install build dependencies
15+
# Install build dependencies.
16+
# Hosted dual-arch builds run on amd64 and cross-link arm64, so ICU must
17+
# include the arm64 libraries, not only the build-platform libicu-dev.
1618
RUN apt-get update && \
17-
apt-get install -y debian-archive-keyring curl unzip libicu-dev \
19+
apt-get install -y debian-archive-keyring curl unzip \
1820
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
1921
--no-install-recommends && \
22+
dpkg --add-architecture arm64 && \
23+
apt-get update && \
24+
apt-get install -y libicu-dev libicu-dev:arm64 \
25+
--no-install-recommends && \
2026
rm -rf /var/lib/apt/lists/*
2127

2228
# Download MySQL Shell and DuckDB CLI in builder stage
@@ -49,7 +55,7 @@ RUN --mount=type=bind,target=. \
4955
--mount=type=cache,target=/go/pkg/mod \
5056
go env && \
5157
if [ "$TARGETARCH" = "arm64" ]; then \
52-
CC="aarch64-linux-gnu-gcc" CXX="aarch64-linux-gnu-g++" CGO_ENABLED=1 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags=duckdb_arrow -trimpath -ldflags="-X main.Version=${VERSION} -X main.GitCommit=${GIT_COMMIT} -X main.BuildTime=${BUILD_TIME} -X main.SourceRepository=${SOURCE_REPOSITORY}" -o /myduckserver; \
58+
CC="aarch64-linux-gnu-gcc" CXX="aarch64-linux-gnu-g++" CGO_ENABLED=1 CGO_LDFLAGS="-L/usr/lib/aarch64-linux-gnu" GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags=duckdb_arrow -trimpath -ldflags="-X main.Version=${VERSION} -X main.GitCommit=${GIT_COMMIT} -X main.BuildTime=${BUILD_TIME} -X main.SourceRepository=${SOURCE_REPOSITORY}" -o /myduckserver; \
5359
else \
5460
CGO_ENABLED=1 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags=duckdb_arrow -trimpath -ldflags="-X main.Version=${VERSION} -X main.GitCommit=${GIT_COMMIT} -X main.BuildTime=${BUILD_TIME} -X main.SourceRepository=${SOURCE_REPOSITORY}" -o /myduckserver; \
5561
fi

0 commit comments

Comments
 (0)