From 72e15af1fa21fc1a8bd60813ac85b14421cadd9e Mon Sep 17 00:00:00 2001 From: deadprogram Date: Tue, 2 Nov 2021 15:32:26 +0100 Subject: [PATCH] ci: use GH action to perform build for macos Signed-off-by: deadprogram --- .circleci/config.yml | 106 ----------------------------- .github/workflows/build-macos.yml | 108 ++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 106 deletions(-) create mode 100644 .github/workflows/build-macos.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index cfcabaa5..d3e1b5de 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -99,104 +99,6 @@ commands: - ~/.cache/go-build - /go/pkg/mod - run: make fmt-check - build-macos: - steps: - - checkout - - submodules - - run: - name: "Install dependencies" - command: | - curl https://dl.google.com/go/go1.17.darwin-amd64.tar.gz -o go1.17.darwin-amd64.tar.gz - sudo tar -C /usr/local -xzf go1.17.darwin-amd64.tar.gz - ln -s /usr/local/go/bin/go /usr/local/bin/go - HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja - - install-xtensa-toolchain: - variant: "macos" - - restore_cache: - keys: - - go-cache-macos-v3-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }} - - go-cache-macos-v3-{{ checksum "go.mod" }} - - restore_cache: - keys: - - llvm-source-13-macos-v1 - - run: - name: "Fetch LLVM source" - command: make llvm-source - - save_cache: - key: llvm-source-13-macos-v1 - paths: - - llvm-project/clang/lib/Headers - - llvm-project/clang/include - - llvm-project/lld/include - - llvm-project/llvm/include - - restore_cache: - keys: - - llvm-build-13-macos-v1 - - run: - name: "Build LLVM" - command: | - if [ ! -f llvm-build/lib/liblldELF.a ] - then - # fetch LLVM source (may only have headers right now) - rm -rf llvm-project - make llvm-source - # build! - make llvm-build - find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \; - fi - - save_cache: - key: llvm-build-13-macos-v1 - paths: - llvm-build - - restore_cache: - keys: - - binaryen-macos-v1 - - run: - name: "Build Binaryen" - command: | - if [ ! -f build/wasm-opt ] - then - make binaryen - fi - - save_cache: - key: binaryen-macos-v1 - paths: - - build/wasm-opt - - restore_cache: - keys: - - wasi-libc-sysroot-macos-v4 - - run: - name: "Build wasi-libc" - command: make wasi-libc - - save_cache: - key: wasi-libc-sysroot-macos-v4 - paths: - - lib/wasi-libc/sysroot - - run: - name: "Test TinyGo" - command: make test GOTESTFLAGS="-v -short" - no_output_timeout: 20m - - run: - name: "Build TinyGo release" - command: | - make release -j3 - cp -p build/release.tar.gz /tmp/tinygo.darwin-amd64.tar.gz - - store_artifacts: - path: /tmp/tinygo.darwin-amd64.tar.gz - - run: - name: "Extract release tarball" - command: | - mkdir -p ~/lib - tar -C /usr/local/opt -xf /tmp/tinygo.darwin-amd64.tar.gz - ln -s /usr/local/opt/tinygo/bin/tinygo /usr/local/bin/tinygo - tinygo version - - run: make tinygo-test - - run: make smoketest AVR=0 - - save_cache: - key: go-cache-macos-v3-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_BUILD_NUM }} - paths: - - ~/.cache/go-build - - /go/pkg/mod jobs: test-llvm11-go115: @@ -211,17 +113,9 @@ jobs: steps: - test-linux: llvm: "12" - build-macos: - macos: - xcode: "11.4.1" # macOS 10.15.4 - steps: - - build-macos - - workflows: test-all: jobs: - test-llvm11-go115 - test-llvm12-go116 - - build-macos diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml new file mode 100644 index 00000000..7b3541cd --- /dev/null +++ b/.github/workflows/build-macos.yml @@ -0,0 +1,108 @@ +name: macOS + +on: + pull_request: + push: + branches: + - dev + - release + +jobs: + build-macos: + name: build-macos + runs-on: macos-10.15 + steps: + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: '1.17' + - name: Install QEMU + shell: bash + run: | + HOMEBREW_NO_AUTO_UPDATE=1 brew install qemu + - name: Install Xtensa toolchain + shell: bash + run: | + curl -L https://github.com/espressif/crosstool-NG/releases/download/esp-2020r2/xtensa-esp32-elf-gcc8_2_0-esp-2020r2-macos.tar.gz -o xtensa-esp32-elf-gcc8_2_0-esp-2020r2-macos.tar.gz + sudo tar -C /usr/local -xf xtensa-esp32-elf-gcc8_2_0-esp-2020r2-macos.tar.gz + sudo ln -s /usr/local/xtensa-esp32-elf/bin/xtensa-esp32-elf-ld /usr/local/bin/xtensa-esp32-elf-ld + rm xtensa-esp32-elf-gcc8_2_0-esp-2020r2-macos.tar.gz + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: true + - name: Cache LLVM source + uses: actions/cache@v2 + id: cache-llvm-source + with: + key: llvm-source-13-macos-v1 + path: | + llvm-project/clang/lib/Headers + llvm-project/clang/include + llvm-project/lld/include + llvm-project/llvm/include + - name: Download LLVM source + if: steps.cache-llvm-source.outputs.cache-hit != 'true' + run: make llvm-source + - name: Cache LLVM build + uses: actions/cache@v2 + id: cache-llvm-build + with: + key: llvm-build-13-macos-v2 + path: llvm-build + - name: Build LLVM + if: steps.cache-llvm-build.outputs.cache-hit != 'true' + shell: bash + run: | + # fetch LLVM source + rm -rf llvm-project + make llvm-source + # install dependencies + HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja + # build! + make llvm-build + find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \; + - name: Cache wasi-libc sysroot + uses: actions/cache@v2 + id: cache-wasi-libc + with: + key: wasi-libc-sysroot-v1 + path: lib/wasi-libc/sysroot + - name: Build wasi-libc + if: steps.cache-wasi-libc.outputs.cache-hit != 'true' + run: make wasi-libc + - name: Cache Binaryen + uses: actions/cache@v2 + id: cache-binaryen + with: + key: binaryen-macos-v1 + path: build/wasm-opt + - name: Build Binaryen + if: steps.cache-binaryen.outputs.cache-hit != 'true' + run: | + # install dependencies + HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja + # build! + make binaryen + - name: Test TinyGo + shell: bash + run: make test GOTESTFLAGS="-v -short" + - name: Build TinyGo release tarball + run: make release -j3 + - name: Make release artifact + shell: bash + run: cp -p build/release.tar.gz build/tinygo.darwin-amd64.tar.gz + - name: Publish release artifact + # Note: this release artifact is double-zipped, see: + # https://github.com/actions/upload-artifact/issues/39 + # We can essentially pick one of these: + # - have a double-zipped artifact when downloaded from the UI + # - have a very slow artifact upload + # We're doing the former here, to keep artifact uploads fast. + uses: actions/upload-artifact@v2 + with: + name: release-double-zipped + path: build/tinygo.darwin-amd64.tar.gz + - name: Smoke tests + shell: bash + run: make smoketest TINYGO=build/tinygo AVR=0