docker: Dedup cargo and chef dockerfiles.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-08 23:45:55 +00:00
parent 0f256d7191
commit 7edbe11eb8
4 changed files with 85 additions and 120 deletions

View File

@@ -4,6 +4,7 @@ FROM input AS cargo
ARG sys_target ARG sys_target
ARG rust_target ARG rust_target
ARG rust_toolchain ARG rust_toolchain
ARG RUST_HOME
ARG RUSTUP_HOME ARG RUSTUP_HOME
ARG CARGO_HOME ARG CARGO_HOME
ARG CARGO_TARGET ARG CARGO_TARGET
@@ -11,25 +12,56 @@ ARG CARGO_TARGET_DIR
ARG cargo_target_profile ARG cargo_target_profile
ARG cargo_target_artifact ARG cargo_target_artifact
ARG cargo_target_share ARG cargo_target_share
ARG CARGO_TERM_VERBOSE=0
ARG RUST_BACKTRACE
ARG JEMALLOC_OVERRIDE
ARG ROCKSDB_LIB_DIR
ARG CARGO_BUILD_RUSTFLAGS
ARG CARGO_PROFILE_TEST_DEBUG
ARG CARGO_PROFILE_TEST_INCREMENTAL
ARG CARGO_PROFILE_BENCH_DEBUG
ARG CARGO_PROFILE_BENCH_LTO
ARG CARGO_PROFILE_RELEASE_LTO
ARG CARGO_PROFILE_RELEASE_DEBUGINFO_DEBUG
ARG CARGO_PROFILE_RELEASE_DEBUGINFO_LTO
ARG cargo_profile ARG cargo_profile
ARG cargo_features ARG cargo_features
ARG cargo_spec_features ARG cargo_spec_features
ARG cargo_cmd ARG cargo_cmd
ARG color_args="--color always"
ARG recipe_args=""
ARG cargo_args="" ARG cargo_args=""
ARG git_checkout
WORKDIR / WORKDIR /
COPY --link --from=input . . COPY --link --from=input . .
COPY --link --from=rust ${RUST_HOME} ${RUST_HOME}
COPY --link --from=deps /usr/src/tuwunel /usr/src/tuwunel
WORKDIR /usr/lib/${sys_target} WORKDIR /usr/lib/${sys_target}
COPY --link --from=rocksdb . . COPY --link --from=rocksdb . .
WORKDIR /usr/src/tuwunel WORKDIR /usr/src/tuwunel
ENV PATH="${CARGO_HOME}/bin:$PATH"
ENV CARGO_TERM_VERBOSE="${CARGO_TERM_VERBOSE}"
ENV RUST_BACKTRACE="${RUST_BACKTRACE}"
ENV JEMALLOC_OVERRIDE="${JEMALLOC_OVERRIDE}"
ENV ROCKSDB_LIB_DIR="${ROCKSDB_LIB_DIR}"
ENV CARGO_PROFILE_TEST_DEBUG="${CARGO_PROFILE_TEST_DEBUG}"
ENV CARGO_PROFILE_TEST_INCREMENTAL="${CARGO_PROFILE_TEST_INCREMENTAL}"
ENV CARGO_PROFILE_BENCH_DEBUG="${CARGO_PROFILE_BENCH_DEBUG}"
ENV CARGO_PROFILE_BENCH_LTO="${CARGO_PROFILE_BENCH_LTO}"
ENV CARGO_PROFILE_RELEASE_LTO="${CARGO_PROFILE_RELEASE_LTO}"
ENV CARGO_PROFILE_RELEASE_DEBUGINFO_DEBUG="${CARGO_PROFILE_RELEASE_DEBUGINFO_DEBUG}"
ENV CARGO_PROFILE_RELEASE_DEBUGINFO_LTO="${CARGO_PROFILE_RELEASE_DEBUGINFO_LTO}"
ENV CARGO_BUILD_RUSTFLAGS="${CARGO_BUILD_RUSTFLAGS}"
ENV CARGO_TARGET_DIR="${CARGO_TARGET_DIR}"
ENV targ_dir="${CARGO_TARGET_DIR}/${cargo_target_profile}" ENV targ_dir="${CARGO_TARGET_DIR}/${cargo_target_profile}"
ENV targ_targ_dir="${CARGO_TARGET_DIR}/${rust_target}/${cargo_target_profile}" ENV targ_targ_dir="${CARGO_TARGET_DIR}/${rust_target}/${cargo_target_profile}"
RUN \ RUN \
--mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=shared \ --mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=shared,ro \
--mount=type=cache,dst=${CARGO_HOME}/registry,sharing=shared \ --mount=type=cache,dst=${CARGO_HOME}/registry,sharing=shared,ro \
--mount=type=cache,dst=${CARGO_HOME}/git,sharing=shared \ --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}/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}/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}/examples,id=${cargo_target_share}/examples,sharing=locked \
@@ -48,11 +80,20 @@ RUN \
--locked \ --locked \
--workspace \ --workspace \
"${cargo_spec_features}" \ "${cargo_spec_features}" \
--features "${cargo_features}" \ "--features=${cargo_features}" \
--profile "${cargo_profile}" \ "--profile=${cargo_profile}" \
--target "${CARGO_TARGET}" \ "--target=${CARGO_TARGET}" \
--target-dir "${CARGO_TARGET_DIR}" \ "--target-dir=${CARGO_TARGET_DIR}" \
--manifest-path Cargo.toml \ "--manifest-path=Cargo.toml" \
--color always \ ${recipe_args} \
${color_args} \
${cargo_args} ${cargo_args}
# If this image is further reused with other cargo commands, all
# modifications made by cargo chef cook outside of target-dir have to be
# cleared. If not, resulting build artifacts will link incorrectly, even
# without error. For example, a target executable may be produced which
# does nothing except exit(0). If you have observed a smoketest failing in
# such a manner, investigate this as a cause of the issue.
git restore -W -S --source=${git_checkout} .
EOF EOF

