mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 15:42:49 +00:00
5001faa690
Each of the 3 CI services now trigger a sr.ht build via the on_master_success script. The sr.ht build checks if all builds have completed successfully by trying to download the JSON file for the particular version. If all builds have completed successfully then this sr.ht job will update the download page.
116 lines
3.5 KiB
Bash
Executable File
116 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -x
|
|
set -e
|
|
|
|
system_profiler SPHardwareDataType
|
|
|
|
brew install s3cmd gcc@8
|
|
|
|
ZIGDIR="$(pwd)"
|
|
CACHE_BASENAME="llvm+clang-9.0.0-macos-x86_64-gcc8-release"
|
|
PREFIX="$HOME/$CACHE_BASENAME"
|
|
TMPDIR="$HOME/tmpz"
|
|
JOBS="-j2"
|
|
|
|
# I tried using the system default compiler (clang), but it couldn't statically link libc++.
|
|
# So we use gcc-8 from homebrew.
|
|
export CC=gcc-8
|
|
export CXX=g++-8
|
|
|
|
rm -rf $PREFIX
|
|
rm -rf $TMPDIR
|
|
mkdir $TMPDIR
|
|
|
|
cd $HOME
|
|
HAVE_CACHE="true"
|
|
wget -nv "https://ziglang.org/builds/$CACHE_BASENAME.tar.xz" || HAVE_CACHE="false"
|
|
if [ "${HAVE_CACHE}" = "true" ]; then
|
|
tar xf "$CACHE_BASENAME.tar.xz"
|
|
else
|
|
if [ "${BUILD_REASON}" == "PullRequest" ]; then
|
|
echo "Need cached llvm+clang for pull request builds."
|
|
exit 1
|
|
fi
|
|
|
|
cd $TMPDIR
|
|
wget https://zlib.net/zlib-1.2.11.tar.xz
|
|
tar xf zlib-1.2.11.tar.xz
|
|
cd zlib-1.2.11/
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=$PREFIX
|
|
make $JOBS install
|
|
rm $PREFIX/lib/libz*dylib
|
|
|
|
cd $TMPDIR
|
|
wget https://releases.llvm.org/9.0.0/llvm-9.0.0.src.tar.xz
|
|
tar xf llvm-9.0.0.src.tar.xz
|
|
cd llvm-9.0.0.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/9.0.0/cfe-9.0.0.src.tar.xz
|
|
tar xf cfe-9.0.0.src.tar.xz
|
|
cd cfe-9.0.0.src/
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Release
|
|
make $JOBS install
|
|
|
|
cd $HOME
|
|
tar cfJ "$CACHE_BASENAME.tar.xz" "$CACHE_BASENAME"
|
|
cp "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg"
|
|
s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$CACHE_BASENAME.tar.xz" "s3://ziglang.org/builds/$CACHE_BASENAME.tar.xz"
|
|
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
|
|
make $JOBS install
|
|
release/bin/zig build test
|
|
|
|
if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
|
mv ../LICENSE release/
|
|
mv ../zig-cache/langref.html release/
|
|
mv release/bin/zig release/
|
|
rmdir release/bin
|
|
|
|
VERSION=$(release/zig version)
|
|
DIRNAME="zig-macos-x86_64-$VERSION"
|
|
TARBALL="$DIRNAME.tar.xz"
|
|
mv 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/x86_64-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"
|
|
fi
|