mirror of
https://github.com/ziglang/zig.git
synced 2025-12-10 08:13:07 +00:00
git describe is used for version string creation, but it had to be reverted in commit 69da6ba because it was broken in CI builds. Azure Pipelines and Drone perform shallow clones by default. This change reconfigures them to fetch history and tags. It adds tens of seconds, which is negligible compared to overall build and test time. Related: #6466, #6509, #7601
96 lines
3.1 KiB
Bash
Executable File
96 lines
3.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -x
|
|
set -e
|
|
|
|
# This parameters we wait at most 2mins, it should be enough to sort out any
|
|
# transient error.
|
|
CMD_MAX_RETRY=12
|
|
CMD_WAIT_TIME=10s
|
|
|
|
# Execute the given command and, in case of failure, try to execute it again
|
|
# after sleeping for CMD_WAIT_TIME.
|
|
# We give up after retrying CMD_MAX_RETRY times.
|
|
retry() {
|
|
for i in $(seq 1 "$CMD_MAX_RETRY"); do
|
|
eval "$@" && return
|
|
echo "command \"$@\" failed, retrying..."
|
|
sleep ${CMD_WAIT_TIME}
|
|
done
|
|
|
|
echo "command \"$@\" failed, giving up..."
|
|
exit 1
|
|
}
|
|
|
|
BUILDDIR="$(pwd)"
|
|
|
|
sudo sh -c 'echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main" >> /etc/apt/sources.list'
|
|
retry 'wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -'
|
|
retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
|
|
|
sudo apt-get remove -y llvm-*
|
|
sudo rm -rf /usr/local/*
|
|
|
|
retry sudo apt-get update -q
|
|
retry sudo apt-get install -y \
|
|
libxml2-dev libclang-11-dev llvm-11 llvm-11-dev liblld-11-dev cmake s3cmd \
|
|
gcc-7 g++-7 ninja-build tidy \
|
|
|
|
QEMUBASE="qemu-linux-x86_64-5.2.0"
|
|
wget -nv https://ziglang.org/deps/$QEMUBASE.tar.xz
|
|
tar xf $QEMUBASE.tar.xz
|
|
PATH=$PWD/$QEMUBASE/bin:$PATH
|
|
|
|
WASMTIME="wasmtime-v0.20.0-x86_64-linux"
|
|
wget -nv https://github.com/bytecodealliance/wasmtime/releases/download/v0.20.0/$WASMTIME.tar.xz
|
|
tar xf $WASMTIME.tar.xz
|
|
PATH=$PWD/$WASMTIME:$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=gcc-7
|
|
export CXX=g++-7
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release -GNinja
|
|
ninja install
|
|
./zig build test -Denable-qemu -Denable-wasmtime
|
|
|
|
# look for HTML errors
|
|
tidy -qe ../zig-cache/langref.html
|
|
|
|
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:llvm11-x86_64-1 -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/
|
|
|
|
SHASUM=$(sha256sum $ARTIFACTSDIR/$TARBALL | cut '-d ' -f1)
|
|
BYTESIZE=$(wc -c < $ARTIFACTSDIR/$TARBALL)
|
|
|
|
JSONFILE="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/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
|
|
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
|