42 lines
1.2 KiB
Text
42 lines
1.2 KiB
Text
# Dockerfile for cross compiling rqbit binaries from scratch inside docker.
|
|
FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx
|
|
|
|
FROM --platform=$BUILDPLATFORM rust:alpine AS builder
|
|
COPY --from=xx / /
|
|
|
|
RUN apk update && apk add clang lld npm pkgconf
|
|
|
|
ARG TARGETPLATFORM
|
|
RUN xx-apk add gcc musl-dev openssl-dev openssl-libs-static
|
|
|
|
COPY / /src/
|
|
WORKDIR /src/
|
|
|
|
ENV PROFILE_NAME=release-github
|
|
ENV PROFILE_FOLDER=release-github
|
|
|
|
RUN --mount=type=cache,target=/usr/local/cargo/git/db \
|
|
--mount=type=cache,target=/usr/local/cargo/registry/cache \
|
|
--mount=type=cache,target=/usr/local/cargo/registry/index \
|
|
--mount=type=cache,target=/src/target <<EOF
|
|
set -e
|
|
export TT="$(xx-cargo --print-target-triple)"
|
|
export BIN="./target/${TT}/${TT}/${PROFILE_FOLDER}/rqbit"
|
|
export OPENSSL_STATIC=1
|
|
|
|
find /src/target \
|
|
/usr/local/cargo/git/db \
|
|
/usr/local/cargo/registry/cache \
|
|
/usr/local/cargo/registry/index \
|
|
-maxdepth 2 -type d
|
|
xx-cargo build \
|
|
--target-dir "target/${TT}" \
|
|
--profile "${PROFILE_NAME}"
|
|
find /src/target -maxdepth 4 -type d
|
|
xx-verify --static "${BIN}"
|
|
mv "${BIN}" /bin/rqbit
|
|
EOF
|
|
|
|
FROM scratch
|
|
|
|
COPY --from=builder /bin/rqbit /rqbit
|