From 3df4707ea79d292f07e0d78ae7dd76266eeb1a16 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 20 Jan 2023 11:57:49 -0700 Subject: [PATCH 1/3] CI: also test x86_64-macos with a debug zig compiler --- .github/workflows/ci.yaml | 13 ++++- ci/x86_64-macos-debug.sh | 58 +++++++++++++++++++ ...86_64-macos.sh => x86_64-macos-release.sh} | 16 ++--- 3 files changed, 75 insertions(+), 12 deletions(-) create mode 100755 ci/x86_64-macos-debug.sh rename ci/{x86_64-macos.sh => x86_64-macos-release.sh} (80%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a0ff406dec..34e029cdd5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -38,7 +38,7 @@ jobs: uses: actions/checkout@v3 - name: Build and Test run: sh ci/aarch64-linux-release.sh - x86_64-macos: + x86_64-macos-debug: runs-on: "macos-11" env: ARCH: "x86_64" @@ -46,7 +46,16 @@ jobs: - name: Checkout uses: actions/checkout@v3 - 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: runs-on: [self-hosted, macOS, aarch64] env: diff --git a/ci/x86_64-macos-debug.sh b/ci/x86_64-macos-debug.sh new file mode 100755 index 0000000000..2ce2b9ba5f --- /dev/null +++ b/ci/x86_64-macos-debug.sh @@ -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 diff --git a/ci/x86_64-macos.sh b/ci/x86_64-macos-release.sh similarity index 80% rename from ci/x86_64-macos.sh rename to ci/x86_64-macos-release.sh index 4ea62bf1e0..5153dbb19d 100755 --- a/ci/x86_64-macos.sh +++ b/ci/x86_64-macos-release.sh @@ -3,9 +3,6 @@ set -x set -e -# Script assumes the presence of the following: -# s3cmd - ZIGDIR="$(pwd)" TARGET="$ARCH-macos-none" MCPU="baseline" @@ -40,7 +37,6 @@ export ZIG_GLOBAL_CACHE_DIR="$(pwd)/zig-global-cache" export ZIG_LOCAL_CACHE_DIR="$(pwd)/zig-local-cache" cmake .. \ - -DCMAKE_INSTALL_PREFIX="stage3-release" \ -DCMAKE_PREFIX_PATH="$PREFIX" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER="$ZIG;cc;-target;$TARGET;-mcpu=$MCPU" \ @@ -51,7 +47,7 @@ cmake .. \ make $JOBS install -stage3-release/bin/zig build test docs \ +stage3/bin/zig build test docs \ --zig-lib-dir "$(pwd)/../lib" \ -Denable-macos-sdk \ -Dstatic-llvm \ @@ -59,20 +55,20 @@ stage3-release/bin/zig build test docs \ --search-prefix "$PREFIX" # 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. -stage3-release/bin/zig build \ - --prefix stage4-release \ +stage3/bin/zig build \ + --prefix stage4 \ -Denable-llvm \ -Dno-lib \ -Drelease \ -Dstrip \ -Dtarget=$TARGET \ -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. echo "If the following command fails, it means nondeterminism has been" 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 From 8484df5bd26350ccfd4d2a5da5aeaed923901ae5 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 22 Jan 2023 12:27:18 -0700 Subject: [PATCH 2/3] zig cc: add -Wno-overriding-t-option to clang on darwin This avoids a warning that sometimes occurs when providing both a -target argument that contains a version as well as the -mmacosx-version-min argument. Zig provides the correct value in both places, so it doesn't matter which one gets overridden. --- src/Compilation.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Compilation.zig b/src/Compilation.zig index b0af925e29..60dcc55b7b 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -4319,11 +4319,18 @@ pub fn addCCArgs( } }, .macos => { + try argv.ensureUnusedCapacity(2); // Pass the proper -m-version-min argument for darwin. const ver = target.os.version_range.semver.min; - try argv.append(try std.fmt.allocPrint(arena, "-mmacos-version-min={d}.{d}.{d}", .{ + argv.appendAssumeCapacity(try std.fmt.allocPrint(arena, "-mmacos-version-min={d}.{d}.{d}", .{ ver.major, ver.minor, ver.patch, })); + // This avoids a warning that sometimes occurs when + // providing both a -target argument that contains a + // version as well as the -mmacosx-version-min argument. + // Zig provides the correct value in both places, so it + // doesn't matter which one gets overridden. + argv.appendAssumeCapacity("-Wno-overriding-t-option"); }, .ios, .tvos, .watchos => switch (target.cpu.arch) { // Pass the proper -m-version-min argument for darwin. From 4592ee77c0770c60ec573e561a474e2ab9cf9b84 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 22 Jan 2023 15:00:53 -0700 Subject: [PATCH 3/3] update CI tarball for macos This includes the commit for -Wno-overriding-t-option --- ci/x86_64-macos-debug.sh | 2 +- ci/x86_64-macos-release.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/x86_64-macos-debug.sh b/ci/x86_64-macos-debug.sh index 2ce2b9ba5f..c24ff5d295 100755 --- a/ci/x86_64-macos-debug.sh +++ b/ci/x86_64-macos-debug.sh @@ -6,7 +6,7 @@ set -e ZIGDIR="$(pwd)" TARGET="$ARCH-macos-none" MCPU="baseline" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.534+b0b1cc356" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.1416+8484df5bd" PREFIX="$HOME/$CACHE_BASENAME" JOBS="-j3" diff --git a/ci/x86_64-macos-release.sh b/ci/x86_64-macos-release.sh index 5153dbb19d..a4dedb4446 100755 --- a/ci/x86_64-macos-release.sh +++ b/ci/x86_64-macos-release.sh @@ -6,7 +6,7 @@ set -e ZIGDIR="$(pwd)" TARGET="$ARCH-macos-none" MCPU="baseline" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.534+b0b1cc356" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.1416+8484df5bd" PREFIX="$HOME/$CACHE_BASENAME" JOBS="-j3"