From 33474537ab21c1535a95e0d8ae1f22df6e9a4619 Mon Sep 17 00:00:00 2001 From: Trinity Pointard Date: Sun, 29 Aug 2021 13:48:33 +0200 Subject: [PATCH] make reproducible Windows build Linux hash : c024778da162cda77869c46d162729d012a7758bee973bc83fa78c964d080903 Windows hash : e97e171740b889b7e3722b79c3763177174baac7fa34a5c3615c999298e1bc48 --- .gitlab-ci.yml | 3 ++- maint/reproducible_build.sh | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7c3f518bf..323af870b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,5 +41,6 @@ build-repro: - ./maint/reproducible_build.sh artifacts: paths: - - arti-bin + - arti-linux + - arti-windows.exe expire_in: 1 day diff --git a/maint/reproducible_build.sh b/maint/reproducible_build.sh index 8140a5866..c76f9770a 100755 --- a/maint/reproducible_build.sh +++ b/maint/reproducible_build.sh @@ -30,15 +30,16 @@ cd /arti # the cgroup control fs. This does not actually interact with cgroups, but # should be removed as soon as /dev/shm get increased if mount | grep '/sys/fs/cgroup type tmpfs' > /dev/null; then - mkdir -p /sys/fs/cgroup/registry /usr/local/cargo/registry - ln -s /sys/fs/cgroup/registry /usr/local/cargo/registry/src + mkdir -p /sys/fs/cgroup/registry /usr/local/cargo/registry + ln -s /sys/fs/cgroup/registry /usr/local/cargo/registry/src else - mkdir -p /dev/shm/registry /usr/local/cargo/registry - ln -s /dev/shm/registry /usr/local/cargo/registry/src + mkdir -p /dev/shm/registry /usr/local/cargo/registry + ln -s /dev/shm/registry /usr/local/cargo/registry/src fi ## add missing dependancies -apk add --no-cache musl-dev perl make git +apk add --no-cache musl-dev perl make git mingw-w64-gcc +rustup target add x86_64-pc-windows-gnu ## bring back the Cargo.lock where dependancies version are strictly defined mv misc/Cargo.lock Cargo.lock @@ -47,10 +48,15 @@ mv misc/Cargo.lock Cargo.lock ## feature "static" enable compiling some C dependancies instead of linking ## to system libraries. It is required to get a well behaving result. cargo build -p arti --target x86_64-unknown-linux-musl --release --features static +mv /arti/target/x86_64-unknown-linux-musl/release/arti "$here"/arti-linux + +## PE contains a timestamp of when they were built. Don't insert this value +export RUSTFLAGS="$RUSTFLAGS -C link-arg=-Wl,--no-insert-timestamp" +cargo build -p arti --target x86_64-pc-windows-gnu --release --features static +mv /arti/target/x86_64-pc-windows-gnu/release/arti.exe "$here"/arti-windows.exe set +x -echo branch: "$(git rev-parse --abbrev-ref HEAD)" -echo commit: "$(git rev-parse HEAD)" -echo build hash: "$(sha256sum target/x86_64-unknown-linux-musl/release/arti | cut -d " " -f 1)" - -mv /arti/target/x86_64-unknown-linux-musl/release/arti "$here"/arti-bin +echo "branch :" "$(git rev-parse --abbrev-ref HEAD)" +echo "commit :" "$(git rev-parse HEAD)" +echo "Linux hash :" "$(sha256sum "$here"/arti-linux | cut -d " " -f 1)" +echo "Windows hash :" "$(sha256sum "$here"/arti-windows.exe | cut -d " " -f 1)"