From ec7d247f38b9b2c8ab32f840f3f530631e2e8cb6 Mon Sep 17 00:00:00 2001 From: ShahanaFarooqui Date: Thu, 15 Jan 2026 18:43:19 -0800 Subject: [PATCH] docker: Added fixed SOURCE_DATE_EPOCH flag for reproducible Fedora build - Using environment variable `SOURCE_DATE_EPOCH` with fixed value will enforce a consistent timestamp for Fedora build. . Similar to Ubuntu fix in commit https://github.com/ElementsProject/lightning/commit/490fb0fc3b55284d47f8d391a7301c857e425b68 - Locked cargo version - Add `no-cache` to Fedora build Changelog-Fixed: Core lightning builds for Fedora on all systems are deterministic. --- contrib/docker/Dockerfile.builder.fedora | 5 +++-- tools/build-release.sh | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/contrib/docker/Dockerfile.builder.fedora b/contrib/docker/Dockerfile.builder.fedora index ec0c2d37e..f30e1a54b 100644 --- a/contrib/docker/Dockerfile.builder.fedora +++ b/contrib/docker/Dockerfile.builder.fedora @@ -2,6 +2,8 @@ FROM fedora:40 ENV UV_PYTHON=3.12 ENV BITCOIN_VERSION=27.1 +ENV SOURCE_DATE_EPOCH=1672531200 +ENV RUSTFLAGS="-C link-arg=-Wl,--build-id=none" WORKDIR /tmp @@ -20,7 +22,6 @@ RUN dnf update -y && \ jq \ xz \ zlib-devel \ - cargo \ libsodium-devel \ which \ sed \ @@ -35,7 +36,7 @@ RUN dnf update -y && \ dnf clean all # Install Rust via rustup (for lockfile v4 support) -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.92.0 ENV PATH="/root/.cargo/bin:${PATH}" # Install lowdown diff --git a/tools/build-release.sh b/tools/build-release.sh index d1b9fa410..62b409c2c 100755 --- a/tools/build-release.sh +++ b/tools/build-release.sh @@ -177,7 +177,7 @@ for target in $TARGETS; do TAG=fedora DOCKERFILE=contrib/docker/Dockerfile.builder.fedora FEDORA_VERSION=$(grep -oP '^FROM fedora:\K[0-9]+' "$DOCKERFILE") - docker build -f $DOCKERFILE -t $TAG --load . + docker build --no-cache -f $DOCKERFILE -t $TAG --load . docker run --rm=true -v "$(pwd)":/src:ro -v "$RELEASEDIR":/release $TAG /src/tools/build-release.sh --inside-docker "$VERSION" "$platform" "$FEDORA_VERSION" "$ARCH" "$MAKEPAR" docker run --rm=true -w /build $TAG rm -rf /"$VERSION-$platform-$FEDORA_VERSION-$ARCH" /build echo "Fedora Image Built"