| ... | ... | @@ -0,0 +1,162 @@ |
| 1 | #!/bin/sh |
| 2 | |
| 3 | set -x |
| 4 | set -e |
| 5 | |
| 6 | # Probe CPU/brand details. |
| 7 | echo "lscpu:" |
| 8 | (lscpu | sed 's,^, : ,') 1>&2 |
| 9 | |
| 10 | pwd |
| 11 | (env | sort | sed 's,^, : ,') 1>&2 |
| 12 | |
| 13 | WORKSPACE="$DRONE_WORKSPACE" |
| 14 | LOCAL="/deps/local" |
| 15 | ZIG="$LOCAL/bin/zig" |
| 16 | ARCH="$(uname -m)" |
| 17 | TARGET="${ARCH}-linux-musl" |
| 18 | MCPU="baseline" |
| 19 | JOBS="-j$(nproc)" |
| 20 | export PATH=/deps/local/bin:$PATH |
| 21 | |
| 22 | # Make the `zig version` number consistent. |
| 23 | # This will affect the cmake command below. |
| 24 | git config core.abbrev 9 |
| 25 | |
| 26 | # Build debug zig. |
| 27 | echo "BUILD debug zig with zig:$($ZIG version)" |
| 28 | |
| 29 | export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" |
| 30 | export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" |
| 31 | |
| 32 | mkdir _debug |
| 33 | cd _debug |
| 34 | cmake .. \ |
| 35 | -DCMAKE_INSTALL_PREFIX="$(pwd)/staging" \ |
| 36 | -DCMAKE_PREFIX_PATH="$LOCAL" \ |
| 37 | -DCMAKE_BUILD_TYPE=Debug \ |
| 38 | -DZIG_TARGET_TRIPLE="$TARGET" \ |
| 39 | -DZIG_TARGET_MCPU="$MCPU" \ |
| 40 | -DZIG_STATIC=ON \ |
| 41 | -GNinja |
| 42 | |
| 43 | # Now cmake will use zig as the C/C++ compiler. We reset the environment variables |
| 44 | # so that installation and testing do not get affected by them. |
| 45 | unset CC |
| 46 | unset CXX |
| 47 | |
| 48 | ninja $JOBS install |
| 49 | |
| 50 | ZIG=$(pwd)/staging/bin/zig |
| 51 | |
| 52 | # Here we rebuild zig but this time using the Zig binary we just now produced to |
| 53 | # build zig1.o rather than relying on the one built with stage0. See |
| 54 | # https://github.com/ziglang/zig/issues/6830 for more details. |
| 55 | cmake .. -DZIG_EXECUTABLE="$ZIG" |
| 56 | ninja $JOBS install |
| 57 | |
| 58 | cd $WORKSPACE |
| 59 | |
| 60 | # Build release zig. |
| 61 | echo "BUILD release zig with zig:$($ZIG version)" |
| 62 | echo "zig version: $($ZIG version)" |
| 63 | export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" |
| 64 | export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" |
| 65 | mkdir _release |
| 66 | cd _release |
| 67 | cmake .. \ |
| 68 | -DCMAKE_INSTALL_PREFIX="$(pwd)/staging" \ |
| 69 | -DCMAKE_PREFIX_PATH="$LOCAL" \ |
| 70 | -DCMAKE_BUILD_TYPE=Release \ |
| 71 | -DZIG_TARGET_TRIPLE="$TARGET" \ |
| 72 | -DZIG_TARGET_MCPU="$MCPU" \ |
| 73 | -DZIG_STATIC=ON \ |
| 74 | -GNinja |
| 75 | unset CC |
| 76 | unset CXX |
| 77 | ninja $JOBS install |
| 78 | |
| 79 | cd $WORKSPACE |
| 80 | |
| 81 | # Look for non-conforming code formatting. |
| 82 | # Formatting errors can be fixed by running `zig fmt` on the files printed here. |
| 83 | $ZIG fmt --check . |
| 84 | |
| 85 | $ZIG test test/behavior.zig -fno-stage1 -fLLVM -I test |
| 86 | |
| 87 | $ZIG build test-behavior -Denable-qemu -Denable-wasmtime |
| 88 | $ZIG build test-compiler-rt -Denable-qemu -Denable-wasmtime |
| 89 | $ZIG build test-std -Denable-qemu -Denable-wasmtime |
| 90 | $ZIG build test-minilibc -Denable-qemu -Denable-wasmtime |
| 91 | $ZIG build test-compare-output -Denable-qemu -Denable-wasmtime |
| 92 | $ZIG build test-standalone -Denable-qemu -Denable-wasmtime |
| 93 | $ZIG build test-stack-traces -Denable-qemu -Denable-wasmtime |
| 94 | $ZIG build test-cli -Denable-qemu -Denable-wasmtime |
| 95 | $ZIG build test-asm-link -Denable-qemu -Denable-wasmtime |
| 96 | $ZIG build test-runtime-safety -Denable-qemu -Denable-wasmtime |
| 97 | $ZIG build test-translate-c -Denable-qemu -Denable-wasmtime |
| 98 | $ZIG build test-run-translated-c -Denable-qemu -Denable-wasmtime |
| 99 | $ZIG build docs -Denable-qemu -Denable-wasmtime |
| 100 | $ZIG build # test building self-hosted without LLVM |
| 101 | $ZIG build test-fmt -Denable-qemu -Denable-wasmtime |
| 102 | $ZIG build test-stage2 -Denable-qemu -Denable-wasmtime |
| 103 | |
| 104 | # Look for HTML errors. |
| 105 | tidy --drop-empty-elements no -qe zig-cache/langref.html |
| 106 | |
| 107 | # The remainder of this script is for master branch only. |
| 108 | if [ -n "$DRONE_PULL_REQUEST" ]; then |
| 109 | exit 0 |
| 110 | fi |
| 111 | |
| 112 | STAGING=_release/staging |
| 113 | |
| 114 | # Produce the experimental std lib documentation. |
| 115 | mkdir -p $STAGING/docs/std |
| 116 | $ZIG test lib/std/std.zig \ |
| 117 | --zig-lib-dir lib \ |
| 118 | -femit-docs=$STAGING/docs/std \ |
| 119 | -fno-emit-bin |
| 120 | |
| 121 | cp LICENSE $STAGING/ |
| 122 | cp zig-cache/langref.html $STAGING/docs/ |
| 123 | |
| 124 | # Remove the unnecessary bin dir in $prefix/bin/zig |
| 125 | mv $STAGING/bin/zig $STAGING/ |
| 126 | rmdir $STAGING/bin |
| 127 | |
| 128 | # Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig |
| 129 | mv $STAGING/lib/zig $STAGING/lib2 |
| 130 | rmdir $STAGING/lib |
| 131 | mv $STAGING/lib2 $STAGING/lib |
| 132 | |
| 133 | VERSION=$($STAGING/zig version) |
| 134 | BASENAME="zig-linux-$ARCH-$VERSION" |
| 135 | TARBALL="${BASENAME}.tar.xz" |
| 136 | mv "$STAGING" "$BASENAME" |
| 137 | tar cfJ "$TARBALL" "$BASENAME" |
| 138 | ls -l "$TARBALL" |
| 139 | |
| 140 | # TODO: push artifact/meta somewhere |
| 141 | ## mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg" |
| 142 | ## s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/ |
| 143 | ## |
| 144 | ## SHASUM=$(sha256sum $TARBALL | cut '-d ' -f1) |
| 145 | ## BYTESIZE=$(wc -c < $TARBALL) |
| 146 | ## |
| 147 | ## JSONFILE="linux-$GITBRANCH.json" |
| 148 | ## touch $JSONFILE |
| 149 | ## echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE |
| 150 | ## echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE |
| 151 | ## echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE |
| 152 | ## |
| 153 | ## s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE" |
| 154 | ## s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/$ARCH-linux-$VERSION.json" |
| 155 | ## |
| 156 | ## # `set -x` causes these variables to be mangled. |
| 157 | ## # See https://developercommunity.visualstudio.com/content/problem/375679/pipeline-variable-incorrectly-inserts-single-quote.html |
| 158 | ## set +x |
| 159 | ## echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL" |
| 160 | ## echo "##vso[task.setvariable variable=shasum;isOutput=true]$SHASUM" |
| 161 | ## echo "##vso[task.setvariable variable=bytesize;isOutput=true]$BYTESIZE" |
| 162 | ## echo "##vso[task.setvariable variable=version;isOutput=true]$VERSION" |