2025-03-15 04:23:24 +00:00
|
|
|
# syntax = docker/dockerfile:1.11-labs
|
|
|
|
|
|
|
|
|
|
FROM input AS source
|
|
|
|
|
ARG git_checkout
|
|
|
|
|
|
2025-05-28 21:06:33 +00:00
|
|
|
WORKDIR /
|
|
|
|
|
COPY --link --from=input . .
|
|
|
|
|
|
2025-03-15 04:23:24 +00:00
|
|
|
ADD --keep-git-dir . /usr/src/tuwunel
|
|
|
|
|
WORKDIR /usr/src/tuwunel
|
|
|
|
|
RUN <<EOF
|
|
|
|
|
set -eux
|
|
|
|
|
git reset \
|
|
|
|
|
--hard \
|
|
|
|
|
--no-recurse-submodules \
|
|
|
|
|
${git_checkout}
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM input AS ingredients
|
|
|
|
|
ARG sys_target
|
|
|
|
|
ARG rust_toolchain
|
|
|
|
|
ARG RUSTUP_HOME
|
|
|
|
|
ARG CARGO_HOME
|
|
|
|
|
ARG CARGO_TARGET
|
2025-05-14 14:16:22 +02:00
|
|
|
ARG CARGO_TERM_VERBOSE=0
|
2025-05-30 21:15:56 +00:00
|
|
|
ARG RUST_BACKTRACE
|
|
|
|
|
ARG JEMALLOC_OVERRIDE
|
|
|
|
|
#ARG ZSTD_SYS_USE_PKG_CONFIG=0
|
|
|
|
|
#ARG ROCKSDB_LIB_DIR
|
2025-03-15 04:23:24 +00:00
|
|
|
|
|
|
|
|
WORKDIR /usr/src/tuwunel
|
|
|
|
|
COPY --link --from=source /usr/src/tuwunel .
|
|
|
|
|
|
2025-05-14 14:16:22 +02:00
|
|
|
ENV CARGO_TERM_VERBOSE="${CARGO_TERM_VERBOSE}"
|
2025-05-30 21:15:56 +00:00
|
|
|
ENV RUST_BACKTRACE="${RUST_BACKTRACE}"
|
|
|
|
|
ENV JEMALLOC_OVERRIDE="${JEMALLOC_OVERRIDE}"
|
|
|
|
|
#ENV ZSTD_SYS_USE_PKG_CONFIG="${ZSTD_SYS_USE_PKG_CONFIG}"
|
|
|
|
|
#ENV ROCKSDB_LIB_DIR="${ROCKSDB_LIB_DIR}"
|
2025-03-15 04:23:24 +00:00
|
|
|
RUN \
|
|
|
|
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
|
|
|
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
|
|
|
|
<<EOF
|
|
|
|
|
set -eux
|
|
|
|
|
git submodule update \
|
|
|
|
|
--remote \
|
|
|
|
|
--no-fetch \
|
|
|
|
|
--recursive \
|
|
|
|
|
--checkout \
|
|
|
|
|
--init
|
|
|
|
|
|
|
|
|
|
rustup run ${rust_toolchain} \
|
|
|
|
|
cargo fetch \
|
|
|
|
|
--locked \
|
|
|
|
|
--target ${CARGO_TARGET}
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM input AS preparing
|
|
|
|
|
ARG rust_toolchain
|
|
|
|
|
ARG RUSTUP_HOME
|
|
|
|
|
ARG CARGO_HOME
|
|
|
|
|
ARG CARGO_TARGET
|
|
|
|
|
|
|
|
|
|
WORKDIR /usr/src/tuwunel
|
|
|
|
|
RUN \
|
|
|
|
|
--mount=type=cache,dst=${RUSTUP_HOME},sharing=locked \
|
|
|
|
|
--mount=type=cache,dst=${CARGO_HOME},sharing=locked \
|
|
|
|
|
<<EOF
|
|
|
|
|
set -euxo pipefail
|
|
|
|
|
rustup run ${rust_toolchain} \
|
|
|
|
|
cargo chef prepare \
|
|
|
|
|
--recipe-path recipe.json
|
|
|
|
|
|
|
|
|
|
manifest="Cargo.toml"
|
|
|
|
|
package="rust-librocksdb-sys"
|
|
|
|
|
cmd="cargo tree --manifest-path ${manifest} -f {r} -p ${package}"
|
|
|
|
|
url="$(rustup run ${rust_toolchain} ${cmd} | head -n 1)"
|
|
|
|
|
echo "$url" > rocksdb.url
|
|
|
|
|
|
|
|
|
|
sha1sum recipe.json rocksdb.url
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM scratch AS recipe
|
|
|
|
|
|
|
|
|
|
WORKDIR /
|
|
|
|
|
COPY --from=preparing /usr/src/tuwunel/recipe.json .
|
|
|
|
|
COPY --from=preparing /usr/src/tuwunel/rocksdb.url .
|