1
1
# Rust syntax target, either x86_64-unknown-linux-musl, aarch64-unknown-linux-musl etc.
2
- ARG RUST_TARGET="aarch64 -unknown-linux-musl"
2
+ ARG RUST_TARGET="x86_64 -unknown-linux-musl"
3
3
# The crate features to build this with
4
4
ARG FEATURES=""
5
5
6
- FROM --platform=$BUILDPLATFORM rustlang/rust:nightly AS chef
6
+ FROM --platform=$BUILDPLATFORM rustlang/rust:nightly AS builder
7
7
ARG RUST_TARGET
8
8
ARG FEATURES
9
9
10
10
RUN <<EOT
11
11
set -ex
12
12
apt-get update
13
13
apt-get upgrade
14
- apt-get install --assume-yes musl-dev clang lld
14
+ apt-get install --assume-yes musl-dev clang lld libgcc-12-dev-arm64-cross
15
15
EOT
16
16
17
17
RUN <<-EOT bash
@@ -20,8 +20,6 @@ RUN <<-EOT bash
20
20
rustup component add rust-src --toolchain "nightly"
21
21
EOT
22
22
23
- RUN cargo install cargo-chef --locked
24
-
25
23
COPY <<EOF /app/.cargo/config.toml
26
24
[env]
27
25
CC_aarch64-unknown-linux-musl = "clang -target aarch64-unknown-linux-musl -fuse-ld=lld"
@@ -34,6 +32,8 @@ linker = "clang"
34
32
rustflags = [
35
33
"-C" , "link-args=-target aarch64-unknown-linux-musl -fuse-ld=lld" ,
36
34
"-C" , "strip=symbols" ,
35
+ # aarch64 has to link libgcc
36
+ "-C" , "link-arg=-lgcc" ,
37
37
]
38
38
39
39
[target.x86_64-unknown-linux-musl]
49
49
50
50
WORKDIR /app
51
51
52
- FROM chef AS planner
53
- COPY . .
54
- RUN cargo chef prepare --recipe-path recipe.json
55
-
56
- FROM chef AS builder
57
- COPY --from=planner /app/recipe.json recipe.json
58
- RUN <<-EOF bash
59
- set -ex
60
- if test "$FEATURES" = "" ; then
61
- cargo chef cook --target "$RUST_TARGET" --release --recipe-path recipe.json
62
- else
63
- cargo chef cook --target "$RUST_TARGET" --features="$FEATURES" --release --recipe-path recipe.json
64
- fi
65
- EOF
66
-
67
52
COPY . .
68
53
69
54
RUN <<-EOF bash
@@ -76,7 +61,6 @@ RUN <<-EOF bash
76
61
cp target/$RUST_TARGET/release/twilight-http-proxy /twilight-http-proxy
77
62
EOF
78
63
79
-
80
64
FROM scratch
81
65
82
66
COPY --from=builder /twilight-http-proxy /twilight-http-proxy
0 commit comments