View File

@@ -1,84 +0,0 @@
# syntax = docker/dockerfile:1.11-labs
FROM input AS deps
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_BUILD_RUSTFLAGS
ARG CARGO_PROFILE_TEST_DEBUG
ARG CARGO_PROFILE_TEST_INCREMENTAL
ARG CARGO_PROFILE_BENCH_DEBUG
ARG CARGO_PROFILE_BENCH_LTO
ARG CARGO_PROFILE_RELEASE_LTO
ARG CARGO_PROFILE_RELEASE_DEBUGINFO_DEBUG
ARG CARGO_PROFILE_RELEASE_DEBUGINFO_LTO
ARG cargo_profile
ARG cargo_features
ARG cargo_spec_features
ARG cook_args
ARG git_checkout
WORKDIR /
COPY --link --from=input . .
WORKDIR /usr/lib/${sys_target}
COPY --link --from=rocksdb . .
WORKDIR /usr/src/tuwunel
COPY --link --from=recipe recipe.json .
ENV CARGO_PROFILE_TEST_DEBUG="${CARGO_PROFILE_TEST_DEBUG}"
ENV CARGO_PROFILE_TEST_INCREMENTAL="${CARGO_PROFILE_TEST_INCREMENTAL}"
ENV CARGO_PROFILE_BENCH_DEBUG="${CARGO_PROFILE_BENCH_DEBUG}"
ENV CARGO_PROFILE_BENCH_LTO="${CARGO_PROFILE_BENCH_LTO}"
ENV CARGO_PROFILE_RELEASE_LTO="${CARGO_PROFILE_RELEASE_LTO}"
ENV CARGO_PROFILE_RELEASE_DEBUGINFO_DEBUG="${CARGO_PROFILE_RELEASE_DEBUGINFO_DEBUG}"
ENV CARGO_PROFILE_RELEASE_DEBUGINFO_LTO="${CARGO_PROFILE_RELEASE_DEBUGINFO_LTO}"
ENV CARGO_BUILD_RUSTFLAGS="${CARGO_BUILD_RUSTFLAGS}"
ENV CARGO_TARGET_DIR="${CARGO_TARGET_DIR}"
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 \
--mount=type=cache,dst=${CARGO_HOME}/registry,sharing=shared \
--mount=type=cache,dst=${CARGO_HOME}/git,sharing=shared \
--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 \
<<EOF
set -eux
rustup run ${rust_toolchain} \
cargo chef cook ${cook_args} \
--verbose \
--locked \
--workspace \
"${cargo_spec_features}" \
--features "${cargo_features}" \
--profile "${cargo_profile}" \
--target "${CARGO_TARGET}" \
--target-dir "${CARGO_TARGET_DIR}" \
--manifest-path Cargo.toml \
--recipe-path recipe.json
# If this image is further reused with other cargo commands, all
# modifications made by cargo chef cook outside of target-dir have to be
# cleared. If not, resulting build artifacts will link incorrectly, even
# without error. For example, a target executable may be produced which
# does nothing except exit(0). If you have observed a smoketest failing in
# such a manner, investigate this as a cause of the issue.
git restore -W -S --source=${git_checkout} .
EOF

