aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoris Cro <kappaloris@gmail.com>2022-11-14 22:41:36 +0100
committerLoris Cro <kappaloris@gmail.com>2022-11-14 22:41:36 +0100
commitbbd0775d777324636f7427496b5d9a3137db93d1 (patch)
treeb638b96ffcf8bfa3c13cbba1d9c1d7a651f35b6b
parent7eed028f9a538624b90279aa430f6e136a77f6a2 (diff)
downloadzig-bbd0775d777324636f7427496b5d9a3137db93d1.tar.gz
zig-bbd0775d777324636f7427496b5d9a3137db93d1.zip
ci: init github actions support
-rw-r--r--.github/workflows/ci.yaml53
-rw-r--r--ci/linux/build.sh68
-rwxr-xr-xci/macos/build.sh65
-rw-r--r--ci/windows/build.ps164
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