47 lines
1.4 KiB
Docker
47 lines
1.4 KiB
Docker
# syntax = docker/dockerfile:1.11-labs
|
|
|
|
FROM input AS cargo
|
|
ARG sys_target
|
|
ARG rust_toolchain
|
|
ARG RUSTUP_HOME
|
|
ARG CARGO_HOME
|
|
ARG CARGO_TARGET
|
|
ARG CARGO_TARGET_DIR
|
|
ARG CARGO_TARGET_CACHE
|
|
ARG cargo_profile
|
|
ARG cargo_features
|
|
ARG cargo_spec_features
|
|
ARG cargo_cmd
|
|
ARG cargo_args=""
|
|
|
|
WORKDIR /
|
|
COPY --link --from=input . .
|
|
|
|
WORKDIR /usr/lib/${sys_target}
|
|
COPY --link --from=rocksdb . .
|
|
|
|
WORKDIR /usr/src/tuwunel
|
|
RUN \
|
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR},sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/deps,id=${CARGO_TARGET_CACHE}/deps,sharing=shared \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/build,id=${CARGO_TARGET_CACHE}/build,sharing=shared \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/incremental,id=${CARGO_TARGET_CACHE}/incremental,sharing=shared \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/.fingerprint,id=${CARGO_TARGET_CACHE}/fingerprint,sharing=shared \
|
|
<<EOF
|
|
set -eux
|
|
rustup run ${rust_toolchain} \
|
|
cargo ${cargo_cmd} \
|
|
--frozen \
|
|
--workspace \
|
|
"${cargo_spec_features}" \
|
|
--features "${cargo_features}" \
|
|
--profile "${cargo_profile}" \
|
|
--target "${CARGO_TARGET}" \
|
|
--target-dir "${CARGO_TARGET_DIR}" \
|
|
--manifest-path Cargo.toml \
|
|
--color always \
|
|
${cargo_args}
|
|
EOF
|