View File

@@ -28,23 +28,18 @@ ARG CARGO_TARGET
ARG CARGO_TERM_VERBOSE=0 ARG CARGO_TERM_VERBOSE=0
ARG RUST_BACKTRACE ARG RUST_BACKTRACE
ARG JEMALLOC_OVERRIDE ARG JEMALLOC_OVERRIDE
#ARG ZSTD_SYS_USE_PKG_CONFIG=0
ARG ROCKSDB_LIB_DIR ARG ROCKSDB_LIB_DIR
WORKDIR / WORKDIR /
COPY --link --from=input . . COPY --link --from=input . .
WORKDIR /
COPY --link --from=rust ${RUST_HOME} ${RUST_HOME} COPY --link --from=rust ${RUST_HOME} ${RUST_HOME}
COPY --link --from=source /usr/src/tuwunel /usr/src/tuwunel
WORKDIR /usr/src/tuwunel WORKDIR /usr/src/tuwunel
COPY --link --from=source /usr/src/tuwunel .
ENV PATH="${CARGO_HOME}/bin:$PATH" ENV PATH="${CARGO_HOME}/bin:$PATH"
ENV CARGO_TERM_VERBOSE="${CARGO_TERM_VERBOSE}" ENV CARGO_TERM_VERBOSE="${CARGO_TERM_VERBOSE}"
ENV RUST_BACKTRACE="${RUST_BACKTRACE}" ENV RUST_BACKTRACE="${RUST_BACKTRACE}"
ENV JEMALLOC_OVERRIDE="${JEMALLOC_OVERRIDE}" ENV JEMALLOC_OVERRIDE="${JEMALLOC_OVERRIDE}"
#ENV ZSTD_SYS_USE_PKG_CONFIG="${ZSTD_SYS_USE_PKG_CONFIG}"
ENV ROCKSDB_LIB_DIR="${ROCKSDB_LIB_DIR}" ENV ROCKSDB_LIB_DIR="${ROCKSDB_LIB_DIR}"
RUN \ RUN \
--mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=locked \ --mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=locked \

View File

