From 7b68b76326a650fad4c20274601968d436920caf Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 16 Jan 2023 20:33:24 -0700 Subject: [PATCH] CI: additionally test debug builds on Windows --- .github/workflows/ci.yaml | 19 +++- ci/x86_64-windows-debug.ps1 | 103 ++++++++++++++++++ ...windows.ps1 => x86_64-windows-release.ps1} | 10 +- 3 files changed, 122 insertions(+), 10 deletions(-) create mode 100644 ci/x86_64-windows-debug.ps1 rename ci/{x86_64-windows.ps1 => x86_64-windows-release.ps1} (89%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a8d54eb1b4..3b47c60dfd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,9 +2,9 @@ name: ci on: pull_request: push: - branches: + branches: - master -concurrency: +concurrency: # Cancels pending runs when a PR gets updated. group: ${{ github.head_ref || github.run_id }}-${{ github.actor }} cancel-in-progress: true @@ -55,15 +55,24 @@ jobs: uses: actions/checkout@v3 - name: Build and Test run: ci/aarch64-macos.sh - x86_64-windows: + x86_64-windows-debug: runs-on: windows-latest - env: + env: ARCH: "x86_64" steps: - name: Checkout uses: actions/checkout@v3 - name: Build and Test - run: ci/x86_64-windows.ps1 + run: ci/x86_64-windows-debug.ps1 + x86_64-windows-release: + runs-on: windows-latest + env: + ARCH: "x86_64" + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build and Test + run: ci/x86_64-windows-release.ps1 aarch64-windows: runs-on: [self-hosted, Windows, aarch64] env: diff --git a/ci/x86_64-windows-debug.ps1 b/ci/x86_64-windows-debug.ps1 new file mode 100644 index 0000000000..b7cde7d4f9 --- /dev/null +++ b/ci/x86_64-windows-debug.ps1 @@ -0,0 +1,103 @@ +$TARGET = "$($Env:ARCH)-windows-gnu" +$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.448+e6e459e9e" +$MCPU = "baseline" +$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip" +$PREFIX_PATH = "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME" +$ZIG = "$PREFIX_PATH\bin\zig.exe" +$ZIG_LIB_DIR = "$(Get-Location)\lib" + +Write-Output "Downloading $ZIG_LLVM_CLANG_LLD_URL" +Invoke-WebRequest -Uri "$ZIG_LLVM_CLANG_LLD_URL" -OutFile "$ZIG_LLVM_CLANG_LLD_NAME.zip" + +Write-Output "Extracting..." +Add-Type -AssemblyName System.IO.Compression.FileSystem ; +[System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/$ZIG_LLVM_CLANG_LLD_NAME.zip", "$PWD") + +function CheckLastExitCode { + if (!$?) { + exit 1 + } + return 0 +} + +# Make the `zig version` number consistent. +# This will affect the `zig build` command below which uses `git describe`. +git config core.abbrev 9 +git fetch --tags + +if ((git rev-parse --is-shallow-repository) -eq "true") { + git fetch --unshallow # `git describe` won't work on a shallow repo +} + +Write-Output "Building from source..." +Remove-Item -Path 'build-debug' -Recurse -Force -ErrorAction Ignore +New-Item -Path 'build-debug' -ItemType Directory +Set-Location -Path 'build-debug' + +# CMake gives a syntax error when file paths with backward slashes are used. +# Here, we use forward slashes only to work around this. +& cmake .. ` + -GNinja ` + -DCMAKE_INSTALL_PREFIX="stage3-debug" ` + -DCMAKE_PREFIX_PATH="$($PREFIX_PATH -Replace "\\", "/")" ` + -DCMAKE_BUILD_TYPE=Debug ` + -DCMAKE_C_COMPILER="$($ZIG -Replace "\\", "/");cc;-target;$TARGET;-mcpu=$MCPU" ` + -DCMAKE_CXX_COMPILER="$($ZIG -Replace "\\", "/");c++;-target;$TARGET;-mcpu=$MCPU" ` + -DZIG_TARGET_TRIPLE="$TARGET" ` + -DZIG_TARGET_MCPU="$MCPU" ` + -DZIG_STATIC=ON +CheckLastExitCode + +ninja install +CheckLastExitCode + +Write-Output "Main test suite..." +& "stage3-debug\bin\zig.exe" build test docs ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + --search-prefix "$PREFIX_PATH" ` + -Dstatic-llvm ` + -Dskip-non-native ` + -Denable-symlinks-windows +CheckLastExitCode + +Write-Output "Testing Autodocs..." +& "stage3-debug\bin\zig.exe" test "..\lib\std\std.zig" ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -femit-docs ` + -fno-emit-bin +CheckLastExitCode + +Write-Output "Build behavior tests using the C backend..." +& "stage3-debug\bin\zig.exe" test ` + ..\test\behavior.zig ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -I..\test ` + -I..\lib ` + -ofmt=c ` + -femit-bin="test_behavior.c" +CheckLastExitCode + +& "stage3-debug\bin\zig.exe" build-obj ` + ..\lib\compiler_rt.zig ` + --zig-lib-dir "$ZIG_LIB_DIR" ` + -ofmt=c ` + -OReleaseSmall ` + --name compiler_rt ` + -femit-bin="compiler_rt.c" ` + --pkg-begin build_options config.zig --pkg-end +CheckLastExitCode + +Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" +CheckLastExitCode + +Enter-VsDevShell -VsInstallPath "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" ` + -DevCmdArguments '-arch=x64 -no_logo' ` + -StartInPath $(Get-Location) +CheckLastExitCode + +Write-Output "Build and run behavior tests with msvc..." +& cl.exe -I..\lib test_behavior.c compiler_rt.c /W3 /Z7 -link -nologo -debug -subsystem:console -entry:wWinMainCRTStartup kernel32.lib ntdll.lib vcruntime.lib libucrt.lib +CheckLastExitCode + +& .\test_behavior.exe +CheckLastExitCode diff --git a/ci/x86_64-windows.ps1 b/ci/x86_64-windows-release.ps1 similarity index 89% rename from ci/x86_64-windows.ps1 rename to ci/x86_64-windows-release.ps1 index e66c6b8d19..f2b3d84a26 100644 --- a/ci/x86_64-windows.ps1 +++ b/ci/x86_64-windows-release.ps1 @@ -67,14 +67,14 @@ Write-Output "Testing Autodocs..." -fno-emit-bin CheckLastExitCode -Write-Output "Build behaviour tests using the C backend..." +Write-Output "Build behavior tests using the C backend..." & "stage3-release\bin\zig.exe" test ` ..\test\behavior.zig ` --zig-lib-dir "$ZIG_LIB_DIR" ` -I..\test ` -I..\lib ` -ofmt=c ` - -femit-bin="test_behaviour.c" + -femit-bin="test_behavior.c" CheckLastExitCode & "stage3-release\bin\zig.exe" build-obj ` @@ -95,9 +95,9 @@ Enter-VsDevShell -VsInstallPath "C:\Program Files\Microsoft Visual Studio\2022\E -StartInPath $(Get-Location) CheckLastExitCode -Write-Output "Build and run behaviour tests with msvc..." -& cl.exe -I..\lib test_behaviour.c compiler_rt.c /W3 /Z7 -link -nologo -debug -subsystem:console -entry:wWinMainCRTStartup kernel32.lib ntdll.lib vcruntime.lib libucrt.lib +Write-Output "Build and run behavior tests with msvc..." +& cl.exe -I..\lib test_behavior.c compiler_rt.c /W3 /Z7 -link -nologo -debug -subsystem:console -entry:wWinMainCRTStartup kernel32.lib ntdll.lib vcruntime.lib libucrt.lib CheckLastExitCode -& .\test_behaviour.exe +& .\test_behavior.exe CheckLastExitCode