CI: also test x86_64-macos with a debug zig compiler

This commit is contained in:
Andrew Kelley
2023-01-20 11:57:49 -07:00
parent c0284e242f
commit 3df4707ea7
3 changed files with 75 additions and 12 deletions

View File

@@ -38,7 +38,7 @@ jobs:
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Build and Test - name: Build and Test
run: sh ci/aarch64-linux-release.sh run: sh ci/aarch64-linux-release.sh
x86_64-macos: x86_64-macos-debug:
runs-on: "macos-11" runs-on: "macos-11"
env: env:
ARCH: "x86_64" ARCH: "x86_64"
@@ -46,7 +46,16 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Build and Test - name: Build and Test
run: ci/x86_64-macos.sh run: ci/x86_64-macos-debug.sh
x86_64-macos-release:
runs-on: "macos-11"
env:
ARCH: "x86_64"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build and Test
run: ci/x86_64-macos-release.sh
aarch64-macos: aarch64-macos:
runs-on: [self-hosted, macOS, aarch64] runs-on: [self-hosted, macOS, aarch64]
env: env:

58
ci/x86_64-macos-debug.sh Executable file
View File

@@ -0,0 +1,58 @@
#!/bin/sh
set -x
set -e
ZIGDIR="$(pwd)"
TARGET="$ARCH-macos-none"
MCPU="baseline"
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.534+b0b1cc356"
PREFIX="$HOME/$CACHE_BASENAME"
JOBS="-j3"
rm -rf $PREFIX
cd $HOME
curl -L -O "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz"
tar xf "$CACHE_BASENAME.tar.xz"
ZIG="$PREFIX/bin/zig"
cd $ZIGDIR
# Make the `zig version` number consistent.
# This will affect the cmake command below.
git config core.abbrev 9
git fetch --unshallow || true
git fetch --tags
rm -rf build
mkdir build
cd build
# Override the cache directories because they won't actually help other CI runs
# which will be testing alternate versions of zig, and ultimately would just
# fill up space on the hard drive for no reason.
export ZIG_GLOBAL_CACHE_DIR="$(pwd)/zig-global-cache"
export ZIG_LOCAL_CACHE_DIR="$(pwd)/zig-local-cache"
cmake .. \
-DCMAKE_PREFIX_PATH="$PREFIX" \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER="$ZIG;cc;-target;$TARGET;-mcpu=$MCPU" \
-DCMAKE_CXX_COMPILER="$ZIG;c++;-target;$TARGET;-mcpu=$MCPU" \
-DZIG_TARGET_TRIPLE="$TARGET" \
-DZIG_TARGET_MCPU="$MCPU" \
-DZIG_STATIC=ON
make $JOBS install
stage3/bin/zig build test docs \
--zig-lib-dir "$(pwd)/../lib" \
-Denable-macos-sdk \
-Dstatic-llvm \
-Dskip-non-native \
--search-prefix "$PREFIX"
# Produce the experimental std lib documentation.
stage3/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib

View File

@@ -3,9 +3,6 @@
set -x set -x
set -e set -e
# Script assumes the presence of the following:
# s3cmd
ZIGDIR="$(pwd)" ZIGDIR="$(pwd)"
TARGET="$ARCH-macos-none" TARGET="$ARCH-macos-none"
MCPU="baseline" MCPU="baseline"
@@ -40,7 +37,6 @@ export ZIG_GLOBAL_CACHE_DIR="$(pwd)/zig-global-cache"
export ZIG_LOCAL_CACHE_DIR="$(pwd)/zig-local-cache" export ZIG_LOCAL_CACHE_DIR="$(pwd)/zig-local-cache"
cmake .. \ cmake .. \
-DCMAKE_INSTALL_PREFIX="stage3-release" \
-DCMAKE_PREFIX_PATH="$PREFIX" \ -DCMAKE_PREFIX_PATH="$PREFIX" \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="$ZIG;cc;-target;$TARGET;-mcpu=$MCPU" \ -DCMAKE_C_COMPILER="$ZIG;cc;-target;$TARGET;-mcpu=$MCPU" \
@@ -51,7 +47,7 @@ cmake .. \
make $JOBS install make $JOBS install
stage3-release/bin/zig build test docs \ stage3/bin/zig build test docs \
--zig-lib-dir "$(pwd)/../lib" \ --zig-lib-dir "$(pwd)/../lib" \
-Denable-macos-sdk \ -Denable-macos-sdk \
-Dstatic-llvm \ -Dstatic-llvm \
@@ -59,20 +55,20 @@ stage3-release/bin/zig build test docs \
--search-prefix "$PREFIX" --search-prefix "$PREFIX"
# Produce the experimental std lib documentation. # Produce the experimental std lib documentation.
stage3-release/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib stage3/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
# Ensure that stage3 and stage4 are byte-for-byte identical. # Ensure that stage3 and stage4 are byte-for-byte identical.
stage3-release/bin/zig build \ stage3/bin/zig build \
--prefix stage4-release \ --prefix stage4 \
-Denable-llvm \ -Denable-llvm \
-Dno-lib \ -Dno-lib \
-Drelease \ -Drelease \
-Dstrip \ -Dstrip \
-Dtarget=$TARGET \ -Dtarget=$TARGET \
-Duse-zig-libcxx \ -Duse-zig-libcxx \
-Dversion-string="$(stage3-release/bin/zig version)" -Dversion-string="$(stage3/bin/zig version)"
# diff returns an error code if the files differ. # diff returns an error code if the files differ.
echo "If the following command fails, it means nondeterminism has been" echo "If the following command fails, it means nondeterminism has been"
echo "introduced, making stage3 and stage4 no longer byte-for-byte identical." echo "introduced, making stage3 and stage4 no longer byte-for-byte identical."
diff stage3-release/bin/zig stage4-release/bin/zig diff stage3/bin/zig stage4/bin/zig