From b99706f376d7ec0a21214e0ec31182f324082560 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 25 Sep 2025 15:14:40 +0200 Subject: [PATCH] dnsdist: Fix release builds by updating the locked Rust lib version Since we are now dynamically setting the version of our internal Rust library when generating the release tarball, `cargo` needs to update the `Cargo.lock` file to reflect the new version, which is not possible if we are passing `--locked`: ``` error: the lock file /pdns/dnsdist-2.1.0-alpha0.870.master.gc64b979bc/dnsdist-rust-lib/rust/Cargo.lock needs to be updated but --locked was passed to prevent this If you want to try to generate the lock file without accessing the network, remove the --locked flag and use --offline instead. ``` This commit fixes that also updating the `Cargo.lock` file when generating the release tarball so that `cargo` no longer needs to update the `Cargo.lock`. Signed-off-by: Remi Gacogne --- builder-support/dockerfiles/Dockerfile.dnsdist | 3 ++- pdns/dnsdistdist/meson-dist-script.sh | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/builder-support/dockerfiles/Dockerfile.dnsdist b/builder-support/dockerfiles/Dockerfile.dnsdist index 0c39b90afb..1cd47e2780 100644 --- a/builder-support/dockerfiles/Dockerfile.dnsdist +++ b/builder-support/dockerfiles/Dockerfile.dnsdist @@ -2,7 +2,8 @@ FROM alpine:3.21 AS dnsdist ARG BUILDER_CACHE_BUSTER= RUN apk add --no-cache gcc g++ make tar autoconf automake protobuf-dev lua-dev \ - libtool file boost-dev ragel python3 py3-yaml git libedit-dev bash meson + libtool file boost-dev ragel python3 py3-yaml git libedit-dev \ + bash meson cargo COPY . /dnsdist/ WORKDIR /dnsdist/ diff --git a/pdns/dnsdistdist/meson-dist-script.sh b/pdns/dnsdistdist/meson-dist-script.sh index 7e264171e9..7e5857c480 100755 --- a/pdns/dnsdistdist/meson-dist-script.sh +++ b/pdns/dnsdistdist/meson-dist-script.sh @@ -30,8 +30,6 @@ echo Running autoreconf -vi so distfile is still usable for autotools building # Run autoconf for people using autotools to build, this creates a configure sc autoreconf -vi rm -rf "$MESON_PROJECT_DIST_ROOT"/autom4te.cache -echo Updating the version of the Rust library to ${BUILDER_VERSION} -"$MESON_SOURCE_ROOT"/../../builder-support/helpers/update-rust-library-version.py "$MESON_PROJECT_DIST_ROOT"/dnsdist-rust-lib/rust/Cargo.toml dnsdist-rust ${BUILDER_VERSION} cd "$MESON_PROJECT_BUILD_ROOT" @@ -53,6 +51,16 @@ meson compile rust-lib-sources cp -vp dnsdist-rust-lib/*.cc dnsdist-rust-lib/*.hh "$MESON_PROJECT_DIST_ROOT"/dnsdist-rust-lib/ cp -vp "$MESON_SOURCE_ROOT"/dnsdist-rust-lib/rust/src/lib.rs "$MESON_PROJECT_DIST_ROOT"/dnsdist-rust-lib/rust/src/ +echo Updating the version of the Rust library to ${BUILDER_VERSION} +"$MESON_SOURCE_ROOT"/../../builder-support/helpers/update-rust-library-version.py "$MESON_PROJECT_DIST_ROOT"/dnsdist-rust-lib/rust/Cargo.toml dnsdist-rust ${BUILDER_VERSION} +# Update the version of the Rust library in Cargo.lock as well, +# This needs to be done AFTER the sources of the Rust library have been generated +# Unfortunately we cannot use --offline because for some reason cargo-update wants +# to check all dependencies even though we are telling it exactly what to update +cd "$MESON_PROJECT_DIST_ROOT"/dnsdist-rust-lib/rust/ +cargo update --verbose --precise ${BUILDER_VERSION} dnsdist-rust +cd "$MESON_PROJECT_BUILD_ROOT" + # Generate man pages meson compile man-pages cp -vp *.1 "$MESON_PROJECT_DIST_ROOT" -- 2.47.3