From 099532af87543eb379c260091701e4e0f38b6797 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 14:09:09 -0400 Subject: [PATCH 1/9] add Drone Cloud CI configuration --- ci/drone/drone.yml | 25 +++++++++++++++++++++ ci/drone/linux_script | 49 ++++++++++++++++++++++++++++++++++++++++++ ci/srht/freebsd_script | 2 +- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 ci/drone/drone.yml create mode 100755 ci/drone/linux_script diff --git a/ci/drone/drone.yml b/ci/drone/drone.yml new file mode 100644 index 0000000000..03df5cad30 --- /dev/null +++ b/ci/drone/drone.yml @@ -0,0 +1,25 @@ +--- +kind: pipeline +name: test-aarch64-linux-gnu + +platform: + arch: arm64 + +steps: +- name: build-and-test + image: alpine:edge + commands: + - ./ci/drone/linux_script aarch64 linux musl + +--- +kind: pipeline +name: test-arm-linux-gnueabihf + +platform: + arch: arm + +steps: +- name: build-and-test + image: alpine:edge + commands: + - ./ci/drone/linux_script arm linux musleabihf diff --git a/ci/drone/linux_script b/ci/drone/linux_script new file mode 100755 index 0000000000..9045b835fd --- /dev/null +++ b/ci/drone/linux_script @@ -0,0 +1,49 @@ +#!/bin/sh + +set -x +set -e + +TRIPLEARCH="$0" +TRIPLEOS="$1" +TRIPLEABI="$2" +BUILDDIR="$(pwd)" +DISTDIR="$(pwd)/dist" + +apk update +apk add gcc g++ cmake make libc-dev binutils libstdc++ py3-pip clang-static llvm9-static xz llvm9-dev clang-dev zlib-static libxml2-dev +pip3 install s3cmd + +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON + +make -j$(nproc) install +./zig build test + +if [ -n "$DRONE_PULL_REQUEST" ]; then + mv ../LICENSE "$DISTDIR/" + mv ../zig-cache/langref.html "$DISTDIR/" + mv "$DISTDIR/bin/zig" "$DISTDIR/" + rmdir "$DISTDIR/bin" + + GITBRANCH="$DRONE_BRANCH" + VERSION=$("$DISTDIR/zig" version) + DIRNAME="zig-$TRIPLEOS-$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-$TRIPLEOS-$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-$TRIPLEOS-$VERSION.json" +fi diff --git a/ci/srht/freebsd_script b/ci/srht/freebsd_script index 7937efeb38..213796f77c 100755 --- a/ci/srht/freebsd_script +++ b/ci/srht/freebsd_script @@ -15,7 +15,7 @@ tar xf "$CACHE_BASENAME.tar.xz" cd $ZIGDIR 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 From 0e9f32d42b277d91af57cdd79f900a75dc7f2956 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 14:36:15 -0400 Subject: [PATCH 2/9] disable static build for now until the docker image is ready --- ci/drone/linux_script | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/drone/linux_script b/ci/drone/linux_script index 9045b835fd..ccf01ccc59 100755 --- a/ci/drone/linux_script +++ b/ci/drone/linux_script @@ -15,7 +15,7 @@ pip3 install s3cmd mkdir build cd build -cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON +cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" make -j$(nproc) install ./zig build test From 79cb383f7d9db3855f2f47b7d05a6900b82863c0 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 17:58:03 -0400 Subject: [PATCH 3/9] fix 32-bit build of translate_c.zig --- src-self-hosted/translate_c.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig index 6a91b8e7bf..a5c4959d08 100644 --- a/src-self-hosted/translate_c.zig +++ b/src-self-hosted/translate_c.zig @@ -1123,7 +1123,7 @@ fn transCreateNodeAPInt(c: *Context, int: ?*const ZigClangAPSInt) !*ast.Node { var big = try std.math.big.Int.initCapacity(c.a(), num_limbs); defer big.deinit(); const data = ZigClangAPSInt_getRawData(int.?); - var i: usize = 0; + var i: @typeOf(num_limbs) = 0; while (i < num_limbs) : (i += 1) big.limbs[i] = data[i]; const str = big.toString(c.a(), 10) catch |err| switch (err) { error.OutOfMemory => return error.OutOfMemory, From 43f5054a90e9f357b38880c7d1c208b96744162e Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 19:04:48 -0400 Subject: [PATCH 4/9] ci: drone tests only aarch64 with docker image --- ci/drone/drone.yml | 19 +++---------------- ci/drone/linux_script | 19 +++++++++---------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/ci/drone/drone.yml b/ci/drone/drone.yml index 03df5cad30..7ab25c9987 100644 --- a/ci/drone/drone.yml +++ b/ci/drone/drone.yml @@ -1,25 +1,12 @@ --- kind: pipeline -name: test-aarch64-linux-gnu +name: test-aarch64-linux-musl platform: arch: arm64 steps: - name: build-and-test - image: alpine:edge + image: ziglang/static-base:llvm9-1 commands: - - ./ci/drone/linux_script aarch64 linux musl - ---- -kind: pipeline -name: test-arm-linux-gnueabihf - -platform: - arch: arm - -steps: -- name: build-and-test - image: alpine:edge - commands: - - ./ci/drone/linux_script arm linux musleabihf + - ./ci/drone/linux_script diff --git a/ci/drone/linux_script b/ci/drone/linux_script index ccf01ccc59..f6dd70eadf 100755 --- a/ci/drone/linux_script +++ b/ci/drone/linux_script @@ -3,22 +3,21 @@ set -x set -e -TRIPLEARCH="$0" -TRIPLEOS="$1" -TRIPLEABI="$2" +TRIPLEARCH="$(uname -m)" BUILDDIR="$(pwd)" DISTDIR="$(pwd)/dist" apk update -apk add gcc g++ cmake make libc-dev binutils libstdc++ py3-pip clang-static llvm9-static xz llvm9-dev clang-dev zlib-static libxml2-dev +apk add py3-pip xz pip3 install s3cmd mkdir build cd build -cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" +cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON -DCMAKE_PREFIX_PATH=/deps/local make -j$(nproc) install -./zig build test +./zig build test-behavior +#./zig build test if [ -n "$DRONE_PULL_REQUEST" ]; then mv ../LICENSE "$DISTDIR/" @@ -27,8 +26,8 @@ if [ -n "$DRONE_PULL_REQUEST" ]; then rmdir "$DISTDIR/bin" GITBRANCH="$DRONE_BRANCH" - VERSION=$("$DISTDIR/zig" version) - DIRNAME="zig-$TRIPLEOS-$TRIPLEARCH-$VERSION" + VERSION="$("$DISTDIR/zig" version)" + DIRNAME="zig-linux-$TRIPLEARCH-$VERSION" TARBALL="$DIRNAME.tar.xz" mv "$DISTDIR" "$DIRNAME" tar cfJ "$TARBALL" "$DIRNAME" @@ -38,12 +37,12 @@ if [ -n "$DRONE_PULL_REQUEST" ]; then SHASUM=$(shasum -a 256 $TARBALL | cut '-d ' -f1) BYTESIZE=$(wc -c < $TARBALL) - JSONFILE="$TRIPLEARCH-$TRIPLEOS-$GITBRANCH.json" + 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-$TRIPLEOS-$VERSION.json" + s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/$TRIPLEARCH-linux-$VERSION.json" fi From 551e70dcb24e113bf690b9939acb3da51f82de0b Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 19:21:03 -0400 Subject: [PATCH 5/9] ci: add s3 secrets to drone config --- ci/drone/drone.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ci/drone/drone.yml b/ci/drone/drone.yml index 7ab25c9987..474f5b6d09 100644 --- a/ci/drone/drone.yml +++ b/ci/drone/drone.yml @@ -8,5 +8,10 @@ platform: steps: - name: build-and-test image: ziglang/static-base:llvm9-1 + environment: + 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 From f6367a07513271a83944f86c8b237427887efeb2 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 20:47:50 -0400 Subject: [PATCH 6/9] ci: build docs, fix PR logic --- ci/drone/linux_script | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ci/drone/linux_script b/ci/drone/linux_script index f6dd70eadf..4872c85865 100755 --- a/ci/drone/linux_script +++ b/ci/drone/linux_script @@ -16,10 +16,13 @@ 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-behavior +# TODO disabled temporarily to test the CI +#./zig build test-behavior +./zig build docs +# TODO full test suite: #./zig build test -if [ -n "$DRONE_PULL_REQUEST" ]; then +if [ -z "$DRONE_PULL_REQUEST" ]; then mv ../LICENSE "$DISTDIR/" mv ../zig-cache/langref.html "$DISTDIR/" mv "$DISTDIR/bin/zig" "$DISTDIR/" From 55c282ed51361b54fbcd6d240467d31013817c6d Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 21:13:05 -0400 Subject: [PATCH 7/9] os.dup2: handle EBAF --- lib/std/os.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/std/os.zig b/lib/std/os.zig index d239f198f4..a1fe051997 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -663,7 +663,8 @@ pub fn dup2(old_fd: fd_t, new_fd: fd_t) !void { 0 => return, EBUSY, EINTR => continue, EMFILE => return error.ProcessFdQuotaExceeded, - EINVAL => unreachable, + EINVAL => unreachable, // invalid parameters passed to dup2 + EBADF => unreachable, // always a race condition else => |err| return unexpectedErrno(err), } } From bf5be65be69cc0ffb23bfd211aa6880aad03d2b6 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 21:13:47 -0400 Subject: [PATCH 8/9] disable not working stuff --- ci/drone/linux_script | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ci/drone/linux_script b/ci/drone/linux_script index 4872c85865..c7f0d6f124 100755 --- a/ci/drone/linux_script +++ b/ci/drone/linux_script @@ -18,13 +18,15 @@ cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STAT make -j$(nproc) install # TODO disabled temporarily to test the CI #./zig build test-behavior -./zig build docs +# TODO figure out why running docs is causing EBADF on dup2 in the child +# ./zig build docs # TODO full test suite: #./zig build test if [ -z "$DRONE_PULL_REQUEST" ]; then mv ../LICENSE "$DISTDIR/" - mv ../zig-cache/langref.html "$DISTDIR/" + # TODO uncomment when the docs are generated + # mv ../zig-cache/langref.html "$DISTDIR/" mv "$DISTDIR/bin/zig" "$DISTDIR/" rmdir "$DISTDIR/bin" From 6eba65bd7f4af9187667bbd1b1d948bcbeafe03f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 24 Oct 2019 21:40:26 -0400 Subject: [PATCH 9/9] ci: add aarch64 to download page --- ci/azure/update_download_page | 6 ++++++ ci/drone/linux_script | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ci/azure/update_download_page b/ci/azure/update_download_page index c6a690e8e6..92df66edfb 100755 --- a/ci/azure/update_download_page +++ b/ci/azure/update_download_page @@ -22,6 +22,12 @@ tar cfJ "$SRC_TARBALL" "$SRCTARBALLDIR" export SRC_SHASUM=$(sha256sum $SRC_TARBALL | cut '-d ' -f1) export SRC_BYTESIZE=$(wc -c < $SRC_TARBALL) +# the aarch64 build has to be there too +AARCH64_LINUX_JSON=$(curl --fail "https://ziglang.org/builds/aarch64-linux-$VERSION.json" || 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)" + # 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)" diff --git a/ci/drone/linux_script b/ci/drone/linux_script index c7f0d6f124..b11fd13de2 100755 --- a/ci/drone/linux_script +++ b/ci/drone/linux_script @@ -8,7 +8,7 @@ BUILDDIR="$(pwd)" DISTDIR="$(pwd)/dist" apk update -apk add py3-pip xz +apk add py3-pip xz perl-utils pip3 install s3cmd mkdir build @@ -16,8 +16,7 @@ cd build cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON -DCMAKE_PREFIX_PATH=/deps/local make -j$(nproc) install -# TODO disabled temporarily to test the CI -#./zig build test-behavior +./zig build test-behavior # TODO figure out why running docs is causing EBADF on dup2 in the child # ./zig build docs # TODO full test suite: