diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-01-16 13:01:36 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-01-16 13:01:36 -0500 |
| commit | fbe6af81fdb1b964bb0c28f51de2458800b8274c (patch) | |
| tree | 6d65a49b911ba665a7e2c28c6619d1aa6517a744 /ci | |
| parent | 230d27c1cd00e7adf0ccfca2c8bb73ae1779aa4c (diff) | |
| parent | 7e5e767ba0fdde91dd66690168eff96b75c28e33 (diff) | |
| download | zig-fbe6af81fdb1b964bb0c28f51de2458800b8274c.tar.gz zig-fbe6af81fdb1b964bb0c28f51de2458800b8274c.zip | |
Merge remote-tracking branch 'origin/master' into llvm10
Diffstat (limited to 'ci')
| -rwxr-xr-x | ci/azure/linux_script | 12 | ||||
| -rwxr-xr-x | ci/azure/macos_script | 34 | ||||
| -rwxr-xr-x | ci/azure/on_master_success | 12 | ||||
| -rw-r--r-- | ci/azure/pipelines.yml | 22 | ||||
| -rwxr-xr-x | ci/azure/update_download_page | 41 | ||||
| -rwxr-xr-x | ci/azure/windows_install | 2 | ||||
| -rw-r--r-- | ci/azure/windows_script.bat | 11 | ||||
| -rwxr-xr-x | ci/azure/windows_upload | 2 | ||||
| -rw-r--r-- | ci/drone/drone.yml | 19 | ||||
| -rwxr-xr-x | ci/drone/linux_script | 70 | ||||
| -rwxr-xr-x | ci/srht/freebsd_script | 18 | ||||
| -rwxr-xr-x | ci/srht/on_master_success | 39 | ||||
| -rwxr-xr-x | ci/srht/update_download_page | 79 |
13 files changed, 285 insertions, 76 deletions
diff --git a/ci/azure/linux_script b/ci/azure/linux_script index e12f16f15f..1116099cd7 100755 --- a/ci/azure/linux_script +++ b/ci/azure/linux_script @@ -5,7 +5,7 @@ set -e BUILDDIR="$(pwd)" -sudo sh -c 'echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list' +sudo sh -c 'echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main" >> /etc/apt/sources.list' wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo apt-get update -q @@ -14,6 +14,10 @@ sudo apt-get remove -y llvm-* sudo rm -rf /usr/local/* sudo apt-get install -y libxml2-dev libclang-9-dev llvm-9 llvm-9-dev cmake s3cmd gcc-7 g++-7 qemu +# Make the `zig version` number consistent. +# This will affect the cmake command below. +git config core.abbrev 9 + export CC=gcc-7 export CXX=g++-7 mkdir build @@ -21,11 +25,12 @@ cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j2 install ./zig build test -Denable-qemu +VERSION="$(./zig version)" if [ "${BUILD_REASON}" != "PullRequest" ]; then ARTIFACTSDIR="$BUILDDIR/artifacts" mkdir "$ARTIFACTSDIR" - docker run -i --mount type=bind,source="$ARTIFACTSDIR",target=/z ziglang/static-base:llvm9-1 -j2 $BUILD_SOURCEVERSION + docker run -i --mount type=bind,source="$ARTIFACTSDIR",target=/z ziglang/static-base:llvm9-x86_64 -j2 $BUILD_SOURCEVERSION TARBALL="$(ls $ARTIFACTSDIR)" mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg" s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$ARTIFACTSDIR/$TARBALL" s3://ziglang.org/builds/ @@ -40,7 +45,7 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then 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/linux-$VERSION.json" + s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/x86_64-linux-$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 @@ -48,4 +53,5 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then 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/macos_script b/ci/azure/macos_script index 790b276f00..79eaa0703b 100755 --- a/ci/azure/macos_script +++ b/ci/azure/macos_script @@ -8,7 +8,9 @@ system_profiler SPHardwareDataType brew install s3cmd gcc@8 ZIGDIR="$(pwd)" -CACHE_BASENAME="llvm+clang-10.0.0-macos-x86_64-gcc8-release" +LLVMVER="10.0.0" +ARCH="x86_64" +CACHE_BASENAME="llvm+clang+lld-$LLVMVER-$ARCH-macos-gcc8-release" PREFIX="$HOME/$CACHE_BASENAME" TMPDIR="$HOME/tmpz" JOBS="-j2" @@ -44,18 +46,27 @@ else rm $PREFIX/lib/libz*dylib cd $TMPDIR - wget https://releases.llvm.org/10.0.0/llvm-10.0.0.src.tar.xz - tar xf llvm-10.0.0.src.tar.xz - cd llvm-10.0.0.src/ + wget https://releases.llvm.org/$LLVMVER/llvm-$LLVMVER.src.tar.xz + tar xf llvm-$LLVMVER.src.tar.xz + cd llvm-$LLVMVER.src/ mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Release -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="AVR" -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_ENABLE_TERMINFO=OFF make $JOBS install cd $TMPDIR - wget https://releases.llvm.org/10.0.0/cfe-10.0.0.src.tar.xz - tar xf cfe-10.0.0.src.tar.xz - cd cfe-10.0.0.src/ + wget https://releases.llvm.org/$LLVMVER/cfe-$LLVMVER.src.tar.xz + tar xf cfe-$LLVMVER.src.tar.xz + cd cfe-$LLVMVER.src/ + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Release + make $JOBS install + + cd $TMPDIR + wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVMVER/lld-$LLVMVER.src.tar.xz + tar xf lld-$LLVMVER.src.tar.xz + cd lld-$LLVMVER.src/ mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Release @@ -68,6 +79,11 @@ else fi cd $ZIGDIR + +# Make the `zig version` number consistent. +# This will affect the cmake command below. +git config core.abbrev 9 + mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=$(pwd)/release -DZIG_STATIC=ON @@ -81,7 +97,7 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then rmdir release/bin VERSION=$(release/zig version) - DIRNAME="zig-macos-x86_64-$VERSION" + DIRNAME="zig-macos-$ARCH-$VERSION" TARBALL="$DIRNAME.tar.xz" mv release "$DIRNAME" tar cfJ "$TARBALL" "$DIRNAME" @@ -99,7 +115,7 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then 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/macos-$VERSION.json" + 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 diff --git a/ci/azure/on_master_success b/ci/azure/on_master_success new file mode 100755 index 0000000000..cef618361b --- /dev/null +++ b/ci/azure/on_master_success @@ -0,0 +1,12 @@ +#!/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 index bcc2f11945..5dbfe5a338 100644 --- a/ci/azure/pipelines.yml +++ b/ci/azure/pipelines.yml @@ -14,7 +14,7 @@ jobs: displayName: 'Build and test' - job: BuildLinux pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' timeoutInMinutes: 360 @@ -44,7 +44,7 @@ jobs: - script: ci/azure/windows_script.bat name: main displayName: 'Build and test' -- job: UpdateDownloadPage +- job: OnMasterSuccess dependsOn: - BuildMacOS - BuildLinux @@ -53,20 +53,12 @@ jobs: strategy: maxParallel: 1 pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' variables: - macos_tarball: $[ dependencies.BuildMacOS.outputs['main.tarball'] ] - macos_shasum: $[ dependencies.BuildMacOS.outputs['main.shasum'] ] - macos_bytesize: $[ dependencies.BuildMacOS.outputs['main.bytesize'] ] - linux_tarball: $[ dependencies.BuildLinux.outputs['main.tarball'] ] - linux_shasum: $[ dependencies.BuildLinux.outputs['main.shasum'] ] - linux_bytesize: $[ dependencies.BuildLinux.outputs['main.bytesize'] ] - windows_tarball: $[ dependencies.BuildWindows.outputs['main.tarball'] ] - windows_shasum: $[ dependencies.BuildWindows.outputs['main.shasum'] ] - windows_bytesize: $[ dependencies.BuildWindows.outputs['main.bytesize'] ] + version: $[ dependencies.BuildLinux.outputs['main.version'] ] steps: - task: DownloadSecureFile@1 inputs: - secureFile: s3cfg - - script: ci/azure/update_download_page - displayName: 'Update download page' + secureFile: oauth_token + - script: ci/azure/on_master_success + displayName: 'master branch success hook' diff --git a/ci/azure/update_download_page b/ci/azure/update_download_page deleted file mode 100755 index c6a690e8e6..0000000000 --- a/ci/azure/update_download_page +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh - -set -x -set -e - -SRCDIR=$(pwd) -rm -rf .git -sudo apt-get update -y -sudo apt-get install -y s3cmd curl jq - -cd "$HOME" -wget "https://ziglang.org/builds/$LINUX_TARBALL" -tar xf $LINUX_TARBALL -ZIGDIR=$(basename -s .tar.xz $LINUX_TARBALL) -ZIG="$ZIGDIR/zig" -LANGREF="$ZIGDIR/langref.html" -VERSION=$($ZIG version) -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) - -# the freebsd build has to be there too -FREEBSD_JSON=$(curl --fail "https://ziglang.org/builds/freebsd-$VERSION.json" || exit 1) -export FREEBSD_TARBALL="$(echo "$FREEBSD_JSON" | jq .tarball -r)" -export FREEBSD_BYTESIZE="$(echo "$FREEBSD_JSON" | jq .size -r)" -export FREEBSD_SHASUM="$(echo "$FREEBSD_JSON" | jq .shasum -r)" - -git clone https://github.com/ziglang/www.ziglang.org --depth 1 -cd www.ziglang.org -export MASTER_DATE=$(date +%Y-%m-%d) -env -"../$ZIG" run update-download-page.zig - -mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg" -s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "../$SRC_TARBALL" s3://ziglang.org/builds/ -s3cmd put -P "../$LANGREF" s3://ziglang.org/documentation/master/index.html --add-header="Cache-Control: max-age=0, must-revalidate" -s3cmd put -P www/download/index.html s3://ziglang.org/download/index.html --add-header="Cache-Control: max-age=0, must-revalidate" -s3cmd put -P www/download/index.json s3://ziglang.org/download/index.json --add-header="Cache-Control: max-age=0, must-revalidate" diff --git a/ci/azure/windows_install b/ci/azure/windows_install index 6c2a5442da..6fc1d86c8d 100755 --- a/ci/azure/windows_install +++ b/ci/azure/windows_install @@ -6,5 +6,5 @@ set -e pacman -Su --needed --noconfirm pacman -S --needed --noconfirm wget p7zip python3-pip pip install s3cmd -wget -nv "https://ziglang.org/deps/llvm%2bclang-10.0.0-win64-msvc-release.tar.xz" +wget -nv "https://ziglang.org/deps/llvm%2bclang%2blld-10.0.0-x86_64-windows-msvc-mt.tar.xz" tar xf llvm+clang-10.0.0-win64-msvc-release.tar.xz diff --git a/ci/azure/windows_script.bat b/ci/azure/windows_script.bat index 4db80560c6..d83d2075a1 100644 --- a/ci/azure/windows_script.bat +++ b/ci/azure/windows_script.bat @@ -11,15 +11,18 @@ SET "MSYSTEM=%PREVMSYSTEM%" SET "ZIGBUILDDIR=%SRCROOT%\build" SET "ZIGINSTALLDIR=%ZIGBUILDDIR%\dist" -SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang-10.0.0-win64-msvc-release" +SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-10.0.0-x86_64-windows-msvc-mt" call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 +REM Make the `zig version` number consistent. +REM This will affect the cmake command below. +git.exe config core.abbrev 9 + mkdir %ZIGBUILDDIR% cd %ZIGBUILDDIR% -REM Here we use MinSizeRel instead of Release to work around https://github.com/ziglang/zig/issues/3024 -cmake.exe .. -Thost=x64 -G"Visual Studio 16 2019" -A x64 "-DCMAKE_INSTALL_PREFIX=%ZIGINSTALLDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=MinSizeRel || exit /b -msbuild /p:Configuration=MinSizeRel INSTALL.vcxproj || exit /b +cmake.exe .. -Thost=x64 -G"Visual Studio 16 2019" -A x64 "-DCMAKE_INSTALL_PREFIX=%ZIGINSTALLDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release || exit /b +msbuild /maxcpucount /p:Configuration=Release INSTALL.vcxproj || exit /b "%ZIGINSTALLDIR%\bin\zig.exe" build test || exit /b diff --git a/ci/azure/windows_upload b/ci/azure/windows_upload index d5527fa13a..7ed1b7d1f7 100755 --- a/ci/azure/windows_upload +++ b/ci/azure/windows_upload @@ -30,7 +30,7 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then 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/windows-$VERSION.json" + s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/x86_64-windows-$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 diff --git a/ci/drone/drone.yml b/ci/drone/drone.yml new file mode 100644 index 0000000000..8fff358a93 --- /dev/null +++ b/ci/drone/drone.yml @@ -0,0 +1,19 @@ +--- +kind: pipeline +name: test-aarch64-linux-musl + +platform: + arch: arm64 + +steps: +- name: build-and-test + image: ziglang/static-base:llvm9-1 + environment: + SRHT_OAUTH_TOKEN: + from_secret: SRHT_OAUTH_TOKEN + AWS_ACCESS_KEY_ID: + from_secret: AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: + from_secret: AWS_SECRET_ACCESS_KEY + commands: + - ./ci/drone/linux_script diff --git a/ci/drone/linux_script b/ci/drone/linux_script new file mode 100755 index 0000000000..61a5908dee --- /dev/null +++ b/ci/drone/linux_script @@ -0,0 +1,70 @@ +#!/bin/sh + +set -x +set -e + +TRIPLEARCH="$(uname -m)" +BUILDDIR="$(pwd)" +DISTDIR="$(pwd)/dist" + +apk update +apk add py3-pip xz perl-utils jq curl +pip3 install s3cmd + +# Make the `zig version` number consistent. +# This will affect the cmake command below. +git config core.abbrev 9 + +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON -DCMAKE_PREFIX_PATH=/deps/local + +make -j$(nproc) install +./zig build test-fmt test-behavior test-std test-compiler-rt -Dskip-release -Dskip-non-native +# TODO test-compare-output is hitting https://github.com/ziglang/zig/issues/3526 +./zig build test-standalone test-stack-traces +# TODO test-cli is hitting https://github.com/ziglang/zig/issues/3526 +./zig build test-asm-link test-runtime-safety +# TODO test-translate-c is hitting https://github.com/ziglang/zig/issues/3526 +./zig build test-gen-h +# TODO test-compile-errors is hitting https://github.com/ziglang/zig/issues/3526 +# TODO building docs is hitting https://github.com/ziglang/zig/issues/3526 + +# TODO full test suite: +#./zig build test + +if [ -z "$DRONE_PULL_REQUEST" ]; then + mv ../LICENSE "$DISTDIR/" + # TODO uncomment when the docs are generated + # mv ../zig-cache/langref.html "$DISTDIR/" + mv "$DISTDIR/bin/zig" "$DISTDIR/" + rmdir "$DISTDIR/bin" + + GITBRANCH="$DRONE_BRANCH" + VERSION="$("$DISTDIR/zig" version)" + DIRNAME="zig-linux-$TRIPLEARCH-$VERSION" + TARBALL="$DIRNAME.tar.xz" + mv "$DISTDIR" "$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="$TRIPLEARCH-linux-$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/$TRIPLEARCH-linux-$VERSION.json" + if [ "$GITBRANCH" = "master" ]; then + # avoid leaking oauth token + set +x + + cd "$BUILDDIR" + ./ci/srht/on_master_success "$VERSION" "$SRHT_OAUTH_TOKEN" + fi +fi diff --git a/ci/srht/freebsd_script b/ci/srht/freebsd_script index 2e16ca9173..fbdf8efd8f 100755 --- a/ci/srht/freebsd_script +++ b/ci/srht/freebsd_script @@ -13,9 +13,14 @@ wget -nv "https://ziglang.org/builds/$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 + mkdir build cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=$(pwd)/release -DZIG_STATIC=ON +cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PREFIX "-DCMAKE_INSTALL_PREFIX=$(pwd)/release" -DZIG_STATIC=ON make $JOBS install release/bin/zig build test-fmt @@ -80,5 +85,14 @@ if [ -f ~/.s3cfg ]; then 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/freebsd-$VERSION.json" + 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/on_master_success b/ci/srht/on_master_success new file mode 100755 index 0000000000..c5a01f3bfe --- /dev/null +++ b/ci/srht/on_master_success @@ -0,0 +1,39 @@ +#!/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" + +cat <<EOF >"$YML_FILE" +image: alpine/latest +packages: + - py3-pip + - curl + - jq + - xz +secrets: + - 6c60aaee-92e7-4e7d-812c-114817689b4d +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.sr.ht/api/jobs" diff --git a/ci/srht/update_download_page b/ci/srht/update_download_page new file mode 100755 index 0000000000..1a721bec80 --- /dev/null +++ b/ci/srht/update_download_page @@ -0,0 +1,79 @@ +#!/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" +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" + +# 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 "$X86_64_MACOS_JSON_URL" >/dev/null || exit 0 +curl --fail -I "$X86_64_FREEBSD_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" + +rm -rf .git + +cd "$HOME" +wget "https://ziglang.org/builds/$NATIVE_TARBALL" +tar xf "$NATIVE_TARBALL" +ZIGDIR=$(basename $NATIVE_TARBALL .tar.xz) +ZIG="$ZIGDIR/zig" +LANGREF="$ZIGDIR/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)" + +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)" + +git clone https://github.com/ziglang/www.ziglang.org --depth 1 +cd www.ziglang.org +export MASTER_DATE="$(date +%Y-%m-%d)" +"../$ZIG" run update-download-page.zig + +$S3CMD put -P --no-mime-magic --add-header="cache-control: public, max-age=31536000, immutable" "../$SRC_TARBALL" s3://ziglang.org/builds/ +$S3CMD put -P --no-mime-magic "../$LANGREF" s3://ziglang.org/documentation/master/index.html --add-header="Cache-Control: max-age=0, must-revalidate" +$S3CMD put -P --no-mime-magic www/download/index.html s3://ziglang.org/download/index.html --add-header="Cache-Control: max-age=0, must-revalidate" +$S3CMD put -P --no-mime-magic www/download/index.json s3://ziglang.org/download/index.json --add-header="Cache-Control: max-age=0, must-revalidate" |
