From 8f2517c97f68e4317cf6dad8727c542bf4dc8489 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 4 Jun 2025 00:27:41 +0000 Subject: [PATCH] docker: Cache builds for target-hashed subdirs. Signed-off-by: Jason Volk --- docker/Dockerfile.cargo | 16 ++++++++++++++++ docker/Dockerfile.cargo.deb | 16 ++++++++++++++++ docker/Dockerfile.cargo.deps | 16 ++++++++++++++++ docker/Dockerfile.cargo.rpm | 14 ++++++++++++++ 4 files changed, 62 insertions(+) diff --git a/docker/Dockerfile.cargo b/docker/Dockerfile.cargo index 38e9511b..10910a02 100644 --- a/docker/Dockerfile.cargo +++ b/docker/Dockerfile.cargo @@ -2,11 +2,15 @@ FROM input AS cargo ARG sys_target +ARG rust_target ARG rust_toolchain ARG RUSTUP_HOME ARG CARGO_HOME ARG CARGO_TARGET ARG CARGO_TARGET_DIR +ARG cargo_target_profile +ARG cargo_target_artifact +ARG cargo_target_share ARG cargo_profile ARG cargo_features ARG cargo_spec_features @@ -20,10 +24,22 @@ WORKDIR /usr/lib/${sys_target} COPY --link --from=rocksdb . . WORKDIR /usr/src/tuwunel +ENV targ_dir="${CARGO_TARGET_DIR}/${cargo_target_profile}" +ENV targ_targ_dir="${CARGO_TARGET_DIR}/${rust_target}/${cargo_target_profile}" 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=${targ_dir}/deps,id=${cargo_target_share}/deps,sharing=locked \ +--mount=type=cache,dst=${targ_dir}/build,id=${cargo_target_share}/build,sharing=locked \ +--mount=type=cache,dst=${targ_dir}/examples,id=${cargo_target_share}/examples,sharing=locked \ +--mount=type=cache,dst=${targ_dir}/incremental,id=${cargo_target_share}/incremental,sharing=locked \ +--mount=type=cache,dst=${targ_dir}/.fingerprint,id=${cargo_target_share}/fingerprint,sharing=locked \ +--mount=type=cache,dst=${targ_targ_dir}/deps,id=${cargo_target_share}/deps,sharing=locked \ +--mount=type=cache,dst=${targ_targ_dir}/build,id=${cargo_target_share}/build,sharing=locked \ +--mount=type=cache,dst=${targ_targ_dir}/examples,id=${cargo_target_share}/examples,sharing=locked \ +--mount=type=cache,dst=${targ_targ_dir}/incremental,id=${cargo_target_share}/incremental,sharing=locked \ +--mount=type=cache,dst=${targ_targ_dir}/.fingerprint,id=${cargo_target_share}/fingerprint,sharing=locked \ <