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-05-30 22:44:05 +00:00
|
|
|
ADD --link --keep-git-dir . /usr/src/tuwunel
|
2025-03-15 04:23:24 +00:00
|
|
|
WORKDIR /usr/src/tuwunel
|
2025-06-03 19:00:00 +00:00
|
|
|
RUN <<EOF
|
2025-03-15 04:23:24 +00:00
|
|
|
set -eux
|
|
|
|
|
git reset \
|
|
|
|
|
--hard \
|
|
|
|
|
--no-recurse-submodules \
|
|
|
|
|
${git_checkout}
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM input AS ingredients
|
|
|
|
|
ARG sys_target
|
2025-06-05 11:18:36 +00:00
|
|
|
ARG rust_target
|
2025-03-15 04:23:24 +00:00
|
|
|
ARG rust_toolchain
|
2025-06-05 11:18:36 +00:00
|
|
|
ARG RUST_HOME
|
2025-03-15 04:23:24 +00:00
|
|
|
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
|
2025-05-31 00:26:53 +00:00
|
|
|
ARG ROCKSDB_LIB_DIR
|
2025-03-15 04:23:24 +00:00
|
|
|
|
2025-05-30 22:44:05 +00:00
|
|
|
WORKDIR /
|
|
|
|
|
COPY --link --from=input . .
|
|
|
|
|
|
2025-06-05 11:18:36 +00:00
|
|
|
WORKDIR /
|
|
|
|
|
COPY --link --from=rust ${RUST_HOME} ${RUST_HOME}
|
|
|
|
|
|
2025-03-15 04:23:24 +00:00
|
|
|
WORKDIR /usr/src/tuwunel
|
|
|
|
|
COPY --link --from=source /usr/src/tuwunel .
|
|
|
|
|
|
2025-06-05 11:18:36 +00:00
|
|
|
ENV PATH="${CARGO_HOME}/bin:$PATH"
|
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}"
|
2025-05-31 00:26:53 +00:00
|
|
|
ENV ROCKSDB_LIB_DIR="${ROCKSDB_LIB_DIR}"
|
2025-03-15 04:23:24 +00:00
|
|
|
RUN \
|
2025-06-01 11:40:09 +00:00
|
|
|
--mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=locked \
|
|
|
|
|
--mount=type=cache,dst=${CARGO_HOME}/registry,sharing=locked \
|
|
|
|
|
--mount=type=cache,dst=${CARGO_HOME}/git,sharing=locked \
|
2025-03-15 04:23:24 +00:00
|
|
|
<<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
|
2025-06-05 11:18:36 +00:00
|
|
|
ARG rust_target
|
2025-03-15 04:23:24 +00:00
|
|
|
ARG rust_toolchain
|
|
|
|
|
ARG RUSTUP_HOME
|
|
|
|
|
ARG CARGO_HOME
|
|
|
|
|
ARG CARGO_TARGET
|
|
|
|
|
|
2025-06-03 19:00:00 +00:00
|
|
|
WORKDIR /
|
|
|
|
|
COPY --link --from=input . .
|
2025-05-30 22:44:05 +00:00
|
|
|
|
2025-03-15 04:23:24 +00:00
|
|
|
WORKDIR /usr/src/tuwunel
|
|
|
|
|
RUN \
|
2025-06-01 11:40:09 +00:00
|
|
|
--mount=type=cache,dst=${RUSTUP_HOME}/downloads,sharing=locked \
|
|
|
|
|
--mount=type=cache,dst=${CARGO_HOME}/registry,sharing=locked \
|
|
|
|
|
--mount=type=cache,dst=${CARGO_HOME}/git,sharing=locked \
|
2025-03-15 04:23:24 +00:00
|
|
|
<<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)"
|
2025-06-08 05:04:36 +00:00
|
|
|
url="https://github.com/matrix-construct/rust-rocksdb" #TODO fixme
|
2025-03-15 04:23:24 +00:00
|
|
|
echo "$url" > rocksdb.url
|
|
|
|
|
|
|
|
|
|
sha1sum recipe.json rocksdb.url
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM scratch AS recipe
|
|
|
|
|
|
|
|
|
|
WORKDIR /
|
2025-06-05 11:18:36 +00:00
|
|
|
COPY --from=preparing /usr/src/tuwunel/recipe.json .
|
|
|
|
|
COPY --from=preparing /usr/src/tuwunel/rocksdb.url .
|