From c28b227d0b70a6bb37bf9b3e5bc40040ff495be1 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 11 Jun 2021 02:43:58 -0300 Subject: [PATCH] ci: add scripts for netbsd --- .builds/netbsd.yml | 8 ++++ ci/srht/netbsd_script | 92 ++++++++++++++++++++++++++++++++++++ ci/srht/update_download_page | 7 +++ 3 files changed, 107 insertions(+) create mode 100644 .builds/netbsd.yml create mode 100755 ci/srht/netbsd_script diff --git a/.builds/netbsd.yml b/.builds/netbsd.yml new file mode 100644 index 0000000000..69395b5e05 --- /dev/null +++ b/.builds/netbsd.yml @@ -0,0 +1,8 @@ +image: netbsd/latest +secrets: + - 51bfddf5-86a6-4e01-8576-358c72a4a0a4 + - 5cfede76-914e-4071-893e-e5e2e6ae3cea +sources: + - https://github.com/ziglang/zig +tasks: + - build: cd zig && ./ci/srht/netbsd_script diff --git a/ci/srht/netbsd_script b/ci/srht/netbsd_script new file mode 100755 index 0000000000..508da4b324 --- /dev/null +++ b/ci/srht/netbsd_script @@ -0,0 +1,92 @@ +#!/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 + +# Here we skip some tests to save time. +release/bin/zig build test -Dskip-compile-errors -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/update_download_page b/ci/srht/update_download_page index ebdb3ed6b0..94fd86fce2 100755 --- a/ci/srht/update_download_page +++ b/ci/srht/update_download_page @@ -15,6 +15,7 @@ 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. @@ -24,6 +25,7 @@ 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 @@ -84,6 +86,11 @@ 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"