Skip to content

Commit 215a49a

Browse files
authored
Merge pull request #184 from klueska/update-cross-build
Update how cross-compiling works to speed things up
2 parents 0e74a41 + 41fd71c commit 215a49a

File tree

4 files changed

+21
-28
lines changed

4 files changed

+21
-28
lines changed

Makefile

+6-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
DOCKER ?= docker
1616
MKDIR ?= mkdir
1717
TR ?= tr
18+
CC ?= cc
1819
DIST_DIR ?= $(CURDIR)/dist
1920

2021
include $(CURDIR)/common.mk
@@ -40,6 +41,7 @@ DOCKERFILE_DEVEL ?= "images/devel/Dockerfile"
4041
DOCKERFILE_CONTEXT ?= "https://github.com/NVIDIA/k8s-test-infra.git"
4142

4243
GOOS ?= linux
44+
GOARCH ?= $(shell uname -m | sed -e 's,aarch64,arm64,' -e 's,x86_64,amd64,')
4345
ifeq ($(VERSION),)
4446
CLI_VERSION = $(LIB_VERSION)$(if $(LIB_TAG),-$(LIB_TAG))
4547
else
@@ -53,15 +55,16 @@ cmd-%: COMMAND_BUILD_OPTIONS = -o $(PREFIX)/$(*)
5355
endif
5456
cmds: $(CMD_TARGETS)
5557
$(CMD_TARGETS): cmd-%:
56-
CGO_LDFLAGS_ALLOW='-Wl,--unresolved-symbols=ignore-in-object-files' GOOS=$(GOOS) \
58+
CGO_LDFLAGS_ALLOW='-Wl,--unresolved-symbols=ignore-in-object-files' \
59+
CC=$(CC) CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH) \
5760
go build -ldflags "-s -w -X $(CLI_VERSION_PACKAGE).gitCommit=$(GIT_COMMIT) -X $(CLI_VERSION_PACKAGE).version=$(CLI_VERSION)" $(COMMAND_BUILD_OPTIONS) $(MODULE)/cmd/$(*)
5861

5962
build:
60-
GOOS=$(GOOS) go build ./...
63+
CC=$(CC) GOOS=$(GOOS) GOARCH=$(GOARCH) go build ./...
6164

6265
examples: $(EXAMPLE_TARGETS)
6366
$(EXAMPLE_TARGETS): example-%:
64-
GOOS=$(GOOS) go build ./examples/$(*)
67+
CC=$(CC) GOOS=$(GOOS) GOARCH=$(GOARCH) go build ./examples/$(*)
6568

6669
all: check test build binaries
6770
check: $(CHECK_TARGETS)

deployments/container/Dockerfile.ubi8

+3-11
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,16 @@ ARG GOLANG_VERSION=1.23.1
1616
ARG CUDA_IMAGE=cuda
1717
ARG CUDA_VERSION=11.8.0
1818
ARG BASE_DIST=ubi8
19-
FROM nvidia/cuda:${CUDA_VERSION}-base-${BASE_DIST} as build
19+
FROM --platform=${TARGETARCH} nvidia/cuda:${CUDA_VERSION}-base-${BASE_DIST} as build
2020

2121
RUN yum install -y \
2222
wget make git gcc \
2323
&& \
2424
rm -rf /var/cache/yum/*
2525

26+
ARG TARGETARCH
2627
ARG GOLANG_VERSION=x.x.x
27-
RUN set -eux; \
28-
\
29-
arch="$(uname -m)"; \
30-
case "${arch##*-}" in \
31-
x86_64 | amd64) ARCH='amd64' ;; \
32-
ppc64el | ppc64le) ARCH='ppc64le' ;; \
33-
aarch64 | arm64) ARCH='arm64' ;; \
34-
*) echo "unsupported architecture" ; exit 1 ;; \
35-
esac; \
36-
wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \
28+
RUN wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz \
3729
| tar -C /usr/local -xz
3830

3931
ENV GOPATH /go

deployments/container/Dockerfile.ubuntu

+10-13
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,15 @@ ARG GOLANG_VERSION=1.23.1
1616
ARG CUDA_IMAGE=cuda
1717
ARG CUDA_VERSION=11.8.0
1818
ARG BASE_DIST=ubuntu20.04
19-
FROM nvidia/cuda:${CUDA_VERSION}-base-${BASE_DIST} as build
19+
FROM --platform=${BUILDOS}/amd64 nvidia/cuda:${CUDA_VERSION}-base-${BASE_DIST} as build
2020

2121
RUN apt-get update && \
22-
apt-get install -y wget make git gcc \
22+
apt-get install -y wget make git gcc-aarch64-linux-gnu gcc \
2323
&& \
2424
rm -rf /var/lib/apt/lists/*
2525

2626
ARG GOLANG_VERSION=x.x.x
27-
RUN set -eux; \
28-
\
29-
arch="$(uname -m)"; \
30-
case "${arch##*-}" in \
31-
x86_64 | amd64) ARCH='amd64' ;; \
32-
ppc64el | ppc64le) ARCH='ppc64le' ;; \
33-
aarch64 | arm64) ARCH='arm64' ;; \
34-
*) echo "unsupported architecture" ; exit 1 ;; \
35-
esac; \
36-
wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \
27+
RUN wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz \
3728
| tar -C /usr/local -xz
3829

3930
ENV GOPATH /go
@@ -42,10 +33,16 @@ ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
4233
WORKDIR /build
4334
COPY . .
4435

36+
ARG TARGETARCH
4537
RUN mkdir /artifacts
4638
ARG VERSION="N/A"
4739
ARG GIT_COMMIT="unknown"
48-
RUN make PREFIX=/artifacts cmds
40+
RUN if [ "$TARGETARCH" = "amd64" ]; then \
41+
cc=gcc; \
42+
elif [ "$TARGETARCH" = "arm64" ]; then \
43+
cc=aarch64-linux-gnu-gcc; \
44+
fi && \
45+
make CC=${cc} GOARCH=${TARGETARCH} PREFIX=/artifacts cmds
4946

5047
FROM nvidia/${CUDA_IMAGE}:${CUDA_VERSION}-base-${BASE_DIST}
5148

deployments/container/native-only.mk

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
# limitations under the License.
1414

1515
PUSH_ON_BUILD ?= false
16-
DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64
16+
ARCH ?= $(shell uname -m | sed -e 's,aarch64,arm64,' -e 's,x86_64,amd64,')
17+
DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/$(ARCH)
1718

1819
ifeq ($(PUSH_ON_BUILD),true)
1920
$(BUILD_TARGETS): build-%: image-%

0 commit comments

Comments
 (0)