From c822da712110fcb11b21d0fef0dd2d82b2f876a4 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 14 Nov 2022 17:39:07 -0700 Subject: [PATCH 1/5] CI: aarch64-linux: support older cmake --- ci/linux/build-aarch64.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ci/linux/build-aarch64.sh b/ci/linux/build-aarch64.sh index e4b8417081..50f948ea81 100644 --- a/ci/linux/build-aarch64.sh +++ b/ci/linux/build-aarch64.sh @@ -16,19 +16,31 @@ ZIG="$PREFIX/bin/zig" export PATH="$HOME/deps/wasmtime-v2.0.2-aarch64-linux:$PATH" +# 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 + +export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" +export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" + mkdir build-release cd build-release cmake .. \ -DCMAKE_INSTALL_PREFIX="stage3-release" \ -DCMAKE_PREFIX_PATH="$PREFIX" \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_COMPILER="$ZIG;cc;-target;$TARGET;-mcpu=$MCPU" \ - -DCMAKE_CXX_COMPILER="$ZIG;c++;-target;$TARGET;-mcpu=$MCPU" \ -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 # TODO: add -fqemu back to this line From 69d1ea769b9718d565097deb4ba9a870fc6d7636 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 14 Nov 2022 17:40:13 -0700 Subject: [PATCH 2/5] CI: test in the ci branch for now --- .github/workflows/ci.yaml | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000000..040dc00ab7 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,56 @@ +name: push_ci +run-name: Push CI +on: + push: + branches: + - master +jobs: + aarch64-linux: + runs-on: [self-hosted, Linux, aarch64] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Run Build Script + run: sh ./ci/linux/build-aarch64.sh + x86_64-macos: + 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-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: + ARCH: "x86_64" + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Run Build Script + run: ./ci/windows/build.ps1 + build-tarballs: + needs: [aarch64-linux, x86_64-macos, aarch64-macos, x86_64-windows] + runs-on: [self-hosted, Linux, aarch64] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build Tarballs + run: sh ./ci/linux/build-tarballs.sh From 5ec9be0b03b17c849078c2a3f652a86e723fd1c2 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 20 Nov 2022 16:20:30 -0700 Subject: [PATCH 3/5] CMake: choose native CPU instead of baseline by default --- CMakeLists.txt | 6 +++--- src/stage1/zig0.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b9a11a000..d006de0b01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,7 +121,7 @@ string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_INCLUDE_DIR_ESCAPED "${ZIG_LIBC_ option(ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF) set(ZIG_TARGET_TRIPLE "native" CACHE STRING "arch-os-abi to output binaries for") -set(ZIG_TARGET_MCPU "baseline" CACHE STRING "-mcpu parameter to output binaries for") +set(ZIG_TARGET_MCPU "native" CACHE STRING "-mcpu parameter to output binaries for") set(ZIG_EXECUTABLE "" CACHE STRING "(when cross compiling) path to already-built zig binary") set(ZIG_SINGLE_THREADED off CACHE BOOL "limit the zig compiler to use only 1 thread") set(ZIG_OMIT_STAGE2 off CACHE BOOL "omit the stage2 backend from stage1") @@ -1036,8 +1036,8 @@ set(BUILD_ZIG2_ARGS "-femit-bin=${ZIG2_OBJECT}" -fcompiler-rt ${ZIG_SINGLE_THREADED_ARG} - -target "${ZIG_TARGET_TRIPLE}" - -mcpu "${ZIG_TARGET_MCPU}" + -target native + -mcpu native -lc --pkg-begin build_options "${ZIG_CONFIG_ZIG_OUT}" --pkg-end diff --git a/src/stage1/zig0.cpp b/src/stage1/zig0.cpp index ea0c397243..96d33a093c 100644 --- a/src/stage1/zig0.cpp +++ b/src/stage1/zig0.cpp @@ -186,7 +186,7 @@ static Error target_parse_triple(struct ZigTarget *target, const char *zig_tripl if (zig_triple == nullptr) { get_native_target(target); - if (mcpu == nullptr) { + if (mcpu == nullptr || strcmp(mcpu, "native") == 0) { target->llvm_cpu_name = ZigLLVMGetHostCPUName(); target->llvm_cpu_features = ZigLLVMGetNativeFeatures(); } else if (strcmp(mcpu, "baseline") == 0) { From f3d987dc87cce25c4c0a75b654c4a71b8365fac9 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 21 Nov 2022 17:07:33 -0700 Subject: [PATCH 4/5] CI: start moving tarball generation to github actions --- ci/{srht => }/index.json | 0 ci/linux/build-aarch64.sh | 3 +- ci/linux/build-tarballs.sh | 327 +++++++++++++++++++++++++ ci/srht/update_download_page | 8 +- ci/{srht => }/update-download-page.zig | 0 5 files changed, 332 insertions(+), 6 deletions(-) rename ci/{srht => }/index.json (100%) create mode 100644 ci/linux/build-tarballs.sh rename ci/{srht => }/update-download-page.zig (100%) diff --git a/ci/srht/index.json b/ci/index.json similarity index 100% rename from ci/srht/index.json rename to ci/index.json diff --git a/ci/linux/build-aarch64.sh b/ci/linux/build-aarch64.sh index 50f948ea81..cfb1dfbfe6 100644 --- a/ci/linux/build-aarch64.sh +++ b/ci/linux/build-aarch64.sh @@ -1,12 +1,10 @@ #!/bin/sh - # Requires cmake ninja-build set -x set -e -ZIGDIR="$(pwd)" ARCH="$(uname -m)" TARGET="$ARCH-linux-musl" MCPU="baseline" @@ -25,6 +23,7 @@ git fetch --tags export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" +rm -rf build-release mkdir build-release cd build-release cmake .. \ diff --git a/ci/linux/build-tarballs.sh b/ci/linux/build-tarballs.sh new file mode 100644 index 0000000000..8e26563201 --- /dev/null +++ b/ci/linux/build-tarballs.sh @@ -0,0 +1,327 @@ +#!/bin/sh + +# Requires cmake ninja-build + +set -x +set -e + +ZIGDIR="$(pwd)" +REL_SRC_BUILD="$ZIGDIR/build-release" +cd ../.. +WORKDIR="$(pwd)" +ARCH="$(uname -m)" +TARGET="$ARCH-linux-musl" +MCPU="baseline" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.10.0-dev.4560+828735ac0" +PREFIX="$HOME/deps/$CACHE_BASENAME" +ZIG="$PREFIX/bin/zig" + +# Make the `zig version` number consistent. +# This will affect the cmake command below. +cd "$ZIGDIR" +git config core.abbrev 9 +git fetch --unshallow || true +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 .. \ + -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 + +# Make sure our ZIG_VERSION below is correct. +ZIG_VERSION="$(stage3-release/bin/zig version)" +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 + +CMAKE_GENERATOR=Ninja ./build aarch64-linux-musl baseline +CMAKE_GENERATOR=Ninja ./build x86_64-linux-musl baseline +#CMAKE_GENERATOR=Ninja ./build x86-linux-musl baseline +#CMAKE_GENERATOR=Ninja ./build riscv64-linux-musl baseline +#CMAKE_GENERATOR=Ninja ./build arm-linux-musleabihf generic+v7a +CMAKE_GENERATOR=Ninja ./build x86_64-macos-none baseline +CMAKE_GENERATOR=Ninja ./build aarch64-macos-none apple_a14 +CMAKE_GENERATOR=Ninja ./build x86_64-windows-gnu baseline +#CMAKE_GENERATOR=Ninja ./build x86-windows-gnu baseline +#CMAKE_GENERATOR=Ninja ./build aarch64-windows-gnu baseline + +ZIG="$BOOTSTRAP_SRC/out/host/bin/zig" + +cd "$ZIGDIR" +SRC_TARBALL="$TARBALLS_DIR/zig-$ZIG_VERSION.tar.xz" +git archive --format=tar.xz -o "$SRC_TARBALL" --prefix=zig-$ZIG_VERSION/ $ZIG_VERSION + +cd "$BOOTSTRAP_SRC" +"$ZIG" build --build-file zig/build.zig docs +LANGREF_HTML="$BOOTSTRAP_SRC/zig/zig-cache/langref.html" + +rm -rf "$TARBALLS_DIR" +mkdir "$TARBALLS_DIR" +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/ + +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-freebsd-x86_64-$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-freebsd-x86_64-$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-freebsd-x86_64-$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-freebsd-x86_64-$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-freebsd-x86_64-$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-freebsd-x86_64-$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 +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-armv7a -target arm-linux-musl -mcpu=generic+v7a -fno-emit-bin +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86 -target x86-linux-musl -fno-emit-bin +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-riscv64 -target riscv64-linux-musl -fno-emit-bin +stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86_64 -target x86_64-linux-musl -fno-emit-bin +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86 -target x86-windows-gnu -fno-emit-bin +stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86_64 -target x86_64-windows-gnu -fno-emit-bin +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-aarch64 -target aarch64-windows-gnu -fno-emit-bin +stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-x86_64 -target x86_64-macos -fno-emit-bin +stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-aarch64 -target aarch64-macos -fno-emit-bin +#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-freebsd-x86_64 -target x86_64-freebsd -fno-emit-bin + +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-freebsd-x86_64 zig-freebsd-x86_64-$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-freebsd-x86_64-$ZIG_VERSION/doc/ + +#rm -rf zig-linux-aarch64-$ZIG_VERSION/doc/std/src +#rm -rf zig-linux-armv7a-$ZIG_VERSION/doc/std/src +#rm -rf zig-linux-x86-$ZIG_VERSION/doc/std/src +#rm -rf zig-linux-riscv64-$ZIG_VERSION/doc/std/src +#rm -rf zig-linux-x86_64-$ZIG_VERSION/doc/std/src +##rm -rf zig-windows-x86-$ZIG_VERSION/doc/std/src +#rm -rf zig-windows-x86_64-$ZIG_VERSION/doc/std/src +#rm -rf zig-windows-aarch64-$ZIG_VERSION/doc/std/src +#rm -rf zig-macos-aarch64-$ZIG_VERSION/doc/std/src +#rm -rf zig-macos-x86_64-$ZIG_VERSION/doc/std/src +#rm -rf zig-freebsd-x86_64-$ZIG_VERSION/doc/std/src + +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/ +#tar cJf zig-freebsd-x86_64-$ZIG_VERSION.tar.xz zig-freebsd-x86_64-$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/ + +export SRC_SHASUM=$(sha256sum $SRC_TARBALL | cut '-d ' -f1) +export SRC_BYTESIZE=$(wc -c < $SRC_TARBALL) + +export X86_64_WINDOWS_TARBALL="zig-windows-x86_64-$ZIG_VERSION.zip" +export X86_64_WINDOWS_BYTESIZE=$(wc -c < "zig-windows-x86_64-$ZIG_VERSION.zip") +export X86_64_WINDOWS_SHASUM="$(sha256sum "zig-windows-x86_64-$ZIG_VERSION.zip" | cut '-d ' -f1)" + +export AARCH64_MACOS_TARBALL="zig-macos-aarch64-$ZIG_VERSION.tar.xz" +export AARCH64_MACOS_BYTESIZE=$(wc -c < "zig-macos-aarch64-$ZIG_VERSION.tar.xz") +export AARCH64_MACOS_SHASUM="$(sha256sum "zig-macos-aarch64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" + +export X86_64_MACOS_TARBALL="zig-macos-x86_64-$ZIG_VERSION.tar.xz" +export X86_64_MACOS_BYTESIZE=$(wc -c < "zig-macos-x86_64-$ZIG_VERSION.tar.xz") +export X86_64_MACOS_SHASUM="$(sha256sum "zig-macos-x86_64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" + +export X86_64_LINUX_TARBALL="zig-linux-x86_64-$ZIG_VERSION.tar.xz" +export X86_64_LINUX_BYTESIZE=$(wc -c < "zig-linux-x86_64-$ZIG_VERSION.tar.xz") +export X86_64_LINUX_SHASUM="$(sha256sum "zig-linux-x86_64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" + +#export AARCH64_LINUX_TARBALL="zig-linux-aarch64-$ZIG_VERSION.tar.xz" +#export AARCH64_LINUX_BYTESIZE=$(wc -c < "zig-linux-aarch64-$ZIG_VERSION.tar.xz") +#export AARCH64_LINUX_SHASUM="$(sha256sum "zig-linux-aarch64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" + +#export X86_64_FREEBSD_TARBALL="zig-freebsd-x86_64-$ZIG_VERSION.tar.xz" +#export X86_64_FREEBSD_BYTESIZE=$(wc -c < "zig-freebsd-x86_64-$ZIG_VERSION.tar.xz") +#export X86_64_FREEBSD_SHASUM="$(sha256sum "zig-freebsd-x86_64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" + +#export X86_64_NETBSD_TARBALL="zig-netbsd-x86_64-$ZIG_VERSION.tar.xz" +#export X86_64_NETBSD_BYTESIZE=$(wc -c < "zig-netbsd-x86_64-$ZIG_VERSION.tar.xz") +#export X86_64_NETBSD_SHASUM="$(sha256sum "zig-netbsd-x86_64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" + +export MASTER_DATE="$(date +%Y-%m-%d)" +export MASTER_VERSION="$ZIG_VERSION" + +# Create index.json and update the website repo. +CIDIR="$ZIGDIR/ci" +cd "$CIDIR" +"$ZIG" run update-download-page.zig + +cd "$WORKDIR/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 "$CIDIR/out/index.json" data/releases.json +git add data/releases.json +git commit -m "CI: update releases" +git push origin master + +# Update autodocs and langref directly to S3 in order to prevent the +# www.ziglang.org git repo from growing too big. + +# Please do not edit this script to pre-compress the artifacts before they hit +# S3. This prevents the website from working on browsers that do not support gzip +# encoding. Cloudfront will automatically compress files if they are less than +# 9.5 MiB, and the client advertises itself as capable of decompressing. +# The data.js file is currently 16 MiB. In order to fix this problem, we need to do +# one of the following things: +# * Reduce the size of data.js to less than 9.5 MiB. +# * Figure out how to adjust the Cloudfront settings to increase the max size for +# auto-compressed objects. +# * Migrate to fastly. +DOCDIR="$REL_SRC_BUILD/doc-linux-aarch64" +s3cmd put -P --no-mime-magic \ + --add-header="Cache-Control: max-age=0, must-revalidate" \ + "$LANGREF_HTML" s3://ziglang.org/documentation/master/index.html + +s3cmd put -P --no-mime-magic \ + --add-header="Cache-Control: max-age=0, must-revalidate" \ + "$DOCDIR/std/index.html" s3://ziglang.org/documentation/master/std/index.html + +s3cmd put -P --no-mime-magic \ + --add-header="Cache-Control: max-age=0, must-revalidate" \ + "$DOCDIR/std/main.js" s3://ziglang.org/documentation/master/std/main.js + +s3cmd put -P --no-mime-magic \ + --add-header="Cache-Control: max-age=0, must-revalidate" \ + "$DOCDIR/std/data.js" s3://ziglang.org/documentation/master/std/data.js + +s3cmd put -P --no-mime-magic --recursive \ + --add-header="Cache-Control: max-age=0, must-revalidate" \ + -m "text/html" \ + "$DOCDIR/std/src/" s3://ziglang.org/documentation/master/std/src/ diff --git a/ci/srht/update_download_page b/ci/srht/update_download_page index de6ef07840..94428db9c0 100755 --- a/ci/srht/update_download_page +++ b/ci/srht/update_download_page @@ -32,10 +32,6 @@ curl --fail -I "$X86_64_FREEBSD_JSON_URL" >/dev/null || exit 0 pip3 install s3cmd --user S3CMD="$HOME/.local/bin/s3cmd" -# This is the user when pushing to the website repo. -git config --global user.email "ziggy@ziglang.org" -git config --global user.name "Ziggy" - # Refresh this with `ssh-keyscan github.com` from a trusted Internet connection. # We hard code the public key here to detect man-in-the-middle attacks. echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts @@ -142,6 +138,10 @@ $S3CMD put -P --no-mime-magic \ git clone --depth 1 git@github.com:ziglang/www.ziglang.org.git cd www.ziglang.org WWWDIR="$(pwd)" +# This is the user when pushing to the website repo. +git config user.email "ziggy@ziglang.org" +git config user.name "Ziggy" + cd "$WWWDIR" cp "$CIDIR/out/index.json" data/releases.json diff --git a/ci/srht/update-download-page.zig b/ci/update-download-page.zig similarity index 100% rename from ci/srht/update-download-page.zig rename to ci/update-download-page.zig From e21b6a712d7e5c7acb19a7d522406a705223d325 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 21 Nov 2022 20:15:22 -0700 Subject: [PATCH 5/5] CI: switch to GitHub Actions --- .builds/freebsd.yml | 8 - .github/workflows/ci.yaml | 18 +- ci/azure/macos_script | 106 ----------- ci/azure/on_master_success | 12 -- ci/azure/pipelines.yml | 169 ------------------ ci/index.json | 5 + ci/linux/build-tarballs.sh | 103 ++++++----- .../build-x86_64-debug.sh} | 41 +++-- ci/linux/build-x86_64-release.sh | 75 ++++++++ ci/srht/freebsd_script | 114 ------------ ci/srht/netbsd_script | 97 ---------- ci/srht/on_master_success | 50 ------ ci/srht/update_download_page | 150 ---------------- ci/zinc/build_aarch64_macos | 20 --- ci/zinc/configure_git | 10 -- ci/zinc/drone.yml | 96 ---------- ci/zinc/linux_package | 45 ----- ci/zinc/linux_test_determinism | 28 --- ci/zinc/linux_test_stage3_release | 60 ------- ci/zinc/macos_package | 49 ----- ci/zinc/notify_lavahut | 9 - 21 files changed, 172 insertions(+), 1093 deletions(-) delete mode 100644 .builds/freebsd.yml delete mode 100755 ci/azure/macos_script delete mode 100755 ci/azure/on_master_success delete mode 100644 ci/azure/pipelines.yml rename ci/{zinc/linux_test_stage3_debug => linux/build-x86_64-debug.sh} (59%) create mode 100755 ci/linux/build-x86_64-release.sh delete mode 100755 ci/srht/freebsd_script delete mode 100755 ci/srht/netbsd_script delete mode 100755 ci/srht/on_master_success delete mode 100755 ci/srht/update_download_page delete mode 100755 ci/zinc/build_aarch64_macos delete mode 100755 ci/zinc/configure_git delete mode 100644 ci/zinc/drone.yml delete mode 100755 ci/zinc/linux_package delete mode 100755 ci/zinc/linux_test_determinism delete mode 100755 ci/zinc/linux_test_stage3_release delete mode 100755 ci/zinc/macos_package delete mode 100755 ci/zinc/notify_lavahut diff --git a/.builds/freebsd.yml b/.builds/freebsd.yml deleted file mode 100644 index 5535d036e1..0000000000 --- a/.builds/freebsd.yml +++ /dev/null @@ -1,8 +0,0 @@ -image: freebsd/latest -secrets: - - 51bfddf5-86a6-4e01-8576-358c72a4a0a4 - - be22288f-b1bc-4243-abe3-43d8f0e7079b -sources: - - https://github.com/ziglang/zig -tasks: - - build: cd zig && ./ci/srht/freebsd_script diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 040dc00ab7..45228b8daa 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -10,8 +10,22 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - - name: Run Build Script + - name: Build and Test run: sh ./ci/linux/build-aarch64.sh + x86_64-linux-debug: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build and Test + run: sh ./ci/linux/build-x86_64-debug.sh + x86_64-linux-release: + runs-on: ubuntu-latest + 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: @@ -47,7 +61,7 @@ jobs: - name: Run Build Script run: ./ci/windows/build.ps1 build-tarballs: - needs: [aarch64-linux, x86_64-macos, aarch64-macos, x86_64-windows] + needs: [aarch64-linux, x86_64-macos, aarch64-macos, x86_64-windows, x86_64-linux-debug, x86_64-linux-release] runs-on: [self-hosted, Linux, aarch64] steps: - name: Checkout diff --git a/ci/azure/macos_script b/ci/azure/macos_script deleted file mode 100755 index a8abc48678..0000000000 --- a/ci/azure/macos_script +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh - -set -x -set -e - -brew update && brew install ncurses s3cmd - -ZIGDIR="$(pwd)" -ARCH="x86_64" -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 - -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" - -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 - -if [ "${BUILD_REASON}" != "PullRequest" ]; then - # Remove the unnecessary bin dir in stage3-release/bin/zig - mv stage3-release/bin/zig stage3-release/ - rmdir stage3-release/bin - - # Remove the unnecessary zig dir in stage3-release/lib/zig/std/std.zig - mv stage3-release/lib/zig stage3-release/lib2 - rmdir stage3-release/lib - mv stage3-release/lib2 stage3-release/lib - - mv ../LICENSE stage3-release/ - mv ../zig-cache/langref.html stage3-release/doc - - VERSION=$(stage3-release/zig version) - DIRNAME="zig-macos-$ARCH-$VERSION" - TARBALL="$DIRNAME.tar.xz" - mv stage3-release "$DIRNAME" - tar cfJ "$TARBALL" "$DIRNAME" - - mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg" - s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/ - - SHASUM=$(shasum -a 256 $TARBALL | cut '-d ' -f1) - BYTESIZE=$(wc -c < $TARBALL) - - JSONFILE="macos-$GITBRANCH.json" - touch $JSONFILE - echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE - echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE - echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE - - s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE" - s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/$ARCH-macos-$VERSION.json" - - # `set -x` causes these variables to be mangled. - # See https://developercommunity.visualstudio.com/content/problem/375679/pipeline-variable-incorrectly-inserts-single-quote.html - set +x - echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL" - echo "##vso[task.setvariable variable=shasum;isOutput=true]$SHASUM" - echo "##vso[task.setvariable variable=bytesize;isOutput=true]$BYTESIZE" - echo "##vso[task.setvariable variable=version;isOutput=true]$VERSION" -fi diff --git a/ci/azure/on_master_success b/ci/azure/on_master_success deleted file mode 100755 index cef618361b..0000000000 --- a/ci/azure/on_master_success +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# We do not set -x because this would leak the oauth access token. -set +x - -set -e - -sudo apt-get update -y -sudo apt-get install -y curl jq - -OAUTH_TOKEN="$(cat "$DOWNLOADSECUREFILE_SECUREFILEPATH")" -./ci/srht/on_master_success "$VERSION" "$OAUTH_TOKEN" diff --git a/ci/azure/pipelines.yml b/ci/azure/pipelines.yml deleted file mode 100644 index 69ce774cff..0000000000 --- a/ci/azure/pipelines.yml +++ /dev/null @@ -1,169 +0,0 @@ -jobs: -- job: BuildMacOS - pool: - vmImage: 'macOS-11' - timeoutInMinutes: 360 - steps: - - task: DownloadSecureFile@1 - inputs: - secureFile: s3cfg - - script: ci/azure/macos_script - name: main - displayName: 'Build and test' -- job: BuildWindows - timeoutInMinutes: 360 - pool: - vmImage: 'windows-2019' - variables: - TARGET: 'x86_64-windows-gnu' - ZIG_LLVM_CLANG_LLD_NAME: 'zig+llvm+lld+clang-${{ variables.TARGET }}-0.11.0-dev.25+499dddb4c' - ZIG_LLVM_CLANG_LLD_URL: 'https://ziglang.org/deps/${{ variables.ZIG_LLVM_CLANG_LLD_NAME }}.zip' - steps: - - pwsh: | - (New-Object Net.WebClient).DownloadFile("$(ZIG_LLVM_CLANG_LLD_URL)", "${ZIG_LLVM_CLANG_LLD_NAME}.zip") - & 'C:\Program Files\7-Zip\7z.exe' x "${ZIG_LLVM_CLANG_LLD_NAME}.zip" - name: install - displayName: 'Install ZIG/LLVM/CLANG/LLD' - - - pwsh: | - 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 - } - - & "$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 - name: build - displayName: 'Build' - - - pwsh: | - 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 - } - - & "$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 - & "$ZIGINSTALLDIR\bin\zig.exe" test "$ZIGLIBDIR\std\std.zig" ` - --zig-lib-dir "$ZIGLIBDIR" ` - -femit-docs="$ZIGINSTALLDIR\doc\std" ` - -fno-emit-bin - - name: test - displayName: 'Test' - - - task: DownloadSecureFile@1 - inputs: - name: aws_credentials - secureFile: aws_credentials - - - pwsh: | - $Env:AWS_SHARED_CREDENTIALS_FILE = "$Env:DOWNLOADSECUREFILE_SECUREFILEPATH" - - # Workaround Azure networking issue - # https://github.com/aws/aws-cli/issues/5749 - $Env:AWS_EC2_METADATA_DISABLED = "true" - $Env:AWS_REGION = "us-west-2" - - mv LICENSE stage3-release/ - mv zig-cache/langref.html stage3-release/ - mv stage3-release/bin/zig.exe stage3-release/ - rmdir stage3-release/bin - - # Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig - mv stage3-release/lib/zig stage3-release/lib2 - rmdir stage3-release/lib - mv stage3-release/lib2 stage3-release/lib - - Set-Variable -Name VERSION -Value $(./stage3-release/zig.exe version) - Set-Variable -Name DIRNAME -Value "zig-windows-x86_64-$VERSION" - Set-Variable -Name TARBALL -Value "$DIRNAME.zip" - mv stage3-release "$DIRNAME" - 7z a "$TARBALL" "$DIRNAME" - - aws s3 cp ` - "$TARBALL" ` - s3://ziglang.org/builds/ ` - --acl public-read ` - --cache-control 'public, max-age=31536000, immutable' - - Set-Variable -Name SHASUM -Value (Get-FileHash "$TARBALL" -Algorithm SHA256 | select-object -ExpandProperty Hash).ToLower() - Set-Variable -Name BYTESIZE -Value (Get-Item "$TARBALL").length - - Set-Variable -Name JSONFILE -Value "windows-${Env:BUILD_SOURCEBRANCHNAME}.json" - echo $null > $JSONFILE - echo ('{"tarball": "' + $TARBALL + '",') >> $JSONFILE - echo ('"shasum": "' + $SHASUM + '",') >> $JSONFILE - echo ('"size": ' + $BYTESIZE + '}' ) >> $JSONFILE - - aws s3 cp ` - "$JSONFILE" ` - s3://ziglang.org/builds/ ` - --acl public-read ` - --cache-control 'max-age=0, must-revalidate' - - aws s3 cp ` - "$JSONFILE" ` - "s3://ziglang.org/builds/x86_64-windows-${VERSION}.json" ` - --acl public-read - - echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL" - echo "##vso[task.setvariable variable=shasum;isOutput=true]$SHASUM" - echo "##vso[task.setvariable variable=bytesize;isOutput=true]$BYTESIZE" - - name: upload - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - displayName: 'Upload' - -- job: OnMasterSuccess - dependsOn: - - BuildMacOS - - BuildWindows - condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) - strategy: - maxParallel: 1 - pool: - vmImage: 'ubuntu-20.04' - variables: - version: $[ dependencies.BuildMacOS.outputs['main.version'] ] - steps: - - task: DownloadSecureFile@1 - inputs: - secureFile: oauth_token - - script: ci/azure/on_master_success - displayName: 'master branch success hook' diff --git a/ci/index.json b/ci/index.json index bbb764572f..6417635030 100644 --- a/ci/index.json +++ b/ci/index.json @@ -33,6 +33,11 @@ "tarball": "https://ziglang.org/builds/{{X86_64_LINUX_TARBALL}}", "shasum": "{{X86_64_LINUX_SHASUM}}", "size": "{{X86_64_LINUX_BYTESIZE}}" + }, + "aarch64-linux": { + "tarball": "https://ziglang.org/builds/{{AARCH64_LINUX_TARBALL}}", + "shasum": "{{AARCH64_LINUX_SHASUM}}", + "size": "{{AARCH64_LINUX_BYTESIZE}}" } }, "0.10.0": { diff --git a/ci/linux/build-tarballs.sh b/ci/linux/build-tarballs.sh index 8e26563201..a1b601fe15 100644 --- a/ci/linux/build-tarballs.sh +++ b/ci/linux/build-tarballs.sh @@ -12,7 +12,7 @@ WORKDIR="$(pwd)" ARCH="$(uname -m)" TARGET="$ARCH-linux-musl" MCPU="baseline" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.10.0-dev.4560+828735ac0" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.11.0-dev.256+271cc52a1" PREFIX="$HOME/deps/$CACHE_BASENAME" ZIG="$PREFIX/bin/zig" @@ -45,7 +45,6 @@ unset CXX ninja install -# Make sure our ZIG_VERSION below is correct. ZIG_VERSION="$(stage3-release/bin/zig version)" BOOTSTRAP_SRC="$WORKDIR/zig-bootstrap" TARBALLS_DIR="$WORKDIR/tarballs" @@ -56,29 +55,46 @@ rm -rf zig cp -r "$ZIGDIR" ./ sed -i "/^ZIG_VERSION=\".*\"\$/c\\ZIG_VERSION=\"$ZIG_VERSION\"" build -CMAKE_GENERATOR=Ninja ./build aarch64-linux-musl baseline -CMAKE_GENERATOR=Ninja ./build x86_64-linux-musl baseline -#CMAKE_GENERATOR=Ninja ./build x86-linux-musl baseline -#CMAKE_GENERATOR=Ninja ./build riscv64-linux-musl baseline -#CMAKE_GENERATOR=Ninja ./build arm-linux-musleabihf generic+v7a -CMAKE_GENERATOR=Ninja ./build x86_64-macos-none baseline -CMAKE_GENERATOR=Ninja ./build aarch64-macos-none apple_a14 -CMAKE_GENERATOR=Ninja ./build x86_64-windows-gnu baseline -#CMAKE_GENERATOR=Ninja ./build x86-windows-gnu baseline -#CMAKE_GENERATOR=Ninja ./build aarch64-windows-gnu baseline +# 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 ZIG="$BOOTSTRAP_SRC/out/host/bin/zig" -cd "$ZIGDIR" -SRC_TARBALL="$TARBALLS_DIR/zig-$ZIG_VERSION.tar.xz" -git archive --format=tar.xz -o "$SRC_TARBALL" --prefix=zig-$ZIG_VERSION/ $ZIG_VERSION +rm -rf "$TARBALLS_DIR" +mkdir "$TARBALLS_DIR" +cd "$TARBALLS_DIR" + +cp -r "$ZIGDIR" ./ +rm -rf \ + "zig/.github" \ + "zig/.gitignore" \ + "zig/.git" \ + "zig/ci" \ + "zig/CODE_OF_CONDUCT.md" \ + "zig/CONTRIBUTING.md" \ + "zig/.builds" \ + "zig/build" \ + "zig/build-release" \ + "zig/build-debug" \ + "zig/zig-cache" +mv zig "zig-$ZIG_VERSION" +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" -rm -rf "$TARBALLS_DIR" -mkdir "$TARBALLS_DIR" cd "$TARBALLS_DIR" cp -r $BOOTSTRAP_SRC/out/zig-aarch64-linux-musl-baseline zig-linux-aarch64-$ZIG_VERSION/ @@ -166,17 +182,17 @@ mkdir zig-macos-x86_64-$ZIG_VERSION/doc/ #mkdir zig-freebsd-x86_64-$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 -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-armv7a -target arm-linux-musl -mcpu=generic+v7a -fno-emit-bin -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86 -target x86-linux-musl -fno-emit-bin -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-riscv64 -target riscv64-linux-musl -fno-emit-bin -stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-linux-x86_64 -target x86_64-linux-musl -fno-emit-bin -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86 -target x86-windows-gnu -fno-emit-bin -stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-x86_64 -target x86_64-windows-gnu -fno-emit-bin -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-windows-aarch64 -target aarch64-windows-gnu -fno-emit-bin -stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-x86_64 -target x86_64-macos -fno-emit-bin -stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-macos-aarch64 -target aarch64-macos -fno-emit-bin -#stage3-release/bin/zig test ../lib/std/std.zig -femit-docs=doc-freebsd-x86_64 -target x86_64-freebsd -fno-emit-bin +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 cd "$TARBALLS_DIR" cp -r $REL_SRC_BUILD/doc-linux-aarch64 zig-linux-aarch64-$ZIG_VERSION/doc/std @@ -203,18 +219,6 @@ cp $LANGREF_HTML zig-macos-aarch64-$ZIG_VERSION/doc/ cp $LANGREF_HTML zig-macos-x86_64-$ZIG_VERSION/doc/ #cp $LANGREF_HTML zig-freebsd-x86_64-$ZIG_VERSION/doc/ -#rm -rf zig-linux-aarch64-$ZIG_VERSION/doc/std/src -#rm -rf zig-linux-armv7a-$ZIG_VERSION/doc/std/src -#rm -rf zig-linux-x86-$ZIG_VERSION/doc/std/src -#rm -rf zig-linux-riscv64-$ZIG_VERSION/doc/std/src -#rm -rf zig-linux-x86_64-$ZIG_VERSION/doc/std/src -##rm -rf zig-windows-x86-$ZIG_VERSION/doc/std/src -#rm -rf zig-windows-x86_64-$ZIG_VERSION/doc/std/src -#rm -rf zig-windows-aarch64-$ZIG_VERSION/doc/std/src -#rm -rf zig-macos-aarch64-$ZIG_VERSION/doc/std/src -#rm -rf zig-macos-x86_64-$ZIG_VERSION/doc/std/src -#rm -rf zig-freebsd-x86_64-$ZIG_VERSION/doc/std/src - 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/ @@ -241,8 +245,9 @@ s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" z 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/ -export SRC_SHASUM=$(sha256sum $SRC_TARBALL | cut '-d ' -f1) -export SRC_BYTESIZE=$(wc -c < $SRC_TARBALL) +export SRC_TARBALL="zig-$ZIG_VERSION.tar.xz" +export SRC_SHASUM=$(sha256sum "zig-$ZIG_VERSION.tar.xz" | cut '-d ' -f1) +export SRC_BYTESIZE=$(wc -c < "zig-$ZIG_VERSION.tar.xz") export X86_64_WINDOWS_TARBALL="zig-windows-x86_64-$ZIG_VERSION.zip" export X86_64_WINDOWS_BYTESIZE=$(wc -c < "zig-windows-x86_64-$ZIG_VERSION.zip") @@ -260,9 +265,9 @@ export X86_64_LINUX_TARBALL="zig-linux-x86_64-$ZIG_VERSION.tar.xz" export X86_64_LINUX_BYTESIZE=$(wc -c < "zig-linux-x86_64-$ZIG_VERSION.tar.xz") export X86_64_LINUX_SHASUM="$(sha256sum "zig-linux-x86_64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" -#export AARCH64_LINUX_TARBALL="zig-linux-aarch64-$ZIG_VERSION.tar.xz" -#export AARCH64_LINUX_BYTESIZE=$(wc -c < "zig-linux-aarch64-$ZIG_VERSION.tar.xz") -#export AARCH64_LINUX_SHASUM="$(sha256sum "zig-linux-aarch64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" +export AARCH64_LINUX_TARBALL="zig-linux-aarch64-$ZIG_VERSION.tar.xz" +export AARCH64_LINUX_BYTESIZE=$(wc -c < "zig-linux-aarch64-$ZIG_VERSION.tar.xz") +export AARCH64_LINUX_SHASUM="$(sha256sum "zig-linux-aarch64-$ZIG_VERSION.tar.xz" | cut '-d ' -f1)" #export X86_64_FREEBSD_TARBALL="zig-freebsd-x86_64-$ZIG_VERSION.tar.xz" #export X86_64_FREEBSD_BYTESIZE=$(wc -c < "zig-freebsd-x86_64-$ZIG_VERSION.tar.xz") @@ -276,9 +281,9 @@ export MASTER_DATE="$(date +%Y-%m-%d)" export MASTER_VERSION="$ZIG_VERSION" # Create index.json and update the website repo. -CIDIR="$ZIGDIR/ci" -cd "$CIDIR" +cd "$ZIGDIR/ci" "$ZIG" run update-download-page.zig +mv out "$TARBALLS_DIR/out" cd "$WORKDIR/www.ziglang.org" # This is the user when pushing to the website repo. @@ -286,7 +291,7 @@ git config user.email "ziggy@ziglang.org" git config user.name "Ziggy" git pull -cp "$CIDIR/out/index.json" data/releases.json +cp "$TARBALLS_DIR/out/index.json" data/releases.json git add data/releases.json git commit -m "CI: update releases" git push origin master @@ -304,7 +309,7 @@ git push origin master # * Figure out how to adjust the Cloudfront settings to increase the max size for # auto-compressed objects. # * Migrate to fastly. -DOCDIR="$REL_SRC_BUILD/doc-linux-aarch64" +DOCDIR="$TARBALLS_DIR/zig-linux-aarch64-$ZIG_VERSION/doc" s3cmd put -P --no-mime-magic \ --add-header="Cache-Control: max-age=0, must-revalidate" \ "$LANGREF_HTML" s3://ziglang.org/documentation/master/index.html diff --git a/ci/zinc/linux_test_stage3_debug b/ci/linux/build-x86_64-debug.sh similarity index 59% rename from ci/zinc/linux_test_stage3_debug rename to ci/linux/build-x86_64-debug.sh index 401b225f3d..0633cd0577 100755 --- a/ci/zinc/linux_test_stage3_debug +++ b/ci/linux/build-x86_64-debug.sh @@ -3,49 +3,55 @@ set -x set -e +ZIGDIR="$(pwd)" ARCH="$(uname -m)" -DEPS_LOCAL="/deps/local" +DEPS_LOCAL="$HOME/local" OLD_ZIG="$DEPS_LOCAL/bin/zig" TARGET="${ARCH}-linux-musl" MCPU="baseline" +mkdir -p "$DEPS_LOCAL" +cd "$DEPS_LOCAL" + +wget https://ziglang.org/deps/zig+llvm+lld+clang-x86_64-linux-musl-0.10.0-dev.4560+828735ac0.tar.xz +tar x --strip-components=1 -f zig+llvm+lld+clang-x86_64-linux-musl-0.10.0-dev.4560+828735ac0.tar.xz + +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 + +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-debug with zig version $($OLD_ZIG version)" -# Override the cache directories so that we don't clobber with the release -# testing script which is running concurrently and in the same directory. -# Normally we want processes to cooperate, but in this case we want them isolated. -export ZIG_LOCAL_CACHE_DIR="$(pwd)/zig-cache-local-debug" -export ZIG_GLOBAL_CACHE_DIR="$(pwd)/zig-cache-global-debug" - export CC="$OLD_ZIG cc -target $TARGET -mcpu=$MCPU" export CXX="$OLD_ZIG c++ -target $TARGET -mcpu=$MCPU" -mkdir build-debug -cd build-debug +mkdir build +cd build cmake .. \ -DCMAKE_INSTALL_PREFIX="$(pwd)/stage3" \ -DCMAKE_PREFIX_PATH="$DEPS_LOCAL" \ -DCMAKE_BUILD_TYPE=Debug \ -DZIG_STATIC=ON \ - -DZIG_USE_LLVM_CONFIG=OFF \ - -GNinja + -DZIG_USE_LLVM_CONFIG=OFF # 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 +make -j2 install echo "Looking for non-conforming code formatting..." stage3/bin/zig fmt --check .. \ --exclude ../test/cases/ \ - --exclude ../build-debug \ - --exclude ../build-release \ - --exclude "$ZIG_LOCAL_CACHE_DIR" \ - --exclude "$ZIG_GLOBAL_CACHE_DIR" + --exclude ../build # simultaneously test building self-hosted without LLVM and with 32-bit arm stage3/bin/zig build -Dtarget=arm-linux-musleabihf @@ -57,6 +63,3 @@ stage3/bin/zig build test \ -Dtarget=native-native-musl \ --search-prefix "$DEPS_LOCAL" \ --zig-lib-dir "$(pwd)/../lib" - -# Explicit exit helps show last command duration. -exit diff --git a/ci/linux/build-x86_64-release.sh b/ci/linux/build-x86_64-release.sh new file mode 100755 index 0000000000..31ff11b1dc --- /dev/null +++ b/ci/linux/build-x86_64-release.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +set -x +set -e + +ZIGDIR="$(pwd)" +ARCH="$(uname -m)" +DEPS_LOCAL="$HOME/local" +OLD_ZIG="$DEPS_LOCAL/bin/zig" +TARGET="${ARCH}-linux-musl" +MCPU="baseline" + +mkdir -p "$DEPS_LOCAL" +cd "$DEPS_LOCAL" + +wget https://ziglang.org/deps/zig+llvm+lld+clang-x86_64-linux-musl-0.10.0-dev.4560+828735ac0.tar.xz +tar x --strip-components=1 -f zig+llvm+lld+clang-x86_64-linux-musl-0.10.0-dev.4560+828735ac0.tar.xz + +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 + +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 +cmake .. \ + -DCMAKE_INSTALL_PREFIX="$(pwd)/stage3" \ + -DCMAKE_PREFIX_PATH="$DEPS_LOCAL" \ + -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 -j2 install + +"stage3/bin/zig" build test \ + -fqemu \ + -fwasmtime \ + -Dstatic-llvm \ + -Dtarget=native-native-musl \ + --search-prefix "$DEPS_LOCAL" \ + --zig-lib-dir "$(pwd)/../lib" + +"stage3/bin/zig" build \ + --prefix stage4 \ + -Dconfig_h="build/config.h" \ + -Denable-llvm \ + -Denable-stage1 \ + -Dno-lib \ + -Drelease \ + -Dstrip \ + -Dtarget=x86_64-linux-musl \ + -Duse-zig-libcxx \ + -Dversion-string="$(stage3/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 --git a/ci/srht/freebsd_script b/ci/srht/freebsd_script deleted file mode 100755 index a810725932..0000000000 --- a/ci/srht/freebsd_script +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/sh - -set -x -set -e - -sudo pkg update -fq -sudo pkg install -y cmake py39-s3cmd wget curl jq samurai - -ZIGDIR="$(pwd)" -TARGET="x86_64-freebsd-gnu" -MCPU="baseline" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.10.0-dev.4560+828735ac0" -PREFIX="$HOME/$CACHE_BASENAME" - -cd $HOME -wget -nv "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz" -tar xf "$CACHE_BASENAME.tar.xz" - -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 - -# SourceHut reports that it is a terminal that supports escape codes, but it -# is a filthy liar. Here we tell Zig to not try to send any terminal escape -# codes to show progress. -export TERM=dumb - -mkdir build -cd build - - -cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_PREFIX_PATH=$PREFIX \ - -DZIG_TARGET_TRIPLE="$TARGET" \ - -DZIG_TARGET_MCPU="$MCPU" \ - -DZIG_STATIC=ON \ - -GNinja - -# TODO: eliminate this workaround. Without this, zig does not end up passing -# -isystem /usr/include when building libc++, resulting in #include -# "file not found" errors. -echo "include_dir=/usr/include" >>libc.txt -echo "sys_include_dir=/usr/include" >>libc.txt -echo "crt_dir=/usr/lib" >>libc.txt -echo "msvc_lib_dir=" >>libc.txt -echo "kernel32_lib_dir=" >>libc.txt -echo "gcc_dir=" >>libc.txt -ZIG_LIBC_TXT="$(pwd)/libc.txt" - -ZIG_LIBC="$ZIG_LIBC_TXT" samu install - -# Here we skip some tests to save time. -stage3/bin/zig build test docs \ - --zig-lib-dir "$(pwd)/../lib" \ - -Dstatic-llvm \ - --search-prefix "$PREFIX" \ - -Dskip-stage1 \ - -Dskip-non-native - -# Produce the experimental std lib documentation. -mkdir -p "stage3/doc/std" -stage3/bin/zig test "$(pwd)/../lib/std/std.zig" \ - --zig-lib-dir "$(pwd)/../lib" \ - -femit-docs="$(pwd)/stage3/doc/std/" \ - -fno-emit-bin - -if [ -f ~/.s3cfg ]; then - # Remove the unnecessary bin dir in stage3/bin/zig - mv stage3/bin/zig stage3/ - rmdir stage3/bin - - # Remove the unnecessary zig dir in stage3/lib/zig/std/std.zig - mv stage3/lib/zig stage3/lib2 - rmdir stage3/lib - mv stage3/lib2 stage3/lib - - mv ../LICENSE stage3/ - mv ../zig-cache/langref.html stage3/doc/ - - GITBRANCH=$(basename $GITHUB_REF) - VERSION=$(stage3/zig version) - DIRNAME="zig-freebsd-x86_64-$VERSION" - TARBALL="$DIRNAME.tar.xz" - mv stage3 "$DIRNAME" - tar cfJ "$TARBALL" "$DIRNAME" - - s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/ - - SHASUM=$(shasum -a 256 $TARBALL | cut '-d ' -f1) - BYTESIZE=$(wc -c < $TARBALL) - - JSONFILE="freebsd-$GITBRANCH.json" - touch $JSONFILE - echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE - echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE - echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE - - s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE" - s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/x86_64-freebsd-$VERSION.json" - - if [ "$GITBRANCH" = "master" ]; then - # avoid leaking oauth token - set +x - - OAUTH_TOKEN="$(cat ~/.oauth_token)" - cd "$ZIGDIR" - ./ci/srht/on_master_success "$VERSION" "$OAUTH_TOKEN" - fi -fi diff --git a/ci/srht/netbsd_script b/ci/srht/netbsd_script deleted file mode 100755 index 5f5b28e92f..0000000000 --- a/ci/srht/netbsd_script +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh - -set -x -set -e - -sudo pkgin -y update -sudo pkgin -y upgrade -sudo pkgin -y install cmake samurai curl jq py27-s3cmd wget clang - -ZIGDIR="$(pwd)" -CACHE_BASENAME="zig+llvm+lld+clang-x86_64-netbsd-gnu-0.8.0" -PREFIX="$HOME/$CACHE_BASENAME" - -cd $HOME -wget -nv "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz" -tar xf "$CACHE_BASENAME.tar.xz" - -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 - -# SourceHut reports that it is a terminal that supports escape codes, but it -# is a filthy liar. Here we tell Zig to not try to send any terminal escape -# codes to show progress. -export TERM=dumb - -mkdir build -cd build -export CC="$PREFIX/bin/zigcc" -export CXX="$PREFIX/bin/zigcxx" -echo "#!/bin/sh -env CC=\"clang\" $PREFIX/bin/zig cc \"\$@\"" > $CC -echo "#!/bin/sh -env CC=\"clang\" $PREFIX/bin/zig c++ \"\$@\"" > $CXX -chmod +x $CC -chmod +x $CXX - -cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_PREFIX_PATH=$PREFIX \ - "-DCMAKE_INSTALL_PREFIX=$(pwd)/release" \ - -DZIG_STATIC=ON \ - -DZIG_TARGET_TRIPLE=x86_64-netbsd-none \ - -GNinja -samu install - -unset CC -unset CXX - -# TODO ld.lld: error: undefined symbol: main -#>>> referenced by crt0-common.c -#>>> /usr/lib/crt0.o:(___start) -#release/bin/zig test ../test/behavior.zig -fno-stage1 -fLLVM -I ../test - -# Here we skip some tests to save time. -release/bin/zig build test -Dskip-stage1 -Dskip-non-native - -if [ -f ~/.s3cfg ]; then - mv ../LICENSE release/ - mv ../zig-cache/langref.html release/ - mv release/bin/zig release/ - rmdir release/bin - - GITBRANCH=$(basename $GITHUB_REF) - VERSION=$(release/zig version) - DIRNAME="zig-netbsd-x86_64-$VERSION" - TARBALL="$DIRNAME.tar.xz" - mv release "$DIRNAME" - tar cfJ "$TARBALL" "$DIRNAME" - - s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/ - - SHASUM=$(shasum -a 256 $TARBALL | cut '-d ' -f1) - BYTESIZE=$(wc -c < $TARBALL) - - JSONFILE="netbsd-$GITBRANCH.json" - touch $JSONFILE - echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE - echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE - echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE - - s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE" - s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/x86_64-netbsd-$VERSION.json" - - if [ "$GITBRANCH" = "master" ]; then - # avoid leaking oauth token - set +x - - OAUTH_TOKEN="$(cat ~/.oauth_token)" - cd "$ZIGDIR" - ./ci/srht/on_master_success "$VERSION" "$OAUTH_TOKEN" - fi -fi diff --git a/ci/srht/on_master_success b/ci/srht/on_master_success deleted file mode 100755 index 7d3c4e955e..0000000000 --- a/ci/srht/on_master_success +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh - -# This script must run on a lot of different platforms. -# It assumes that the following things are installed: -# * curl -# * jq -# * cat - -# We do not set -x because this would leak the oauth access token. -set +x - -set -e - -VERSION="$1" -OAUTH_TOKEN="$2" -YML_FILE="tmp.yml" - -if [ -z "$VERSION" ]; then - echo "missing VERSION parameter" - exit 1 -fi - -if [ -z "$OAUTH_TOKEN" ]; then - echo "missing OAUTH_TOKEN parameter" - exit 1 -fi - -cat <"$YML_FILE" -image: alpine/latest -packages: - - py3-pip - - curl - - jq - - xz -secrets: - - 51bfddf5-86a6-4e01-8576-358c72a4a0a4 - - 44e2bd57-1d07-42bf-925e-22a36119041d -sources: - - https://github.com/ziglang/zig -tasks: - - build: cd zig && ./ci/srht/update_download_page $VERSION -EOF - -jq <$YML_FILE -sR '{ - "manifest": ., - }' | curl \ - -H Authorization:"token $OAUTH_TOKEN" \ - -H Content-Type:application/json \ - -X POST \ - -d @- "https://builds.hut.lavatech.top/api/jobs" diff --git a/ci/srht/update_download_page b/ci/srht/update_download_page deleted file mode 100755 index 94428db9c0..0000000000 --- a/ci/srht/update_download_page +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/sh - -set -x -set -e - -VERSION="$1" -SRCDIR="$(pwd)" -NATIVE_TARBALL="zig-linux-$(uname -m)-$VERSION.tar.xz" - -# Check for all the builds being completed. It's expected that this script is run several times -# before they are all complete. -#AARCH64_LINUX_JSON_URL="https://ziglang.org/builds/aarch64-linux-$VERSION.json" -X86_64_LINUX_JSON_URL="https://ziglang.org/builds/x86_64-linux-$VERSION.json" -X86_64_WINDOWS_JSON_URL="https://ziglang.org/builds/x86_64-windows-$VERSION.json" -AARCH64_MACOS_JSON_URL="https://ziglang.org/builds/aarch64-macos-$VERSION.json" -X86_64_MACOS_JSON_URL="https://ziglang.org/builds/x86_64-macos-$VERSION.json" -X86_64_FREEBSD_JSON_URL="https://ziglang.org/builds/x86_64-freebsd-$VERSION.json" -#X86_64_NETBSD_JSON_URL="https://ziglang.org/builds/x86_64-netbsd-$VERSION.json" - -# If any of these fail, it's not really this job failing; rather we have detected -# that this job will be called again later when other jobs have completed. -#curl --fail -I "$AARCH64_LINUX_JSON_URL" >/dev/null || exit 0 -curl --fail -I "$X86_64_LINUX_JSON_URL" >/dev/null || exit 0 -curl --fail -I "$X86_64_WINDOWS_JSON_URL" >/dev/null || exit 0 -curl --fail -I "$AARCH64_MACOS_JSON_URL" >/dev/null || exit 0 -curl --fail -I "$X86_64_MACOS_JSON_URL" >/dev/null || exit 0 -curl --fail -I "$X86_64_FREEBSD_JSON_URL" >/dev/null || exit 0 -#curl --fail -I "$X86_64_NETBSD_JSON_URL" >/dev/null || exit 0 - -# Without --user, this gave me: -# ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied -pip3 install s3cmd --user -S3CMD="$HOME/.local/bin/s3cmd" - -# Refresh this with `ssh-keyscan github.com` from a trusted Internet connection. -# We hard code the public key here to detect man-in-the-middle attacks. -echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts - -# We don't want the .git folder inside the tarball. -rm -rf .git - -cd "$HOME" -wget "https://ziglang.org/builds/$NATIVE_TARBALL" -tar xf "$NATIVE_TARBALL" -ZIGDIR="$(pwd)/$(basename $NATIVE_TARBALL .tar.xz)" -ZIG="$ZIGDIR/zig" -LANGREF="$ZIGDIR/doc/langref.html" -SRCTARBALLDIR="zig-$VERSION" -export SRC_TARBALL="$SRCTARBALLDIR.tar.xz" -mv "$SRCDIR" "$SRCTARBALLDIR" -tar cfJ "$SRC_TARBALL" "$SRCTARBALLDIR" -export SRC_SHASUM=$(sha256sum $SRC_TARBALL | cut '-d ' -f1) -export SRC_BYTESIZE=$(wc -c < $SRC_TARBALL) - -X86_64_WINDOWS_JSON=$(curl --fail "$X86_64_WINDOWS_JSON_URL" || exit 1) -export X86_64_WINDOWS_TARBALL="$(echo "$X86_64_WINDOWS_JSON" | jq .tarball -r)" -export X86_64_WINDOWS_BYTESIZE="$(echo "$X86_64_WINDOWS_JSON" | jq .size -r)" -export X86_64_WINDOWS_SHASUM="$(echo "$X86_64_WINDOWS_JSON" | jq .shasum -r)" - -AARCH64_MACOS_JSON=$(curl --fail "$AARCH64_MACOS_JSON_URL" || exit 1) -export AARCH64_MACOS_TARBALL="$(echo "$AARCH64_MACOS_JSON" | jq .tarball -r)" -export AARCH64_MACOS_BYTESIZE="$(echo "$AARCH64_MACOS_JSON" | jq .size -r)" -export AARCH64_MACOS_SHASUM="$(echo "$AARCH64_MACOS_JSON" | jq .shasum -r)" - -X86_64_MACOS_JSON=$(curl --fail "$X86_64_MACOS_JSON_URL" || exit 1) -export X86_64_MACOS_TARBALL="$(echo "$X86_64_MACOS_JSON" | jq .tarball -r)" -export X86_64_MACOS_BYTESIZE="$(echo "$X86_64_MACOS_JSON" | jq .size -r)" -export X86_64_MACOS_SHASUM="$(echo "$X86_64_MACOS_JSON" | jq .shasum -r)" - -X86_64_LINUX_JSON=$(curl --fail "$X86_64_LINUX_JSON_URL" || exit 1) -export X86_64_LINUX_TARBALL="$(echo "$X86_64_LINUX_JSON" | jq .tarball -r)" -export X86_64_LINUX_BYTESIZE="$(echo "$X86_64_LINUX_JSON" | jq .size -r)" -export X86_64_LINUX_SHASUM="$(echo "$X86_64_LINUX_JSON" | jq .shasum -r)" - -#AARCH64_LINUX_JSON=$(curl --fail "$AARCH64_LINUX_JSON_URL" || exit 1) -#export AARCH64_LINUX_TARBALL="$(echo "$AARCH64_LINUX_JSON" | jq .tarball -r)" -#export AARCH64_LINUX_BYTESIZE="$(echo "$AARCH64_LINUX_JSON" | jq .size -r)" -#export AARCH64_LINUX_SHASUM="$(echo "$AARCH64_LINUX_JSON" | jq .shasum -r)" - -X86_64_FREEBSD_JSON=$(curl --fail "$X86_64_FREEBSD_JSON_URL" || exit 1) -export X86_64_FREEBSD_TARBALL="$(echo "$X86_64_FREEBSD_JSON" | jq .tarball -r)" -export X86_64_FREEBSD_BYTESIZE="$(echo "$X86_64_FREEBSD_JSON" | jq .size -r)" -export X86_64_FREEBSD_SHASUM="$(echo "$X86_64_FREEBSD_JSON" | jq .shasum -r)" - -#X86_64_NETBSD_JSON=$(curl --fail "$X86_64_NETBSD_JSON_URL" || exit 1) -#export X86_64_NETBSD_TARBALL="$(echo "$X86_64_NETBSD_JSON" | jq .tarball -r)" -#export X86_64_NETBSD_BYTESIZE="$(echo "$X86_64_NETBSD_JSON" | jq .size -r)" -#export X86_64_NETBSD_SHASUM="$(echo "$X86_64_NETBSD_JSON" | jq .shasum -r)" - -export MASTER_DATE="$(date +%Y-%m-%d)" -export MASTER_VERSION="$VERSION" - -# Create index.json and update the website repo. -cd "$SRCTARBALLDIR/ci/srht" -"$ZIG" run update-download-page.zig -CIDIR="$(pwd)" - -cd "$HOME" - -# Update autodocs and langref directly to S3 in order to prevent the -# www.ziglang.org git repo from growing too big. - -# Please do not edit this script to pre-compress the artifacts before they hit -# S3. This prevents the website from working on browsers that do not support gzip -# encoding. Cloudfront will automatically compress files if they are less than -# 9.5 MiB, and the client advertises itself as capable of decompressing. -# The data.js file is currently 16 MiB. In order to fix this problem, we need to do -# one of the following things: -# * Reduce the size of data.js to less than 9.5 MiB. -# * Figure out how to adjust the Cloudfront settings to increase the max size for -# auto-compressed objects. -# * Migrate to fastly. -$S3CMD put -P --no-mime-magic \ - --add-header="Cache-Control: max-age=0, must-revalidate" \ - "$LANGREF" s3://ziglang.org/documentation/master/index.html - -$S3CMD put -P --no-mime-magic \ - --add-header="Cache-Control: max-age=0, must-revalidate" \ - "$ZIGDIR/doc/std/index.html" s3://ziglang.org/documentation/master/std/index.html - -$S3CMD put -P --no-mime-magic \ - --add-header="Cache-Control: max-age=0, must-revalidate" \ - "$ZIGDIR/doc/std/main.js" s3://ziglang.org/documentation/master/std/main.js - -$S3CMD put -P --no-mime-magic \ - --add-header="Cache-Control: max-age=0, must-revalidate" \ - "$ZIGDIR/doc/std/data.js" s3://ziglang.org/documentation/master/std/data.js - -$S3CMD put -P --no-mime-magic --recursive \ - --add-header="Cache-Control: max-age=0, must-revalidate" \ - -m "text/html" \ - "$ZIGDIR/doc/std/src/" s3://ziglang.org/documentation/master/std/src/ - -$S3CMD put -P --no-mime-magic \ - --add-header="cache-control: public, max-age=31536000, immutable" \ - "$HOME/$SRC_TARBALL" s3://ziglang.org/builds/ - -git clone --depth 1 git@github.com:ziglang/www.ziglang.org.git -cd www.ziglang.org -WWWDIR="$(pwd)" -# This is the user when pushing to the website repo. -git config user.email "ziggy@ziglang.org" -git config user.name "Ziggy" - - -cd "$WWWDIR" -cp "$CIDIR/out/index.json" data/releases.json -git add data/releases.json -git commit -m "CI: update releases" -git push origin master diff --git a/ci/zinc/build_aarch64_macos b/ci/zinc/build_aarch64_macos deleted file mode 100755 index 00a1a8f971..0000000000 --- a/ci/zinc/build_aarch64_macos +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -set -x -set -e - -RELEASE_STAGING="$DRONE_WORKSPACE/_release/staging" -TARGET="aarch64-macos-none" -MCPU="apple_a14" -INSTALL_PREFIX="$DRONE_WORKSPACE/$TARGET" -SEARCH_PREFIX="/deps/$TARGET" - -"$RELEASE_STAGING/bin/zig" build \ - --prefix "$INSTALL_PREFIX" \ - --search-prefix "$SEARCH_PREFIX" \ - -Dstatic-llvm \ - -Drelease \ - -Dstrip \ - -Dtarget="$TARGET" \ - -Dcpu="$MCPU" \ - -Denable-stage1 diff --git a/ci/zinc/configure_git b/ci/zinc/configure_git deleted file mode 100755 index 146eafe601..0000000000 --- a/ci/zinc/configure_git +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -x -set -e - -# Make the `zig version` number consistent. -# This will affect the cmake commands that follow. -# This is in its own script because git does not support this command -# being run concurrently with itself. -git config core.abbrev 9 diff --git a/ci/zinc/drone.yml b/ci/zinc/drone.yml deleted file mode 100644 index b16d24a2d0..0000000000 --- a/ci/zinc/drone.yml +++ /dev/null @@ -1,96 +0,0 @@ ---- -kind: pipeline -type: docker -name: x86_64-linux -platform: - os: linux - arch: amd64 -workspace: - path: /workspace - -steps: -- name: configure_git - image: ci/debian-amd64:11.1-12 - commands: - - ./ci/zinc/configure_git - -- name: test_stage3_debug - depends_on: - - configure_git - image: ci/debian-amd64:11.1-12 - commands: - - ./ci/zinc/linux_test_stage3_debug - -- name: test_stage3_release - depends_on: - - configure_git - image: ci/debian-amd64:11.1-12 - commands: - - ./ci/zinc/linux_test_stage3_release - -- name: build_aarch64_macos - depends_on: - - test_stage3_release - image: ci/debian-amd64:11.1-12 - commands: - - ./ci/zinc/build_aarch64_macos - -- name: test_determinism - depends_on: - - test_stage3_release - image: ci/debian-amd64:11.1-12 - commands: - - ./ci/zinc/linux_test_determinism - -- name: linux_package - depends_on: - - test_stage3_debug - - test_stage3_release - - test_determinism - when: - branch: - - master - event: - - push - image: ci/debian-amd64:11.1-12 - environment: - AWS_ACCESS_KEY_ID: - from_secret: AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY: - from_secret: AWS_SECRET_ACCESS_KEY - commands: - - ./ci/zinc/linux_package - -- name: macos_package - depends_on: - - test_stage3_debug - - build_aarch64_macos - when: - branch: - - master - event: - - push - image: ci/debian-amd64:11.1-12 - environment: - AWS_ACCESS_KEY_ID: - from_secret: AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY: - from_secret: AWS_SECRET_ACCESS_KEY - commands: - - ./ci/zinc/macos_package - -- name: notify_lavahut - depends_on: - - macos_package - - linux_package - when: - branch: - - master - event: - - push - image: ci/debian-amd64:11.1-12 - environment: - SRHT_OAUTH_TOKEN: - from_secret: SRHT_OAUTH_TOKEN - commands: - - ./ci/zinc/notify_lavahut diff --git a/ci/zinc/linux_package b/ci/zinc/linux_package deleted file mode 100755 index 4881b3ee32..0000000000 --- a/ci/zinc/linux_package +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -set -x -set -e - -ARCH="$(uname -m)" -OS="linux" -RELEASE_STAGING="$DRONE_WORKSPACE/_release/staging" -VERSION=$($RELEASE_STAGING/bin/zig version) -BASENAME="zig-$OS-$ARCH-$VERSION" -TARBALL="$BASENAME.tar.xz" - -# This runs concurrently with the macos_package script, so it should not make -# any changes to the filesystem that will cause problems for the other script. - -cp -r "$RELEASE_STAGING" "$BASENAME" - -# Remove the unnecessary bin dir in $prefix/bin/zig -mv $BASENAME/bin/zig $BASENAME/ -rmdir $BASENAME/bin - -# Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig -mv $BASENAME/lib/zig $BASENAME/lib2 -rmdir $BASENAME/lib -mv $BASENAME/lib2 $BASENAME/lib - -tar cfJ "$TARBALL" "$BASENAME" - -SHASUM=$(sha256sum $TARBALL | cut '-d ' -f1) -BYTESIZE=$(wc -c < $TARBALL) - -MANIFEST="manifest-$TARGET.json" -touch $MANIFEST -echo "{\"tarball\": \"$TARBALL\"," >>$MANIFEST -echo "\"shasum\": \"$SHASUM\"," >>$MANIFEST -echo "\"size\": \"$BYTESIZE\"}" >>$MANIFEST - -# Publish artifact. -s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/ - -# Publish manifest. -s3cmd put -P --add-header="cache-control: max-age=0, must-revalidate" "$MANIFEST" "s3://ziglang.org/builds/$ARCH-$OS-$VERSION.json" - -# Explicit exit helps show last command duration. -exit diff --git a/ci/zinc/linux_test_determinism b/ci/zinc/linux_test_determinism deleted file mode 100755 index b45cd0ecfc..0000000000 --- a/ci/zinc/linux_test_determinism +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -set -x -set -e - -DEPS_LOCAL="/deps/local" -ZIG_PREFIX="$DRONE_WORKSPACE/_release/staging" -VERSION=$($ZIG_PREFIX/bin/zig version) - -"$ZIG_PREFIX/bin/zig" build \ - --prefix stage4 \ - -Dconfig_h="build-release/config.h" \ - -Denable-llvm \ - -Denable-stage1 \ - -Dno-lib \ - -Drelease \ - -Dstrip \ - -Dtarget=x86_64-linux-musl \ - -Duse-zig-libcxx \ - -Dversion-string="$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 "$ZIG_PREFIX/bin/zig" "stage4/bin/zig" - -# Explicit exit helps show last command duration. -exit diff --git a/ci/zinc/linux_test_stage3_release b/ci/zinc/linux_test_stage3_release deleted file mode 100755 index 327c9ab081..0000000000 --- a/ci/zinc/linux_test_stage3_release +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -set -x -set -e - -ARCH="$(uname -m)" -DEPS_LOCAL="/deps/local" -RELEASE_STAGING="$DRONE_WORKSPACE/_release/staging" -OLD_ZIG="$DEPS_LOCAL/bin/zig" -TARGET="${ARCH}-linux-musl" -MCPU="baseline" - -export PATH=$DEPS_LOCAL/bin:$PATH - -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-release -cd build-release -cmake .. \ - -DCMAKE_INSTALL_PREFIX="$RELEASE_STAGING" \ - -DCMAKE_PREFIX_PATH="$DEPS_LOCAL" \ - -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 - -"$RELEASE_STAGING/bin/zig" build test docs \ - -fqemu \ - -fwasmtime \ - -Dstatic-llvm \ - -Dtarget=native-native-musl \ - --search-prefix "$DEPS_LOCAL" \ - --zig-lib-dir "$(pwd)/../lib" - -# Produce the experimental std lib documentation. -mkdir -p "$RELEASE_STAGING/doc/std" -"$RELEASE_STAGING/bin/zig" test ../lib/std/std.zig \ - -femit-docs=$RELEASE_STAGING/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 diff --git a/ci/zinc/macos_package b/ci/zinc/macos_package deleted file mode 100755 index 136dbc91fb..0000000000 --- a/ci/zinc/macos_package +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh - -set -x -set -e - -ARCH="aarch64" -OS=macos -ZIG_PREFIX="$DRONE_WORKSPACE/_release/staging" -VERSION=$($ZIG_PREFIX/bin/zig version) -TARGET="$ARCH-$OS-none" -INSTALL_PREFIX="$DRONE_WORKSPACE/$TARGET" -BASENAME="zig-$OS-$ARCH-$VERSION" -TARBALL="$BASENAME.tar.xz" - -# This runs concurrently with the linux_package script, so it should not make -# any changes to the filesystem that will cause problems for the other script. - -# Remove the unnecessary bin dir in $prefix/bin/zig -mv $INSTALL_PREFIX/bin/zig $INSTALL_PREFIX/ -rmdir $INSTALL_PREFIX/bin - -# Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig -mv $INSTALL_PREFIX/lib/zig $INSTALL_PREFIX/lib2 -rmdir $INSTALL_PREFIX/lib -mv $INSTALL_PREFIX/lib2 $INSTALL_PREFIX/lib - -cp -r "$ZIG_PREFIX/doc" "$INSTALL_PREFIX/" -cp "$ZIG_PREFIX/LICENSE" "$INSTALL_PREFIX/" - -mv "$INSTALL_PREFIX" "$BASENAME" -tar cfJ "$TARBALL" "$BASENAME" - -SHASUM=$(sha256sum $TARBALL | cut '-d ' -f1) -BYTESIZE=$(wc -c < $TARBALL) - -MANIFEST="manifest-$TARGET.json" -touch $MANIFEST -echo "{\"tarball\": \"$TARBALL\"," >>$MANIFEST -echo "\"shasum\": \"$SHASUM\"," >>$MANIFEST -echo "\"size\": \"$BYTESIZE\"}" >>$MANIFEST - -# Publish artifact. -s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/ - -# Publish manifest. -s3cmd put -P --add-header="cache-control: max-age=0, must-revalidate" "$MANIFEST" "s3://ziglang.org/builds/$ARCH-$OS-$VERSION.json" - -# Explicit exit helps show last command duration. -exit diff --git a/ci/zinc/notify_lavahut b/ci/zinc/notify_lavahut deleted file mode 100755 index 4306e5ae69..0000000000 --- a/ci/zinc/notify_lavahut +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -set +x # Avoid leaking oauth token. -set -e - -ZIG_PREFIX="$DRONE_WORKSPACE/_release/staging" -VERSION=$($ZIG_PREFIX/bin/zig version) -cd $DRONE_WORKSPACE -./ci/srht/on_master_success "$VERSION" "$SRHT_OAUTH_TOKEN"