authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-01-09 15:47:54-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-01-09 15:48:02-07:00
log8583e88db522f0f94f2110f1d255406e5e7e99fd
tree8c04379ff1e0ebedc5b41551b1b9349a3b913f02
parentda96e7efccba51ad3749636d32f82b4193a590b8

CI: update to github actions in the 0.10.x branch


8 files changed, 73 insertions(+), 100 deletions(-)

.github/workflows/ci.yaml+2-12
...@@ -1,9 +1,8 @@...@@ -1,9 +1,8 @@
1name: ci1name: ci
2on:2on:
3 pull_request:
4 push:3 push:
5 branches: 4 branches:
6 - master5 - 0.10.x
7concurrency: 6concurrency:
8 # Cancels pending runs when a PR gets updated.7 # Cancels pending runs when a PR gets updated.
9 group: ${{ github.head_ref || github.run_id }}-${{ github.actor }}8 group: ${{ github.head_ref || github.run_id }}-${{ github.actor }}
...@@ -39,22 +38,13 @@ jobs:...@@ -39,22 +38,13 @@ jobs:
39 run: sh ci/aarch64-linux-release.sh38 run: sh ci/aarch64-linux-release.sh
40 x86_64-macos:39 x86_64-macos:
41 runs-on: "macos-11"40 runs-on: "macos-11"
42 env: 41 env:
43 ARCH: "x86_64"42 ARCH: "x86_64"
44 steps:43 steps:
45 - name: Checkout44 - name: Checkout
46 uses: actions/checkout@v345 uses: actions/checkout@v3
47 - name: Build and Test46 - name: Build and Test
48 run: ci/x86_64-macos.sh47 run: ci/x86_64-macos.sh
49 aarch64-macos:
50 runs-on: [self-hosted, macOS, aarch64]
51 env:
52 ARCH: "aarch64"
53 steps:
54 - name: Checkout
55 uses: actions/checkout@v3
56 - name: Build and Test
57 run: ci/aarch64-macos.sh
58 x86_64-windows:48 x86_64-windows:
59 runs-on: windows-latest49 runs-on: windows-latest
60 env: 50 env:
ci/aarch64-linux-debug.sh+2-4
...@@ -8,7 +8,7 @@ set -e...@@ -8,7 +8,7 @@ set -e
8ARCH="$(uname -m)"8ARCH="$(uname -m)"
9TARGET="$ARCH-linux-musl"9TARGET="$ARCH-linux-musl"
10MCPU="baseline"10MCPU="baseline"
11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.971+19056cb68"
12PREFIX="$HOME/deps/$CACHE_BASENAME"12PREFIX="$HOME/deps/$CACHE_BASENAME"
13ZIG="$PREFIX/bin/zig"13ZIG="$PREFIX/bin/zig"
1414
...@@ -57,8 +57,6 @@ stage3-debug/bin/zig fmt --check .. \...@@ -57,8 +57,6 @@ stage3-debug/bin/zig fmt --check .. \
57# simultaneously test building self-hosted without LLVM and with 32-bit arm57# simultaneously test building self-hosted without LLVM and with 32-bit arm
58stage3-debug/bin/zig build -Dtarget=arm-linux-musleabihf58stage3-debug/bin/zig build -Dtarget=arm-linux-musleabihf
5959
60# TODO: add -fqemu back to this line
61
62stage3-debug/bin/zig build test docs \60stage3-debug/bin/zig build test docs \
63 -fwasmtime \61 -fwasmtime \
64 -Dstatic-llvm \62 -Dstatic-llvm \
...@@ -67,7 +65,7 @@ stage3-debug/bin/zig build test docs \...@@ -67,7 +65,7 @@ stage3-debug/bin/zig build test docs \
67 --zig-lib-dir "$(pwd)/../lib"65 --zig-lib-dir "$(pwd)/../lib"
6866
69# Look for HTML errors.67# Look for HTML errors.
70tidy --drop-empty-elements no -qe ../zig-cache/langref.html68tidy --drop-empty-elements no -qe "$ZIG_LOCAL_CACHE_DIR/langref.html"
7169
72# Produce the experimental std lib documentation.70# Produce the experimental std lib documentation.
73stage3-debug/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib71stage3-debug/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
ci/aarch64-linux-release.sh+4-9
...@@ -8,9 +8,9 @@ set -e...@@ -8,9 +8,9 @@ set -e
8ARCH="$(uname -m)"8ARCH="$(uname -m)"
9TARGET="$ARCH-linux-musl"9TARGET="$ARCH-linux-musl"
10MCPU="baseline"10MCPU="baseline"
11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.971+19056cb68"
12PREFIX="$HOME/deps/$CACHE_BASENAME"12PREFIX="$HOME/deps/$CACHE_BASENAME"
13ZIG="$PREFIX/bin/zig" 13ZIG="$PREFIX/bin/zig"
1414
15export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$PATH"15export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$PATH"
1616
...@@ -57,8 +57,6 @@ stage3-release/bin/zig fmt --check .. \...@@ -57,8 +57,6 @@ stage3-release/bin/zig fmt --check .. \
57# simultaneously test building self-hosted without LLVM and with 32-bit arm57# simultaneously test building self-hosted without LLVM and with 32-bit arm
58stage3-release/bin/zig build -Dtarget=arm-linux-musleabihf58stage3-release/bin/zig build -Dtarget=arm-linux-musleabihf
5959
60# TODO: add -fqemu back to this line
61
62stage3-release/bin/zig build test docs \60stage3-release/bin/zig build test docs \
63 -fwasmtime \61 -fwasmtime \
64 -Dstatic-llvm \62 -Dstatic-llvm \
...@@ -67,10 +65,7 @@ stage3-release/bin/zig build test docs \...@@ -67,10 +65,7 @@ stage3-release/bin/zig build test docs \
67 --zig-lib-dir "$(pwd)/../lib"65 --zig-lib-dir "$(pwd)/../lib"
6866
69# Look for HTML errors.67# Look for HTML errors.
70tidy --drop-empty-elements no -qe ../zig-cache/langref.html68tidy --drop-empty-elements no -qe "$ZIG_LOCAL_CACHE_DIR/langref.html"
7169
72# Produce the experimental std lib documentation.70# Produce the experimental std lib documentation.
73stage3-release/bin/zig test ../lib/std/std.zig \71stage3-release/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
74 -femit-docs \
75 -fno-emit-bin \
76 --zig-lib-dir "$(pwd)/../lib"
ci/aarch64-macos.sh+19-7
...@@ -4,12 +4,12 @@ set -x...@@ -4,12 +4,12 @@ set -x
4set -e4set -e
55
6# Script assumes the presence of the following:6# Script assumes the presence of the following:
7# s3cmd 7# s3cmd
88
9ZIGDIR="$(pwd)"9ZIGDIR="$(pwd)"
10TARGET="$ARCH-macos-none"10TARGET="$ARCH-macos-none"
11MCPU="baseline"11MCPU="baseline"
12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.534+b0b1cc356-1"
13PREFIX="$HOME/$CACHE_BASENAME"13PREFIX="$HOME/$CACHE_BASENAME"
14ZIG="$PREFIX/bin/zig"14ZIG="$PREFIX/bin/zig"
1515
...@@ -51,8 +51,20 @@ stage3-release/bin/zig build test docs \...@@ -51,8 +51,20 @@ stage3-release/bin/zig build test docs \
51 --search-prefix "$PREFIX"51 --search-prefix "$PREFIX"
5252
53# Produce the experimental std lib documentation.53# Produce the experimental std lib documentation.
54mkdir -p "stage3-release/doc/std"54stage3-release/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
55stage3-release/bin/zig test "$(pwd)/../lib/std/std.zig" \55
56 --zig-lib-dir "$(pwd)/../lib" \56# Ensure that stage3 and stage4 are byte-for-byte identical.
57 -femit-docs="$(pwd)/stage3-release/doc/std" \57stage3-release/bin/zig build \
58 -fno-emit-bin58 --prefix stage4-release \
59 -Denable-llvm \
60 -Dno-lib \
61 -Drelease \
62 -Dstrip \
63 -Dtarget=$TARGET \
64 -Duse-zig-libcxx \
65 -Dversion-string="$(stage3-release/bin/zig version)"
66
67# diff returns an error code if the files differ.
68echo "If the following command fails, it means nondeterminism has been"
69echo "introduced, making stage3 and stage4 no longer byte-for-byte identical."
70diff stage3-release/bin/zig stage4-release/bin/zig
ci/x86_64-linux-debug.sh+3-6
...@@ -8,7 +8,7 @@ set -e...@@ -8,7 +8,7 @@ set -e
8ARCH="$(uname -m)"8ARCH="$(uname -m)"
9TARGET="$ARCH-linux-musl"9TARGET="$ARCH-linux-musl"
10MCPU="baseline"10MCPU="baseline"
11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.971+19056cb68"
12PREFIX="$HOME/deps/$CACHE_BASENAME"12PREFIX="$HOME/deps/$CACHE_BASENAME"
13ZIG="$PREFIX/bin/zig"13ZIG="$PREFIX/bin/zig"
1414
...@@ -66,10 +66,7 @@ stage3-debug/bin/zig build test docs \...@@ -66,10 +66,7 @@ stage3-debug/bin/zig build test docs \
66 --zig-lib-dir "$(pwd)/../lib"66 --zig-lib-dir "$(pwd)/../lib"
6767
68# Look for HTML errors.68# Look for HTML errors.
69tidy --drop-empty-elements no -qe ../zig-cache/langref.html69tidy --drop-empty-elements no -qe "$ZIG_LOCAL_CACHE_DIR/langref.html"
7070
71# Produce the experimental std lib documentation.71# Produce the experimental std lib documentation.
72stage3-debug/bin/zig test ../lib/std/std.zig \72stage3-debug/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
73 -femit-docs \
74 -fno-emit-bin \
75 --zig-lib-dir "$(pwd)/../lib"
ci/x86_64-linux-release.sh+4-23
...@@ -8,9 +8,9 @@ set -e...@@ -8,9 +8,9 @@ set -e
8ARCH="$(uname -m)"8ARCH="$(uname -m)"
9TARGET="$ARCH-linux-musl"9TARGET="$ARCH-linux-musl"
10MCPU="baseline"10MCPU="baseline"
11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"11CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.971+19056cb68"
12PREFIX="$HOME/deps/$CACHE_BASENAME"12PREFIX="$HOME/deps/$CACHE_BASENAME"
13ZIG="$PREFIX/bin/zig" 13ZIG="$PREFIX/bin/zig"
1414
15export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$HOME/deps/qemu-linux-x86_64-6.1.0.1/bin:$PATH"15export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$HOME/deps/qemu-linux-x86_64-6.1.0.1/bin:$PATH"
1616
...@@ -67,26 +67,7 @@ stage3-release/bin/zig build test docs \...@@ -67,26 +67,7 @@ stage3-release/bin/zig build test docs \
67 --zig-lib-dir "$(pwd)/../lib"67 --zig-lib-dir "$(pwd)/../lib"
6868
69# Look for HTML errors.69# Look for HTML errors.
70tidy --drop-empty-elements no -qe ../zig-cache/langref.html70tidy --drop-empty-elements no -qe "$ZIG_LOCAL_CACHE_DIR/langref.html"
7171
72# Produce the experimental std lib documentation.72# Produce the experimental std lib documentation.
73stage3-release/bin/zig test ../lib/std/std.zig \73stage3-release/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
74 -femit-docs \
75 -fno-emit-bin \
76 --zig-lib-dir "$(pwd)/../lib"
77
78stage3-release/bin/zig build \
79 --prefix stage4-release \
80 -Denable-llvm \
81 -Denable-stage1 \
82 -Dno-lib \
83 -Drelease \
84 -Dstrip \
85 -Dtarget=$TARGET \
86 -Duse-zig-libcxx \
87 -Dversion-string="$(stage3-release/bin/zig version)"
88
89# diff returns an error code if the files differ.
90echo "If the following command fails, it means nondeterminism has been"
91echo "introduced, making stage3 and stage4 no longer byte-for-byte identical."
92diff stage3-release/bin/zig stage4-release/bin/zig
ci/x86_64-macos.sh+3-7
...@@ -4,12 +4,12 @@ set -x...@@ -4,12 +4,12 @@ set -x
4set -e4set -e
55
6# Script assumes the presence of the following:6# Script assumes the presence of the following:
7# s3cmd 7# s3cmd
88
9ZIGDIR="$(pwd)"9ZIGDIR="$(pwd)"
10TARGET="$ARCH-macos-none"10TARGET="$ARCH-macos-none"
11MCPU="baseline"11MCPU="baseline"
12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.534+b0b1cc356"
13PREFIX="$HOME/$CACHE_BASENAME"13PREFIX="$HOME/$CACHE_BASENAME"
14JOBS="-j3"14JOBS="-j3"
1515
...@@ -59,8 +59,4 @@ stage3-release/bin/zig build test docs \...@@ -59,8 +59,4 @@ stage3-release/bin/zig build test docs \
59 --search-prefix "$PREFIX"59 --search-prefix "$PREFIX"
6060
61# Produce the experimental std lib documentation.61# Produce the experimental std lib documentation.
62mkdir -p "stage3-release/doc/std"62stage3-release/bin/zig test ../lib/std/std.zig -femit-docs -fno-emit-bin --zig-lib-dir ../lib
63stage3-release/bin/zig test "$(pwd)/../lib/std/std.zig" \
64 --zig-lib-dir "$(pwd)/../lib" \
65 -femit-docs="$(pwd)/stage3-release/doc/std" \
66 -fno-emit-bin
ci/x86_64-windows.ps1+36-32
...@@ -1,20 +1,18 @@...@@ -1,20 +1,18 @@
1$TARGET = "$($Env:ARCH)-windows-gnu"1$TARGET = "$($Env:ARCH)-windows-gnu"
2$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"2$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e"
3$MCPU = "baseline"
3$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip"4$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip"
5$PREFIX_PATH = "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME"
6$ZIG = "$PREFIX_PATH\bin\zig.exe"
7$ZIG_LIB_DIR = "$(Get-Location)\lib"
48
5Write-Output "Downloading $ZIG_LLVM_CLANG_LLD_URL"9Write-Output "Downloading $ZIG_LLVM_CLANG_LLD_URL"
6
7Invoke-WebRequest -Uri "$ZIG_LLVM_CLANG_LLD_URL" -OutFile "$ZIG_LLVM_CLANG_LLD_NAME.zip"10Invoke-WebRequest -Uri "$ZIG_LLVM_CLANG_LLD_URL" -OutFile "$ZIG_LLVM_CLANG_LLD_NAME.zip"
811
9Write-Output "Extracting..."12Write-Output "Extracting..."
1013Add-Type -AssemblyName System.IO.Compression.FileSystem ;
11Add-Type -AssemblyName System.IO.Compression.FileSystem ;
12[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/$ZIG_LLVM_CLANG_LLD_NAME.zip", "$PWD")14[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/$ZIG_LLVM_CLANG_LLD_NAME.zip", "$PWD")
1315
14Set-Variable -Name ZIGLIBDIR -Value "$(Get-Location)\lib"
15Set-Variable -Name ZIGINSTALLDIR -Value "$(Get-Location)\stage3-release"
16Set-Variable -Name ZIGPREFIXPATH -Value "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME"
17
18function CheckLastExitCode {16function CheckLastExitCode {
19 if (!$?) {17 if (!$?) {
20 exit 118 exit 1
...@@ -31,35 +29,41 @@ if ((git rev-parse --is-shallow-repository) -eq "true") {...@@ -31,35 +29,41 @@ if ((git rev-parse --is-shallow-repository) -eq "true") {
31 git fetch --unshallow # `git describe` won't work on a shallow repo29 git fetch --unshallow # `git describe` won't work on a shallow repo
32}30}
3331
34Write-Output "Building Zig..."32Write-Output "Building from source..."
33Remove-Item -Path 'build-release' -Recurse -Force -ErrorAction Ignore
34New-Item -Path 'build-release' -ItemType Directory
35Set-Location -Path 'build-release'
3536
36& "$ZIGPREFIXPATH\bin\zig.exe" build `37# CMake gives a syntax error when file paths with backward slashes are used.
37 --prefix "$ZIGINSTALLDIR" `38# Here, we use forward slashes only to work around this.
38 --search-prefix "$ZIGPREFIXPATH" `39& cmake .. `
39 --zig-lib-dir "$ZIGLIBDIR" `40 -GNinja `
40 -Denable-stage1 `41 -DCMAKE_INSTALL_PREFIX="stage3-release" `
41 -Dstatic-llvm `42 -DCMAKE_PREFIX_PATH="$($PREFIX_PATH -Replace "\\", "/")" `
42 -Drelease `43 -DCMAKE_BUILD_TYPE=Release `
43 -Duse-zig-libcxx `44 -DCMAKE_C_COMPILER="$($ZIG -Replace "\\", "/");cc;-target;$TARGET;-mcpu=$MCPU" `
44 -Dtarget="$TARGET"45 -DCMAKE_CXX_COMPILER="$($ZIG -Replace "\\", "/");c++;-target;$TARGET;-mcpu=$MCPU" `
46 -DZIG_TARGET_TRIPLE="$TARGET" `
47 -DZIG_TARGET_MCPU="$MCPU" `
48 -DZIG_STATIC=ON
45CheckLastExitCode49CheckLastExitCode
4650
47Write-Output " zig build test docs..."51ninja install
48
49& "$ZIGINSTALLDIR\bin\zig.exe" build test docs `
50 --search-prefix "$ZIGPREFIXPATH" `
51 -Dstatic-llvm `
52 -Dskip-non-native `
53 -Denable-symlinks-windows
54CheckLastExitCode52CheckLastExitCode
5553
56# Produce the experimental std lib documentation.54Write-Output "Main test suite..."
57mkdir "$ZIGINSTALLDIR\doc\std" -force55& "stage3-release\bin\zig.exe" build test docs `
5856 --zig-lib-dir "$ZIG_LIB_DIR" `
59Write-Output "zig test std/std.zig..."57 --search-prefix "$PREFIX_PATH" `
58 -Dstatic-llvm `
59 -Dskip-non-native `
60 -Denable-symlinks-windows
61CheckLastExitCode
6062
61& "$ZIGINSTALLDIR\bin\zig.exe" test "$ZIGLIBDIR\std\std.zig" `63Write-Output "Testing Autodocs..."
62 --zig-lib-dir "$ZIGLIBDIR" `64& "stage3-release\bin\zig.exe" test "..\lib\std\std.zig" `
63 -femit-docs="$ZIGINSTALLDIR\doc\std" `65 --zig-lib-dir "$ZIG_LIB_DIR" `
64 -fno-emit-bin66 -femit-docs `
67 -fno-emit-bin
65CheckLastExitCode68CheckLastExitCode
69