From 29438824875381bf3dedcbb6d10386efaf46c015 Mon Sep 17 00:00:00 2001 From: Diego Date: Thu, 19 Oct 2023 12:33:03 +0200 Subject: [PATCH] Add arm64 support --- hole-punching-tests/Dockerfile | 19 +++++++++---------- hole-punching-tests/build.sh | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 hole-punching-tests/build.sh diff --git a/hole-punching-tests/Dockerfile b/hole-punching-tests/Dockerfile index 51b03f9346ea..2917e78653bf 100644 --- a/hole-punching-tests/Dockerfile +++ b/hole-punching-tests/Dockerfile @@ -1,18 +1,17 @@ # syntax=docker/dockerfile:1.5-labs -FROM rust:1.72.0 as builder -RUN rustup target add x86_64-unknown-linux-musl -RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y musl-dev musl-tools +FROM --platform=$BUILDPLATFORM rust:1.72.0 as builder -# Run with access to the target cache to speed up builds +ARG BUILDPLATFORM + +# Set the working directory WORKDIR /workspace -ADD . . -RUN --mount=type=cache,target=./target \ - --mount=type=cache,target=/usr/local/cargo/registry \ - cargo build --release --package hole-punching-tests --target x86_64-unknown-linux-musl -RUN --mount=type=cache,target=./target \ - mv ./target/x86_64-unknown-linux-musl/release/hole-punching-tests /usr/local/bin/hole-punching-tests +# Copy the Rust project source code, including build.sh, into the image +COPY . /workspace + +# Make the build.sh script executable and run it +RUN chmod +x /workspace/build.sh && /workspace/build.sh ${BUILDPLATFORM} FROM alpine:3 COPY --from=builder /usr/local/bin/hole-punching-tests /usr/bin/hole-punch-client diff --git a/hole-punching-tests/build.sh b/hole-punching-tests/build.sh new file mode 100644 index 000000000000..2ae4863aa91c --- /dev/null +++ b/hole-punching-tests/build.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Translate Docker platform format to Rust target format +case "$(echo $1 | cut -d/ -f2)" in + "amd64") RUST_TARGET="x86_64-unknown-linux-musl";; + "arm64") RUST_TARGET="aarch64-unknown-linux-musl";; + *) echo "Unsupported architecture: $1" >&2; exit 1;; +esac + +# Add the Rust target +rustup target add ${RUST_TARGET} + +apt-get update && apt-get install -y musl-dev musl-tools + +# Build the project +cargo build --release --package hole-punching-tests --target ${RUST_TARGET} + +# Move the built binary to a common location +mv ./target/${RUST_TARGET}/release/hole-punching-tests /usr/local/bin/hole-punching-tests