diff options
| author | Loris Cro <kappaloris@gmail.com> | 2022-11-14 22:41:36 +0100 |
|---|---|---|
| committer | Loris Cro <kappaloris@gmail.com> | 2022-11-14 22:41:36 +0100 |
| commit | bbd0775d777324636f7427496b5d9a3137db93d1 (patch) | |
| tree | b638b96ffcf8bfa3c13cbba1d9c1d7a651f35b6b | |
| parent | 7eed028f9a538624b90279aa430f6e136a77f6a2 (diff) | |
| download | zig-bbd0775d777324636f7427496b5d9a3137db93d1.tar.gz zig-bbd0775d777324636f7427496b5d9a3137db93d1.zip | |
ci: init github actions support
| -rw-r--r-- | .github/workflows/ci.yaml | 53 | ||||
| -rw-r--r-- | ci/linux/build.sh | 68 | ||||
| -rwxr-xr-x | ci/macos/build.sh | 65 | ||||
| -rw-r--r-- | ci/windows/build.ps1 | 64 |
4 files changed, 250 insertions, 0 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000000..69ff25041f --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,53 @@ +name: push_ci +run-name: Push CI +on: + push: + branches: + - master +jobs: + # linux: + # runs-on: [self-hosted, Linux, aarch64] + # env: + # ARCH: "aarch64" + # steps: + # - name: Checkout + # uses: actions/checkout@v3 + + # - name: Test + # run: echo "Success!" + # - name: Run Build Script + # run: sh ./ci/linux/build.sh + macos-x86_64: + strategy: + matrix: + version: ["11", "12"] + runs-on: "macos-${{ matrix.version }}" + env: + ARCH: "x86_64" + MACOS_VERSION: ${{ matrix.version }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Run Build Script + run: ./ci/macos/build.sh + macos-aarch64: + runs-on: [self-hosted, macOS, aarch64] + env: + ARCH: "aarch64" + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Run Build Script + run: ./ci/macos/build.sh + # windows: + # runs-on: [self-hosted, Windows, x64] + # env: + # ARCH: "x86_64" + # steps: + # - name: Checkout + # uses: actions/checkout@v3 + + # # - name: Run Build Script + # # run: ./ci/windows/build.ps1 diff --git a/ci/linux/build.sh b/ci/linux/build.sh new file mode 100644 index 0000000000..c68a0763c6 --- /dev/null +++ b/ci/linux/build.sh @@ -0,0 +1,68 @@ +#!/bin/sh + + +# Requires cmake ninja-build + +set -x +set -e + +ZIGDIR="$(pwd)" +TARGET="$ARCH-linux-musl" +MCPU="baseline" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.10.0-dev.4560+828735ac0" +PREFIX="$HOME/$CACHE_BASENAME" +JOBS="-j2" + +rm -rf $PREFIX +cd $HOME + +wget -nv "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz" +tar xf "$CACHE_BASENAME.tar.xz" + +ZIG="$PREFIX/bin/zig" + +export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" +export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" +export PATH=$DEPS_LOCAL/bin:$PATH + +mkdir build-release +cd build-release +cmake .. \ + -DCMAKE_INSTALL_PREFIX="stage3-release" \ + -DCMAKE_PREFIX_PATH="$PREFIX" \ + -DCMAKE_BUILD_TYPE=Release \ + -DZIG_TARGET_TRIPLE="$TARGET" \ + -DZIG_TARGET_MCPU="$MCPU" \ + -DZIG_STATIC=ON \ + -GNinja + +# Now cmake will use zig as the C/C++ compiler. We reset the environment variables +# so that installation and testing do not get affected by them. +unset CC +unset CXX + +ninja install + +stage3-release/bin/zig build test docs \ + -fqemu \ + -fwasmtime \ + -Dstatic-llvm \ + -Dtarget=native-native-musl \ + --search-prefix "$PREFIX" \ + --zig-lib-dir "$(pwd)/../lib" + +# Produce the experimental std lib documentation. +mkdir -p "stage3-release/doc/std" +stage3-release/bin/zig test ../lib/std/std.zig \ + -femit-docs=stage3-release/doc/std \ + -fno-emit-bin \ + --zig-lib-dir "$(pwd)/../lib" + +# cp ../LICENSE $RELEASE_STAGING/ +# cp ../zig-cache/langref.html $RELEASE_STAGING/doc/ + +# # Look for HTML errors. +# tidy --drop-empty-elements no -qe $RELEASE_STAGING/doc/langref.html + +# Explicit exit helps show last command duration. +exit
\ No newline at end of file diff --git a/ci/macos/build.sh b/ci/macos/build.sh new file mode 100755 index 0000000000..feda987c06 --- /dev/null +++ b/ci/macos/build.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +set -x +set -e + +echo "Running on Version:" $MACOS_VERSION + +# Script assumes the presence of the following: +# s3cmd + +ZIGDIR="$(pwd)" +TARGET="$ARCH-macos-none" +MCPU="baseline" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.10.0-dev.4560+828735ac0" +PREFIX="$HOME/$CACHE_BASENAME" +JOBS="-j2" + +rm -rf $PREFIX +cd $HOME + +curl -O "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz" +tar xf "$CACHE_BASENAME.tar.xz" + +ZIG="$PREFIX/bin/zig" +export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" +export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" + +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 + +mkdir build +cd build +cmake .. \ + -DCMAKE_INSTALL_PREFIX="stage3-release" \ + -DCMAKE_PREFIX_PATH="$PREFIX" \ + -DCMAKE_BUILD_TYPE=Release \ + -DZIG_TARGET_TRIPLE="$TARGET" \ + -DZIG_TARGET_MCPU="$MCPU" \ + -DZIG_STATIC=ON + +# Now cmake will use zig as the C/C++ compiler. We reset the environment variables +# so that installation and testing do not get affected by them. +unset CC +unset CXX + +make $JOBS install + +stage3-release/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. +mkdir -p "stage3-release/doc/std" +stage3-release/bin/zig test "$(pwd)/../lib/std/std.zig" \ + --zig-lib-dir "$(pwd)/../lib" \ + -femit-docs="$(pwd)/stage3-release/doc/std" \ + -fno-emit-bin
\ No newline at end of file diff --git a/ci/windows/build.ps1 b/ci/windows/build.ps1 new file mode 100644 index 0000000000..841eb62689 --- /dev/null +++ b/ci/windows/build.ps1 @@ -0,0 +1,64 @@ +$TARGET = "$($Env:ARCH)-windows-gnu" +$ZIG_LLVM_CLANG_LLD_NAME = "zig+llvm+lld+clang-$TARGET-0.11.0-dev.25+499dddb4c" +$ZIG_LLVM_CLANG_LLD_URL = "https://ziglang.org/deps/$ZIG_LLVM_CLANG_LLD_NAME.zip" + +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") + +Set-Variable -Name ZIGLIBDIR -Value "$(Get-Location)\lib" +Set-Variable -Name ZIGINSTALLDIR -Value "$(Get-Location)\stage3-release" +Set-Variable -Name ZIGPREFIXPATH -Value "$(Get-Location)\$ZIG_LLVM_CLANG_LLD_NAME" + +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 Zig..." + +& "$ZIGPREFIXPATH\bin\zig.exe" build ` + --prefix "$ZIGINSTALLDIR" ` + --search-prefix "$ZIGPREFIXPATH" ` + --zig-lib-dir "$ZIGLIBDIR" ` + -Denable-stage1 ` + -Dstatic-llvm ` + -Drelease ` + -Dstrip ` + -Duse-zig-libcxx ` + -Dtarget="$TARGET" +CheckLastExitCode + +Write-Output " zig build test docs..." + +& "$ZIGINSTALLDIR\bin\zig.exe" build test docs ` + --search-prefix "$ZIGPREFIXPATH" ` + -Dstatic-llvm ` + -Dskip-non-native +CheckLastExitCode + +# Produce the experimental std lib documentation. +mkdir "$ZIGINSTALLDIR\doc\std" -force + +Write-Output "zig test std/std.zig..." + +& "$ZIGINSTALLDIR\bin\zig.exe" test "$ZIGLIBDIR\std\std.zig" ` + --zig-lib-dir "$ZIGLIBDIR" ` + -femit-docs="$ZIGINSTALLDIR\doc\std" ` + -fno-emit-bin |
