From faca0e4220d1cf6910f6ea7f7ea03077438c5a4d Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 3 Nov 2022 17:48:05 -0700 Subject: [PATCH] CI: add stage3/stage4 determinism check Makes sure that #12183 will not regress. --- ci/zinc/drone.yml | 8 ++++++++ ci/zinc/linux_test_determinism | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100755 ci/zinc/linux_test_determinism diff --git a/ci/zinc/drone.yml b/ci/zinc/drone.yml index 6f48fe4c13..b16d24a2d0 100644 --- a/ci/zinc/drone.yml +++ b/ci/zinc/drone.yml @@ -35,10 +35,18 @@ steps: commands: - ./ci/zinc/build_aarch64_macos +- name: test_determinism + depends_on: + - test_stage3_release + image: ci/debian-amd64:11.1-12 + commands: + - ./ci/zinc/linux_test_determinism + - name: linux_package depends_on: - test_stage3_debug - test_stage3_release + - test_determinism when: branch: - master diff --git a/ci/zinc/linux_test_determinism b/ci/zinc/linux_test_determinism new file mode 100755 index 0000000000..b45cd0ecfc --- /dev/null +++ b/ci/zinc/linux_test_determinism @@ -0,0 +1,28 @@ +#!/bin/sh + +set -x +set -e + +DEPS_LOCAL="/deps/local" +ZIG_PREFIX="$DRONE_WORKSPACE/_release/staging" +VERSION=$($ZIG_PREFIX/bin/zig version) + +"$ZIG_PREFIX/bin/zig" build \ + --prefix stage4 \ + -Dconfig_h="build-release/config.h" \ + -Denable-llvm \ + -Denable-stage1 \ + -Dno-lib \ + -Drelease \ + -Dstrip \ + -Dtarget=x86_64-linux-musl \ + -Duse-zig-libcxx \ + -Dversion-string="$VERSION" + +# diff returns an error code if the files differ. +echo "If the following command fails, it means nondeterminism has been" +echo "introduced, making stage3 and stage4 no longer byte-for-byte identical." +diff "$ZIG_PREFIX/bin/zig" "stage4/bin/zig" + +# Explicit exit helps show last command duration. +exit