67 lines
1.7 KiB
Docker
67 lines
1.7 KiB
Docker
# syntax = docker/dockerfile:1.11-labs
|
|
|
|
FROM input AS rpm
|
|
ARG sys_target
|
|
ARG rust_toolchain
|
|
ARG RUSTUP_HOME
|
|
ARG CARGO_HOME
|
|
ARG CARGO_TARGET
|
|
ARG CARGO_TARGET_DIR
|
|
ARG cargo_tgt_dst
|
|
ARG cargo_tgt_sub
|
|
ARG cargo_tgt_cache
|
|
ARG cargo_profile
|
|
ARG cargo_features
|
|
ARG cargo_spec_features
|
|
ARG pkg_dir
|
|
ARG gen_rpm_args=""
|
|
|
|
WORKDIR /
|
|
COPY --link --from=input . .
|
|
|
|
WORKDIR /usr/src/tuwunel
|
|
RUN \
|
|
--mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=shared,ro \
|
|
--mount=type=cache,dst=${CARGO_HOME}/registry,sharing=shared,ro \
|
|
--mount=type=cache,dst=${CARGO_HOME}/git,sharing=shared,ro \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR},id=${cargo_tgt_dst},sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/${cargo_tgt_sub}/deps,id=${cargo_tgt_cache}/deps,sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/${cargo_tgt_sub}/build,id=${cargo_tgt_cache}/build,sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/${cargo_tgt_sub}/incremental,id=${cargo_tgt_cache}/incremental,sharing=locked \
|
|
--mount=type=cache,dst=${CARGO_TARGET_DIR}/${cargo_tgt_sub}/.fingerprint,id=${cargo_tgt_cache}/fingerprint,sharing=locked \
|
|
<<EOF
|
|
set -eux
|
|
mkdir -p "${pkg_dir}"
|
|
rustup run ${rust_toolchain} \
|
|
cargo generate-rpm \
|
|
--package src/main \
|
|
--auto-req auto \
|
|
--target "${CARGO_TARGET}" \
|
|
--target-dir "${CARGO_TARGET_DIR}" \
|
|
--profile "${cargo_profile}" \
|
|
--payload-compress zstd \
|
|
--output "${pkg_dir}" \
|
|
${gen_rpm_args}
|
|
EOF
|
|
|
|
|
|
FROM scratch AS pkg-rpm
|
|
ARG pkg_dir
|
|
|
|
COPY --link --from=input ${pkg_dir}/* .
|
|
|
|
|
|
FROM input AS pkg-rpm-install
|
|
ARG pkg_dir
|
|
|
|
WORKDIR /
|
|
COPY --link --from=input . .
|
|
|
|
WORKDIR ${pkg_dir}
|
|
COPY --link --from=pkg-rpm . .
|
|
RUN <<EOF
|
|
set -eux
|
|
rpm -i --test *
|
|
rpm -i *
|
|
EOF
|