diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 45228b8daa..1b4f119ec0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,55 +1,37 @@ -name: push_ci -run-name: Push CI -on: - push: - branches: - - master +name: ci +on: [push, pull_request] jobs: - aarch64-linux: - runs-on: [self-hosted, Linux, aarch64] - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Build and Test - run: sh ./ci/linux/build-aarch64.sh x86_64-linux-debug: - runs-on: ubuntu-latest + outputs: + version: ${{ steps.version.outputs.version }} + runs-on: [self-hosted, Linux, x86_64] steps: - name: Checkout uses: actions/checkout@v3 - name: Build and Test run: sh ./ci/linux/build-x86_64-debug.sh + # The following step is required by the build-tarballs job. + # If this job is being deleted / commented out, make sure + # to have another job provide this information. + - name: Get Version + id: version + run: echo "version=$(stage3/bin/zig version)" >> $GITHUB_OUTPUT x86_64-linux-release: - runs-on: ubuntu-latest + runs-on: [self-hosted, Linux, x86_64] steps: - name: Checkout uses: actions/checkout@v3 - name: Build and Test run: sh ./ci/linux/build-x86_64-release.sh x86_64-macos: - strategy: - matrix: - version: ["11", "12"] - runs-on: "macos-${{ matrix.version }}" + runs-on: "macos-11" env: ARCH: "x86_64" - MACOS_VERSION: ${{ matrix.version }} steps: - name: Checkout uses: actions/checkout@v3 - - - name: Run Build Script + - name: Build and Test run: ./ci/macos/build-x86_64.sh - aarch64-macos: - runs-on: [self-hosted, macOS, aarch64] - env: - ARCH: "aarch64" - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Run Build Script - run: ./ci/macos/build-aarch64.sh x86_64-windows: runs-on: windows-latest env: @@ -57,14 +39,21 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - - - name: Run Build Script + - name: Build and Test run: ./ci/windows/build.ps1 - build-tarballs: - needs: [aarch64-linux, x86_64-macos, aarch64-macos, x86_64-windows, x86_64-linux-debug, x86_64-linux-release] + aarch64-linux: runs-on: [self-hosted, Linux, aarch64] steps: - name: Checkout uses: actions/checkout@v3 - - name: Build Tarballs - run: sh ./ci/linux/build-tarballs.sh + - name: Build and Test + run: sh ./ci/linux/build-aarch64.sh + aarch64-macos: + runs-on: [self-hosted, macOS, aarch64] + env: + ARCH: "aarch64" + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build and Test + run: ./ci/macos/build-aarch64.sh diff --git a/ci/linux/build-aarch64.sh b/ci/linux/build-aarch64.sh index 3073dbee51..dacc84f72a 100644 --- a/ci/linux/build-aarch64.sh +++ b/ci/linux/build-aarch64.sh @@ -12,7 +12,7 @@ CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.256+271cc52a1" PREFIX="$HOME/deps/$CACHE_BASENAME" ZIG="$PREFIX/bin/zig" -export PATH="$HOME/deps/wasmtime-v2.0.2-aarch64-linux:$PATH" +export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$PATH" # Make the `zig version` number consistent. # This will affect the cmake command below. @@ -42,6 +42,14 @@ unset CXX ninja install +echo "Looking for non-conforming code formatting..." +stage3-release/bin/zig fmt --check .. \ + --exclude ../test/cases/ \ + --exclude ../build-release + +# simultaneously test building self-hosted without LLVM and with 32-bit arm +stage3-release/bin/zig build -Dtarget=arm-linux-musleabihf + # TODO: add -fqemu back to this line stage3-release/bin/zig build test docs \ @@ -51,15 +59,12 @@ stage3-release/bin/zig build test docs \ --search-prefix "$PREFIX" \ --zig-lib-dir "$(pwd)/../lib" +# Look for HTML errors. +tidy --drop-empty-elements no -qe zig-cache/langref.html + # 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 diff --git a/ci/linux/build-tarballs.sh b/ci/linux/build-tarballs.sh index a1b601fe15..4a0d6670fc 100644 --- a/ci/linux/build-tarballs.sh +++ b/ci/linux/build-tarballs.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Requires cmake ninja-build +apt-get install ninja-build set -x set -e @@ -13,9 +13,13 @@ ARCH="$(uname -m)" TARGET="$ARCH-linux-musl" MCPU="baseline" CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.256+271cc52a1" -PREFIX="$HOME/deps/$CACHE_BASENAME" +PREFIX="$WORKDIR/deps/$CACHE_BASENAME" ZIG="$PREFIX/bin/zig" +OLD_ZIG_VERSION="0.11.0-dev.256+271cc52a1" +wget "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz" +tar xf "$CACHE_BASENAME.tar.xz" + # Make the `zig version` number consistent. # This will affect the cmake command below. cd "$ZIGDIR" @@ -26,7 +30,6 @@ git fetch --tags export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" -rm -rf "$REL_SRC_BUILD" mkdir "$REL_SRC_BUILD" cd "$REL_SRC_BUILD" cmake .. \ @@ -46,30 +49,30 @@ unset CXX ninja install ZIG_VERSION="$(stage3-release/bin/zig version)" + +git clone https://github.com/ziglang/zig-bootstrap BOOTSTRAP_SRC="$WORKDIR/zig-bootstrap" TARBALLS_DIR="$WORKDIR/tarballs" cd "$BOOTSTRAP_SRC" -git pull rm -rf zig cp -r "$ZIGDIR" ./ sed -i "/^ZIG_VERSION=\".*\"\$/c\\ZIG_VERSION=\"$ZIG_VERSION\"" build -# Unfortunately Debian's cmake (3.14.4) is too old for zig-bootstrap. -PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build aarch64-linux-musl baseline -PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build x86_64-linux-musl baseline -#PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build x86-linux-musl baseline -#PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build riscv64-linux-musl baseline -#PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build arm-linux-musleabihf generic+v7a -PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build x86_64-macos-none baseline -PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build aarch64-macos-none apple_a14 -PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build x86_64-windows-gnu baseline -#PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build x86-windows-gnu baseline -#PATH="$HOME/local/bin:$PATH" CMAKE_GENERATOR=Ninja ./build aarch64-windows-gnu baseline +# NOTE: Debian's cmake (3.14.4) is too old for zig-bootstrap. +CMAKE_GENERATOR=Ninja ./build x86_64-linux-musl baseline +CMAKE_GENERATOR=Ninja ./build x86_64-macos-none baseline +CMAKE_GENERATOR=Ninja ./build x86_64-windows-gnu baseline +CMAKE_GENERATOR=Ninja ./build aarch64-linux-musl baseline +CMAKE_GENERATOR=Ninja ./build aarch64-macos-none apple_a14 +# CMAKE_GENERATOR=Ninja ./build aarch64-windows-gnu baseline +# CMAKE_GENERATOR=Ninja ./build x86-linux-musl baseline +# CMAKE_GENERATOR=Ninja ./build x86-windows-gnu baseline +# CMAKE_GENERATOR=Ninja ./build arm-linux-musleabihf generic+v7a +# CMAKE_GENERATOR=Ninja ./build riscv64-linux-musl baseline ZIG="$BOOTSTRAP_SRC/out/host/bin/zig" -rm -rf "$TARBALLS_DIR" mkdir "$TARBALLS_DIR" cd "$TARBALLS_DIR" @@ -92,158 +95,159 @@ tar cfJ "zig-$ZIG_VERSION.tar.xz" "zig-$ZIG_VERSION" cd "$BOOTSTRAP_SRC" "$ZIG" build --build-file zig/build.zig docs LANGREF_HTML="$BOOTSTRAP_SRC/zig/zig-cache/langref.html" + # Look for HTML errors. tidy --drop-empty-elements no -qe "$LANGREF_HTML" cd "$TARBALLS_DIR" -cp -r $BOOTSTRAP_SRC/out/zig-aarch64-linux-musl-baseline zig-linux-aarch64-$ZIG_VERSION/ -cp -r $BOOTSTRAP_SRC/out/zig-aarch64-macos-none-apple_a14 zig-macos-aarch64-$ZIG_VERSION/ -#cp -r $BOOTSTRAP_SRC/out/zig-aarch64-windows-gnu-baseline zig-windows-aarch64-$ZIG_VERSION/ -#cp -r $BOOTSTRAP_SRC/out/zig-arm-linux-musleabihf-generic+v7a zig-linux-armv7a-$ZIG_VERSION/ -#cp -r $BOOTSTRAP_SRC/out/zig-x86-linux-musl-baseline zig-linux-x86-$ZIG_VERSION/ -#cp -r $BOOTSTRAP_SRC/out/zig-x86-windows-gnu-baseline zig-windows-x86-$ZIG_VERSION/ -#cp -r $BOOTSTRAP_SRC/out/zig-riscv64-linux-musl-baseline zig-linux-riscv64-$ZIG_VERSION/ -#cp -r $BOOTSTRAP_SRC/out/zig-x86_64-freebsd-gnu-baseline zig-freebsd-x86_64-$ZIG_VERSION/ cp -r $BOOTSTRAP_SRC/out/zig-x86_64-linux-musl-baseline zig-linux-x86_64-$ZIG_VERSION/ cp -r $BOOTSTRAP_SRC/out/zig-x86_64-macos-none-baseline zig-macos-x86_64-$ZIG_VERSION/ cp -r $BOOTSTRAP_SRC/out/zig-x86_64-windows-gnu-baseline zig-windows-x86_64-$ZIG_VERSION/ +#cp -r $BOOTSTRAP_SRC/out/zig-x86_64-freebsd-gnu-baseline zig-freebsd-x86_64-$ZIG_VERSION/ +cp -r $BOOTSTRAP_SRC/out/zig-aarch64-linux-musl-baseline zig-linux-aarch64-$ZIG_VERSION/ +cp -r $BOOTSTRAP_SRC/out/zig-aarch64-macos-none-apple_a14 zig-macos-aarch64-$ZIG_VERSION/ +#cp -r $BOOTSTRAP_SRC/out/zig-aarch64-windows-gnu-baseline zig-windows-aarch64-$ZIG_VERSION/ +#cp -r $BOOTSTRAP_SRC/out/zig-x86-linux-musl-baseline zig-linux-x86-$ZIG_VERSION/ +#cp -r $BOOTSTRAP_SRC/out/zig-x86-windows-gnu-baseline zig-windows-x86-$ZIG_VERSION/ +#cp -r $BOOTSTRAP_SRC/out/zig-arm-linux-musleabihf-generic+v7a zig-linux-armv7a-$ZIG_VERSION/ +#cp -r $BOOTSTRAP_SRC/out/zig-riscv64-linux-musl-baseline zig-linux-riscv64-$ZIG_VERSION/ -mv zig-linux-aarch64-$ZIG_VERSION/{bin/,}zig -#mv zig-linux-armv7a-$ZIG_VERSION/{bin/,}zig -#mv zig-linux-x86-$ZIG_VERSION/{bin/,}zig -#mv zig-linux-riscv64-$ZIG_VERSION/{bin/,}zig mv zig-linux-x86_64-$ZIG_VERSION/{bin/,}zig -#mv zig-windows-x86-$ZIG_VERSION/{bin/,}zig.exe -mv zig-windows-x86_64-$ZIG_VERSION/{bin/,}zig.exe -#mv zig-windows-aarch64-$ZIG_VERSION/{bin/,}zig.exe -mv zig-macos-aarch64-$ZIG_VERSION/{bin/,}zig mv zig-macos-x86_64-$ZIG_VERSION/{bin/,}zig +mv zig-windows-x86_64-$ZIG_VERSION/{bin/,}zig.exe #mv zig-freebsd-x86_64-$ZIG_VERSION/{bin/,}zig +mv zig-linux-aarch64-$ZIG_VERSION/{bin/,}zig +mv zig-macos-aarch64-$ZIG_VERSION/{bin/,}zig +#mv zig-windows-aarch64-$ZIG_VERSION/{bin/,}zig.exe +#mv zig-linux-x86-$ZIG_VERSION/{bin/,}zig +#mv zig-windows-x86-$ZIG_VERSION/{bin/,}zig.exe +#mv zig-linux-armv7a-$ZIG_VERSION/{bin/,}zig +#mv zig-linux-riscv64-$ZIG_VERSION/{bin/,}zig -mv zig-linux-aarch64-$ZIG_VERSION/{lib,lib2} -#mv zig-linux-armv7a-$ZIG_VERSION/{lib,lib2} -#mv zig-linux-x86-$ZIG_VERSION/{lib,lib2} -#mv zig-linux-riscv64-$ZIG_VERSION/{lib,lib2} mv zig-linux-x86_64-$ZIG_VERSION/{lib,lib2} -#mv zig-windows-x86-$ZIG_VERSION/{lib,lib2} -mv zig-windows-x86_64-$ZIG_VERSION/{lib,lib2} -#mv zig-windows-aarch64-$ZIG_VERSION/{lib,lib2} -mv zig-macos-aarch64-$ZIG_VERSION/{lib,lib2} mv zig-macos-x86_64-$ZIG_VERSION/{lib,lib2} +mv zig-windows-x86_64-$ZIG_VERSION/{lib,lib2} #mv zig-freebsd-x86_64-$ZIG_VERSION/{lib,lib2} +mv zig-linux-aarch64-$ZIG_VERSION/{lib,lib2} +mv zig-macos-aarch64-$ZIG_VERSION/{lib,lib2} +#mv zig-windows-aarch64-$ZIG_VERSION/{lib,lib2} +#mv zig-linux-x86-$ZIG_VERSION/{lib,lib2} +#mv zig-windows-x86-$ZIG_VERSION/{lib,lib2} +#mv zig-linux-armv7a-$ZIG_VERSION/{lib,lib2} +#mv zig-linux-riscv64-$ZIG_VERSION/{lib,lib2} -mv zig-linux-aarch64-$ZIG_VERSION/{lib2/zig,lib} -#mv zig-linux-armv7a-$ZIG_VERSION/{lib2/zig,lib} -#mv zig-linux-x86-$ZIG_VERSION/{lib2/zig,lib} -#mv zig-linux-riscv64-$ZIG_VERSION/{lib2/zig,lib} mv zig-linux-x86_64-$ZIG_VERSION/{lib2/zig,lib} -#mv zig-windows-x86-$ZIG_VERSION/{lib2/zig,lib} -mv zig-windows-x86_64-$ZIG_VERSION/{lib2/zig,lib} -#mv zig-windows-aarch64-$ZIG_VERSION/{lib2/zig,lib} -mv zig-macos-aarch64-$ZIG_VERSION/{lib2/zig,lib} mv zig-macos-x86_64-$ZIG_VERSION/{lib2/zig,lib} +mv zig-windows-x86_64-$ZIG_VERSION/{lib2/zig,lib} #mv zig-freebsd-x86_64-$ZIG_VERSION/{lib2/zig,lib} +mv zig-linux-aarch64-$ZIG_VERSION/{lib2/zig,lib} +mv zig-macos-aarch64-$ZIG_VERSION/{lib2/zig,lib} +#mv zig-windows-aarch64-$ZIG_VERSION/{lib2/zig,lib} +#mv zig-linux-x86-$ZIG_VERSION/{lib2/zig,lib} +#mv zig-windows-x86-$ZIG_VERSION/{lib2/zig,lib} +#mv zig-linux-armv7a-$ZIG_VERSION/{lib2/zig,lib} +#mv zig-linux-riscv64-$ZIG_VERSION/{lib2/zig,lib} -rmdir zig-linux-aarch64-$ZIG_VERSION/{bin,lib2} -#rmdir zig-linux-armv7a-$ZIG_VERSION/{bin,lib2} -#rmdir zig-linux-x86-$ZIG_VERSION/{bin,lib2} -#rmdir zig-linux-riscv64-$ZIG_VERSION/{bin,lib2} rmdir zig-linux-x86_64-$ZIG_VERSION/{bin,lib2} -#rmdir zig-windows-x86-$ZIG_VERSION/{bin,lib2} -rmdir zig-windows-x86_64-$ZIG_VERSION/{bin,lib2} -#rmdir zig-windows-aarch64-$ZIG_VERSION/{bin,lib2} -rmdir zig-macos-aarch64-$ZIG_VERSION/{bin,lib2} rmdir zig-macos-x86_64-$ZIG_VERSION/{bin,lib2} +rmdir zig-windows-x86_64-$ZIG_VERSION/{bin,lib2} #rmdir zig-freebsd-x86_64-$ZIG_VERSION/{bin,lib2} +rmdir zig-linux-aarch64-$ZIG_VERSION/{bin,lib2} +rmdir zig-macos-aarch64-$ZIG_VERSION/{bin,lib2} +#rmdir zig-windows-aarch64-$ZIG_VERSION/{bin,lib2} +#rmdir zig-linux-x86-$ZIG_VERSION/{bin,lib2} +#rmdir zig-windows-x86-$ZIG_VERSION/{bin,lib2} +#rmdir zig-linux-armv7a-$ZIG_VERSION/{bin,lib2} +#rmdir zig-linux-riscv64-$ZIG_VERSION/{bin,lib2} -cp $REL_SRC_BUILD/../LICENSE zig-linux-aarch64-$ZIG_VERSION/ -#cp $REL_SRC_BUILD/../LICENSE zig-linux-armv7a-$ZIG_VERSION/ -#cp $REL_SRC_BUILD/../LICENSE zig-linux-x86-$ZIG_VERSION/ -#cp $REL_SRC_BUILD/../LICENSE zig-linux-riscv64-$ZIG_VERSION/ cp $REL_SRC_BUILD/../LICENSE zig-linux-x86_64-$ZIG_VERSION/ -#cp $REL_SRC_BUILD/../LICENSE zig-windows-x86-$ZIG_VERSION/ -cp $REL_SRC_BUILD/../LICENSE zig-windows-x86_64-$ZIG_VERSION/ -#cp $REL_SRC_BUILD/../LICENSE zig-windows-aarch64-$ZIG_VERSION/ -cp $REL_SRC_BUILD/../LICENSE zig-macos-aarch64-$ZIG_VERSION/ cp $REL_SRC_BUILD/../LICENSE zig-macos-x86_64-$ZIG_VERSION/ +cp $REL_SRC_BUILD/../LICENSE zig-windows-x86_64-$ZIG_VERSION/ #cp $REL_SRC_BUILD/../LICENSE zig-freebsd-x86_64-$ZIG_VERSION/ +cp $REL_SRC_BUILD/../LICENSE zig-linux-aarch64-$ZIG_VERSION/ +cp $REL_SRC_BUILD/../LICENSE zig-macos-aarch64-$ZIG_VERSION/ +#cp $REL_SRC_BUILD/../LICENSE zig-windows-aarch64-$ZIG_VERSION/ +#cp $REL_SRC_BUILD/../LICENSE zig-linux-x86-$ZIG_VERSION/ +#cp $REL_SRC_BUILD/../LICENSE zig-windows-x86-$ZIG_VERSION/ +#cp $REL_SRC_BUILD/../LICENSE zig-linux-armv7a-$ZIG_VERSION/ +#cp $REL_SRC_BUILD/../LICENSE zig-linux-riscv64-$ZIG_VERSION/ -mkdir zig-linux-aarch64-$ZIG_VERSION/doc/ -#mkdir zig-linux-armv7a-$ZIG_VERSION/doc/ -#mkdir zig-linux-x86-$ZIG_VERSION/doc/ -#mkdir zig-linux-riscv64-$ZIG_VERSION/doc/ mkdir zig-linux-x86_64-$ZIG_VERSION/doc/ -#mkdir zig-windows-x86-$ZIG_VERSION/doc/ -mkdir zig-windows-x86_64-$ZIG_VERSION/doc/ -#mkdir zig-windows-aarch64-$ZIG_VERSION/doc/ -mkdir zig-macos-aarch64-$ZIG_VERSION/doc/ mkdir zig-macos-x86_64-$ZIG_VERSION/doc/ +mkdir zig-windows-x86_64-$ZIG_VERSION/doc/ #mkdir zig-freebsd-x86_64-$ZIG_VERSION/doc/ +mkdir zig-linux-aarch64-$ZIG_VERSION/doc/ +mkdir zig-macos-aarch64-$ZIG_VERSION/doc/ +#mkdir zig-windows-aarch64-$ZIG_VERSION/doc/ +#mkdir zig-linux-x86-$ZIG_VERSION/doc/ +#mkdir zig-windows-x86-$ZIG_VERSION/doc/ +#mkdir zig-linux-armv7a-$ZIG_VERSION/doc/ +#mkdir zig-linux-riscv64-$ZIG_VERSION/doc/ cd $REL_SRC_BUILD -stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-aarch64 -target aarch64-linux-musl -fno-emit-bin --zig-lib-dir ../lib -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-armv7a -target arm-linux-musl -mcpu=generic+v7a -fno-emit-bin --zig-lib-dir ../lib -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86 -target x86-linux-musl -fno-emit-bin --zig-lib-dir ../lib -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-riscv64 -target riscv64-linux-musl -fno-emit-bin --zig-lib-dir ../lib stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86_64 -target x86_64-linux-musl -fno-emit-bin --zig-lib-dir ../lib -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86 -target x86-windows-gnu -fno-emit-bin --zig-lib-dir ../lib stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86_64 -target x86_64-windows-gnu -fno-emit-bin --zig-lib-dir ../lib -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-aarch64 -target aarch64-windows-gnu -fno-emit-bin --zig-lib-dir ../lib stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-x86_64 -target x86_64-macos -fno-emit-bin --zig-lib-dir ../lib -stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-aarch64 -target aarch64-macos -fno-emit-bin --zig-lib-dir ../lib #stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-freebsd-x86_64 -target x86_64-freebsd -fno-emit-bin --zig-lib-dir ../lib +stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-aarch64 -target aarch64-linux-musl -fno-emit-bin --zig-lib-dir ../lib +stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-aarch64 -target aarch64-macos -fno-emit-bin --zig-lib-dir ../lib +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-aarch64 -target aarch64-windows-gnu -fno-emit-bin --zig-lib-dir ../lib +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86 -target x86-linux-musl -fno-emit-bin --zig-lib-dir ../lib +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86 -target x86-windows-gnu -fno-emit-bin --zig-lib-dir ../lib +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-armv7a -target arm-linux-musl -mcpu=generic+v7a -fno-emit-bin --zig-lib-dir ../lib +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-riscv64 -target riscv64-linux-musl -fno-emit-bin --zig-lib-dir ../lib cd "$TARBALLS_DIR" -cp -r $REL_SRC_BUILD/doc-linux-aarch64 zig-linux-aarch64-$ZIG_VERSION/doc/std -#cp -r $REL_SRC_BUILD/doc-linux-armv7a zig-linux-armv7a-$ZIG_VERSION/doc/std -#cp -r $REL_SRC_BUILD/doc-linux-x86 zig-linux-x86-$ZIG_VERSION/doc/std -#cp -r $REL_SRC_BUILD/doc-linux-riscv64 zig-linux-riscv64-$ZIG_VERSION/doc/std cp -r $REL_SRC_BUILD/doc-linux-x86_64 zig-linux-x86_64-$ZIG_VERSION/doc/std -#cp -r $REL_SRC_BUILD/doc-windows-x86 zig-windows-x86-$ZIG_VERSION/doc/std -cp -r $REL_SRC_BUILD/doc-windows-x86_64 zig-windows-x86_64-$ZIG_VERSION/doc/std -#cp -r $REL_SRC_BUILD/doc-windows-aarch64 zig-windows-aarch64-$ZIG_VERSION/doc/std -cp -r $REL_SRC_BUILD/doc-macos-aarch64 zig-macos-aarch64-$ZIG_VERSION/doc/std cp -r $REL_SRC_BUILD/doc-macos-x86_64 zig-macos-x86_64-$ZIG_VERSION/doc/std +cp -r $REL_SRC_BUILD/doc-windows-x86_64 zig-windows-x86_64-$ZIG_VERSION/doc/std #cp -r $REL_SRC_BUILD/doc-freebsd-x86_64 zig-freebsd-x86_64-$ZIG_VERSION/doc/std +cp -r $REL_SRC_BUILD/doc-linux-aarch64 zig-linux-aarch64-$ZIG_VERSION/doc/std +cp -r $REL_SRC_BUILD/doc-macos-aarch64 zig-macos-aarch64-$ZIG_VERSION/doc/std +#cp -r $REL_SRC_BUILD/doc-windows-aarch64 zig-windows-aarch64-$ZIG_VERSION/doc/std +#cp -r $REL_SRC_BUILD/doc-linux-x86 zig-linux-x86-$ZIG_VERSION/doc/std +#cp -r $REL_SRC_BUILD/doc-windows-x86 zig-windows-x86-$ZIG_VERSION/doc/std +#cp -r $REL_SRC_BUILD/doc-linux-armv7a zig-linux-armv7a-$ZIG_VERSION/doc/std +#cp -r $REL_SRC_BUILD/doc-linux-riscv64 zig-linux-riscv64-$ZIG_VERSION/doc/std -cp $LANGREF_HTML zig-linux-aarch64-$ZIG_VERSION/doc/ -#cp $LANGREF_HTML zig-linux-armv7a-$ZIG_VERSION/doc/ -#cp $LANGREF_HTML zig-linux-x86-$ZIG_VERSION/doc/ -#cp $LANGREF_HTML zig-linux-riscv64-$ZIG_VERSION/doc/ cp $LANGREF_HTML zig-linux-x86_64-$ZIG_VERSION/doc/ -#cp $LANGREF_HTML zig-windows-x86-$ZIG_VERSION/doc/ -cp $LANGREF_HTML zig-windows-x86_64-$ZIG_VERSION/doc/ -#cp $LANGREF_HTML zig-windows-aarch64-$ZIG_VERSION/doc/ -cp $LANGREF_HTML zig-macos-aarch64-$ZIG_VERSION/doc/ cp $LANGREF_HTML zig-macos-x86_64-$ZIG_VERSION/doc/ +cp $LANGREF_HTML zig-windows-x86_64-$ZIG_VERSION/doc/ #cp $LANGREF_HTML zig-freebsd-x86_64-$ZIG_VERSION/doc/ +cp $LANGREF_HTML zig-linux-aarch64-$ZIG_VERSION/doc/ +cp $LANGREF_HTML zig-macos-aarch64-$ZIG_VERSION/doc/ +#cp $LANGREF_HTML zig-windows-aarch64-$ZIG_VERSION/doc/ +#cp $LANGREF_HTML zig-linux-x86-$ZIG_VERSION/doc/ +#cp $LANGREF_HTML zig-windows-x86-$ZIG_VERSION/doc/ +#cp $LANGREF_HTML zig-linux-armv7a-$ZIG_VERSION/doc/ +#cp $LANGREF_HTML zig-linux-riscv64-$ZIG_VERSION/doc/ -tar cJf zig-linux-aarch64-$ZIG_VERSION.tar.xz zig-linux-aarch64-$ZIG_VERSION/ -#tar cJf zig-linux-armv7a-$ZIG_VERSION.tar.xz zig-linux-armv7a-$ZIG_VERSION/ -#tar cJf zig-linux-x86-$ZIG_VERSION.tar.xz zig-linux-x86-$ZIG_VERSION/ -#tar cJf zig-linux-riscv64-$ZIG_VERSION.tar.xz zig-linux-riscv64-$ZIG_VERSION/ tar cJf zig-linux-x86_64-$ZIG_VERSION.tar.xz zig-linux-x86_64-$ZIG_VERSION/ -#7z a zig-windows-x86-$ZIG_VERSION.zip zig-windows-x86-$ZIG_VERSION/ -7z a zig-windows-x86_64-$ZIG_VERSION.zip zig-windows-x86_64-$ZIG_VERSION/ -#7z a zig-windows-aarch64-$ZIG_VERSION.zip zig-windows-aarch64-$ZIG_VERSION/ -tar cJf zig-macos-aarch64-$ZIG_VERSION.tar.xz zig-macos-aarch64-$ZIG_VERSION/ tar cJf zig-macos-x86_64-$ZIG_VERSION.tar.xz zig-macos-x86_64-$ZIG_VERSION/ +7z a zig-windows-x86_64-$ZIG_VERSION.zip zig-windows-x86_64-$ZIG_VERSION/ #tar cJf zig-freebsd-x86_64-$ZIG_VERSION.tar.xz zig-freebsd-x86_64-$ZIG_VERSION/ +tar cJf zig-linux-aarch64-$ZIG_VERSION.tar.xz zig-linux-aarch64-$ZIG_VERSION/ +tar cJf zig-macos-aarch64-$ZIG_VERSION.tar.xz zig-macos-aarch64-$ZIG_VERSION/ +#7z a zig-windows-aarch64-$ZIG_VERSION.zip zig-windows-aarch64-$ZIG_VERSION/ +#tar cJf zig-linux-x86-$ZIG_VERSION.tar.xz zig-linux-x86-$ZIG_VERSION/ +#7z a zig-windows-x86-$ZIG_VERSION.zip zig-windows-x86-$ZIG_VERSION/ +#tar cJf zig-linux-armv7a-$ZIG_VERSION.tar.xz zig-linux-armv7a-$ZIG_VERSION/ +#tar cJf zig-linux-riscv64-$ZIG_VERSION.tar.xz zig-linux-riscv64-$ZIG_VERSION/ s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ #s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-bootstrap-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ -s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-aarch64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ -#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-armv7a-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ -#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-x86-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ -#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-riscv64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-x86_64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ -#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-windows-x86-$ZIG_VERSION.zip s3://ziglang.org/builds/$ZIG_VERSION/ -s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-windows-x86_64-$ZIG_VERSION.zip s3://ziglang.org/builds/$ZIG_VERSION/ -#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-windows-aarch64-$ZIG_VERSION.zip s3://ziglang.org/builds/$ZIG_VERSION/ -s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-macos-aarch64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-macos-x86_64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ #s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-freebsd-x86_64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ +s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-windows-x86_64-$ZIG_VERSION.zip s3://ziglang.org/builds/$ZIG_VERSION/ +s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-aarch64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ +s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-macos-aarch64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ +#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-windows-aarch64-$ZIG_VERSION.zip s3://ziglang.org/builds/$ZIG_VERSION/ +#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-x86-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ +#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-windows-x86-$ZIG_VERSION.zip s3://ziglang.org/builds/$ZIG_VERSION/ +#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-armv7a-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ +#s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" zig-linux-riscv64-$ZIG_VERSION.tar.xz s3://ziglang.org/builds/$ZIG_VERSION/ export SRC_TARBALL="zig-$ZIG_VERSION.tar.xz" export SRC_SHASUM=$(sha256sum "zig-$ZIG_VERSION.tar.xz" | cut '-d ' -f1) @@ -285,11 +289,13 @@ cd "$ZIGDIR/ci" "$ZIG" run update-download-page.zig mv out "$TARBALLS_DIR/out" -cd "$WORKDIR/www.ziglang.org" +cd "$WORKDIR" +git clone --depth=1 git@github.com:ziglang/www.ziglang.org.git +cd www.ziglang.org + # This is the user when pushing to the website repo. git config user.email "ziggy@ziglang.org" git config user.name "Ziggy" -git pull cp "$TARBALLS_DIR/out/index.json" data/releases.json git add data/releases.json diff --git a/ci/linux/build-x86_64-debug.sh b/ci/linux/build-x86_64-debug.sh index 1691b3884f..e138bcf68b 100755 --- a/ci/linux/build-x86_64-debug.sh +++ b/ci/linux/build-x86_64-debug.sh @@ -1,56 +1,70 @@ #!/bin/sh +# Requires cmake ninja-build + set -x set -e -ZIGDIR="$(pwd)" ARCH="$(uname -m)" -DEPS_LOCAL="$HOME/local" -OLD_ZIG="$DEPS_LOCAL/bin/zig" -TARGET="${ARCH}-linux-musl" +TARGET="$ARCH-linux-musl" +MCPU="baseline" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.256+271cc52a1" +PREFIX="$HOME/deps/$CACHE_BASENAME" +ZIG="$PREFIX/bin/zig" -mkdir -p "$DEPS_LOCAL" -cd "$DEPS_LOCAL" +export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$HOME/deps/qemu-linux-x86_64-6.1.0.1/bin:$PATH" -OLD_ZIG_VERSION="0.11.0-dev.256+271cc52a1" -wget https://ziglang.org/deps/zig+llvm+lld+clang-x86_64-linux-musl-$OLD_ZIG_VERSION.tar.xz -tar x --strip-components=1 -f zig+llvm+lld+clang-x86_64-linux-musl-$OLD_ZIG_VERSION.tar.xz +# 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 -wget https://ziglang.org/deps/qemu-linux-x86_64-6.1.0.1.tar.xz -tar x --strip-components=1 -f qemu-linux-x86_64-6.1.0.1.tar.xz +export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" +export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" -wget https://github.com/bytecodealliance/wasmtime/releases/download/v2.0.2/wasmtime-v2.0.2-x86_64-linux.tar.xz -tar x --strip-components=1 -f wasmtime-v2.0.2-x86_64-linux.tar.xz -rm -f LICENSE README.md -mv wasmtime bin/ +rm -rf build-debug +mkdir build-debug +cd build-debug +cmake .. \ + -DCMAKE_INSTALL_PREFIX="stage3-debug" \ + -DCMAKE_PREFIX_PATH="$PREFIX" \ + -DCMAKE_BUILD_TYPE=Debug \ + -DZIG_TARGET_TRIPLE="$TARGET" \ + -DZIG_TARGET_MCPU="$MCPU" \ + -DZIG_STATIC=ON \ + -GNinja -export PATH=$DEPS_LOCAL/bin:$PATH +# 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 -cd "$ZIGDIR" -echo "building stage3-debug with zig version $($OLD_ZIG version)" - -"$OLD_ZIG" build \ - --prefix stage3 \ - --search-prefix "$DEPS_LOCAL" \ - --zig-lib-dir lib \ - -Denable-stage1 \ - -Dstatic-llvm \ - -Drelease \ - -Duse-zig-libcxx \ - -Dtarget="$TARGET" +ninja install echo "Looking for non-conforming code formatting..." -stage3/bin/zig fmt --check . \ - --exclude test/cases/ \ - --exclude build +stage3-debug/bin/zig fmt --check .. \ + --exclude ../test/cases/ \ + --exclude ../build-debug \ + --exclude ../build-release # simultaneously test building self-hosted without LLVM and with 32-bit arm -stage3/bin/zig build -Dtarget=arm-linux-musleabihf +stage3-debug/bin/zig build -Dtarget=arm-linux-musleabihf -stage3/bin/zig build test docs \ +stage3-debug/bin/zig build test docs \ -fqemu \ -fwasmtime \ -Dstatic-llvm \ -Dtarget=native-native-musl \ - --search-prefix "$DEPS_LOCAL" \ - --zig-lib-dir lib + --search-prefix "$PREFIX" \ + --zig-lib-dir "$(pwd)/../lib" + +# Look for HTML errors. +tidy --drop-empty-elements no -qe zig-cache/langref.html + +# Produce the experimental std lib documentation. +mkdir -p "stage3-debug/doc/std" +stage3-debug/bin/zig test ../lib/std/std.zig \ + -femit-docs=stage3-debug/doc/std \ + -fno-emit-bin \ + --zig-lib-dir "$(pwd)/../lib" diff --git a/ci/linux/build-x86_64-release.sh b/ci/linux/build-x86_64-release.sh index f4c6d3c892..19b37e5f22 100755 --- a/ci/linux/build-x86_64-release.sh +++ b/ci/linux/build-x86_64-release.sh @@ -1,75 +1,86 @@ #!/bin/sh +# Requires cmake ninja-build + set -x set -e -ZIGDIR="$(pwd)" ARCH="$(uname -m)" -DEPS_LOCAL="$HOME/local" -OLD_ZIG="$DEPS_LOCAL/bin/zig" -TARGET="${ARCH}-linux-musl" +TARGET="$ARCH-linux-musl" MCPU="baseline" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.256+271cc52a1" +PREFIX="$HOME/deps/$CACHE_BASENAME" +ZIG="$PREFIX/bin/zig" -mkdir -p "$DEPS_LOCAL" -cd "$DEPS_LOCAL" +export PATH="$HOME/deps/wasmtime-v2.0.2-$ARCH-linux:$HOME/deps/qemu-linux-x86_64-6.1.0.1/bin:$PATH" -OLD_ZIG_VERSION="0.11.0-dev.256+271cc52a1" -wget https://ziglang.org/deps/zig+llvm+lld+clang-x86_64-linux-musl-$OLD_ZIG_VERSION.tar.xz -tar x --strip-components=1 -f zig+llvm+lld+clang-x86_64-linux-musl-$OLD_ZIG_VERSION.tar.xz +# 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 -wget https://ziglang.org/deps/qemu-linux-x86_64-6.1.0.1.tar.xz -tar x --strip-components=1 -f qemu-linux-x86_64-6.1.0.1.tar.xz +export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" +export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" -wget https://github.com/bytecodealliance/wasmtime/releases/download/v2.0.2/wasmtime-v2.0.2-x86_64-linux.tar.xz -tar x --strip-components=1 -f wasmtime-v2.0.2-x86_64-linux.tar.xz -rm -f LICENSE README.md -mv wasmtime bin/ - -export PATH=$DEPS_LOCAL/bin:$PATH - -cd "$ZIGDIR" -echo "building stage3-release with zig version $($OLD_ZIG version)" - -export CC="$OLD_ZIG cc -target $TARGET -mcpu=$MCPU" -export CXX="$OLD_ZIG c++ -target $TARGET -mcpu=$MCPU" - -mkdir build -cd build +rm -rf build-release +mkdir build-release +cd build-release cmake .. \ - -DCMAKE_INSTALL_PREFIX="$(pwd)/stage3" \ - -DCMAKE_PREFIX_PATH="$DEPS_LOCAL" \ + -DCMAKE_INSTALL_PREFIX="stage3-release" \ + -DCMAKE_PREFIX_PATH="$PREFIX" \ -DCMAKE_BUILD_TYPE=Release \ -DZIG_TARGET_TRIPLE="$TARGET" \ -DZIG_TARGET_MCPU="$MCPU" \ - -DZIG_STATIC=ON + -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 -make -j2 install +ninja install -"stage3/bin/zig" build test \ +echo "Looking for non-conforming code formatting..." +stage3-release/bin/zig fmt --check .. \ + --exclude ../test/cases/ \ + --exclude ../build-debug \ + --exclude ../build-release + +# simultaneously test building self-hosted without LLVM and with 32-bit arm +stage3-release/bin/zig build -Dtarget=arm-linux-musleabihf + +stage3-release/bin/zig build test docs \ -fqemu \ -fwasmtime \ -Dstatic-llvm \ -Dtarget=native-native-musl \ - --search-prefix "$DEPS_LOCAL" \ + --search-prefix "$PREFIX" \ + --zig-lib-dir "$(pwd)/../lib" + +# Look for HTML errors. +tidy --drop-empty-elements no -qe zig-cache/langref.html + +# 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" "stage3/bin/zig" build \ - --prefix stage4 \ + --prefix stage4-release \ -Denable-llvm \ -Denable-stage1 \ -Dno-lib \ -Drelease \ -Dstrip \ - -Dtarget=x86_64-linux-musl \ + -Dtarget=$TARGET \ -Duse-zig-libcxx \ - -Dversion-string="$(stage3/bin/zig version)" + -Dversion-string="$(stage3-release/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/bin/zig stage4/bin/zig +diff stage3-release/bin/zig stage4-release/bin/zig diff --git a/ci/macos/build-aarch64.sh b/ci/macos/build-aarch64.sh index d8087963bc..e8fe795b42 100755 --- a/ci/macos/build-aarch64.sh +++ b/ci/macos/build-aarch64.sh @@ -3,8 +3,6 @@ set -x set -e -echo "Running on Version:" $MACOS_VERSION - # Script assumes the presence of the following: # s3cmd diff --git a/ci/macos/build-x86_64.sh b/ci/macos/build-x86_64.sh index 31fb02f610..ea19abce45 100755 --- a/ci/macos/build-x86_64.sh +++ b/ci/macos/build-x86_64.sh @@ -3,8 +3,6 @@ set -x set -e -echo "Running on Version:" $MACOS_VERSION - # Script assumes the presence of the following: # s3cmd @@ -13,7 +11,7 @@ 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" +JOBS="-j3" rm -rf $PREFIX cd $HOME