@@ -834,7 +834,7 @@ target "docs" {
elem("build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
input = (use_chef == "true"? deps = (use_chef == "true"?
elem("target:deps-build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]): elem("target:deps-build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
) )
@@ -857,7 +857,7 @@ target "build-bins" {
elem("build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
input = (use_chef == "true"? deps = (use_chef == "true"?
elem("target:deps-build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]): elem("target:deps-build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("target:build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
) )
@@ -879,7 +879,7 @@ target "build-tests" {
elem("build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
input = (use_chef == "true"? deps = (use_chef == "true"?
elem("target:deps-build-tests", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]): elem("target:deps-build-tests", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("target:build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
) )
@@ -901,7 +901,7 @@ target "build" {
elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
input = (use_chef == "true"? deps = (use_chef == "true"?
elem("target:deps-build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]): elem("target:deps-build", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
) )
@@ -923,7 +923,7 @@ target "clippy" {
elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
input = (use_chef == "true"? deps = (use_chef == "true"?
elem("target:deps-clippy", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]): elem("target:deps-clippy", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
) )
@@ -945,7 +945,7 @@ target "check" {
elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
input = (use_chef == "true"? deps = (use_chef == "true"?
elem("target:deps-check", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]): elem("target:deps-check", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]):
elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
) )
@@ -1029,14 +1029,20 @@ target "fmt" {
target "cargo" { target "cargo" {
name = elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("cargo", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
target = "cargo"
output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"] output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
cache_to = ["type=local,compression=zstd,mode=max,compression-level=${cache_compress_level}"] cache_to = ["type=local,compression=zstd,mode=max,compression-level=${cache_compress_level}"]
dockerfile = "${docker_dir}/Dockerfile.cargo"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
contexts = {
deps = elem("target:deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
}
args = {
recipe_args = ""
cargo_args = ""
color_args = "--color=always"
}
} }
# #
@@ -1063,7 +1069,7 @@ target "deps-build-bins" {
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
args = { args = {
cook_args = "--bins" cargo_cmd = "chef cook --bins"
} }
} }
@@ -1077,7 +1083,7 @@ target "deps-build-tests" {
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
args = { args = {
cook_args = (cargo_profile == "bench"? "--benches": "--tests") cargo_cmd = (cargo_profile == "bench"? "chef cook --benches": "chef cook --tests")
} }
} }
@@ -1091,7 +1097,7 @@ target "deps-build" {
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
args = { args = {
cook_args = "--all-targets" cargo_cmd = "chef cook --all-targets"
} }
} }
@@ -1105,7 +1111,7 @@ target "deps-clippy" {
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
args = { args = {
cook_args = "--all-targets --clippy" cargo_cmd = "chef cook --all-targets --clippy"
} }
} }
@@ -1119,7 +1125,7 @@ target "deps-check" {
elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
args = { args = {
cook_args = "--all-targets --check" cargo_cmd = "chef cook --all-targets --check"
} }
} }
@@ -1132,22 +1138,26 @@ target "deps-base" {
tags = [ tags = [
elem_tag("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest") elem_tag("deps-base", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
] ]
target = "deps" target = "cargo"
output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"] output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
cache_to = ["type=local,compression=zstd,mode=max,compression-level=${cache_compress_level}"] cache_to = ["type=local,compression=zstd,mode=max,compression-level=${cache_compress_level}"]
dockerfile = "${docker_dir}/Dockerfile.cargo.deps" dockerfile = "${docker_dir}/Dockerfile.cargo"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("kitchen", [feat_set, sys_name, sys_version, sys_target]),
elem("rust", [rust_toolchain, rust_target, sys_name, sys_version, sys_target]),
elem("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
contexts = { contexts = {
input = elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) input = elem("target:kitchen", [feat_set, sys_name, sys_version, sys_target])
recipe = elem("target:recipe", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) deps = elem("target:preparing", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
rocksdb = elem("target:rocksdb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) rocksdb = elem("target:rocksdb", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
} }
args = { args = {
cargo_profile = cargo_profile cargo_profile = cargo_profile
cook_args = "--all-targets --no-build" cargo_cmd = "chef cook --all-targets --no-build"
recipe_args = "--recipe-path=recipe.json"
color_args = ""
# Base path # Base path
CARGO_TARGET_DIR = "${cargo_tgt_dir_base}" CARGO_TARGET_DIR = "${cargo_tgt_dir_base}"
@@ -1322,6 +1332,7 @@ target "recipe" {
] ]
contexts = { contexts = {
input = elem("target:preparing", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) input = elem("target:preparing", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
preparing = elem("target:preparing", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
} }
} }
@@ -1337,6 +1348,7 @@ target "preparing" {
] ]
contexts = { contexts = {
input = elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) input = elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
ingredients = elem("target:ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
} }
} }
@@ -1345,17 +1357,18 @@ target "ingredients" {
tags = [ tags = [
elem_tag("ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("ingredients", [rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "ingredients"
cache_to = ["type=local,compression=zstd,mode=max"] cache_to = ["type=local,compression=zstd,mode=max"]
target = "ingredients"
dockerfile = "${docker_dir}/Dockerfile.source"
matrix = rust_feat_sys matrix = rust_feat_sys
inherits = [ inherits = [
elem("source", [sys_name, sys_version, sys_target]),
elem("kitchen", [feat_set, sys_name, sys_version, sys_target]), elem("kitchen", [feat_set, sys_name, sys_version, sys_target]),
elem("rust", [rust_toolchain, rust_target, sys_name, sys_version, sys_target]), elem("rust", [rust_toolchain, rust_target, sys_name, sys_version, sys_target]),
elem("source", [sys_name, sys_version, sys_target]),
] ]
contexts = { contexts = {
rust = elem("target:rust", [rust_toolchain, rust_target, sys_name, sys_version, sys_target])
input = elem("target:kitchen", [feat_set, sys_name, sys_version, sys_target]) input = elem("target:kitchen", [feat_set, sys_name, sys_version, sys_target])
rust = elem("target:rust", [rust_toolchain, rust_target, sys_name, sys_version, sys_target])
source = elem("target:source", [sys_name, sys_version, sys_target]) source = elem("target:source", [sys_name, sys_version, sys_target])
} }
args = { args = {