
This is supposed to work, but there was no CI check. Add it to make sure it continues to work.
127 строки
4,1 КиБ
YAML
127 строки
4,1 КиБ
YAML
name: macOS
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- dev
|
|
- release
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-macos:
|
|
name: build-macos
|
|
runs-on: macos-11
|
|
steps:
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '1.18.1'
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install qemu binaryen
|
|
- 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-14-macos-v1
|
|
path: |
|
|
llvm-project/clang/lib/Headers
|
|
llvm-project/clang/include
|
|
llvm-project/compiler-rt
|
|
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-14-macos-v1
|
|
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-v4
|
|
path: lib/wasi-libc/sysroot
|
|
- name: Build wasi-libc
|
|
if: steps.cache-wasi-libc.outputs.cache-hit != 'true'
|
|
run: make wasi-libc
|
|
- name: Test TinyGo
|
|
shell: bash
|
|
run: make test GOTESTFLAGS="-v -short"
|
|
- name: Build TinyGo release tarball
|
|
run: make release -j3
|
|
- name: Test stdlib packages
|
|
run: make tinygo-test
|
|
- 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=$(PWD)/build/tinygo AVR=0
|
|
test-macos-homebrew:
|
|
name: homebrew-install
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '1.18'
|
|
- name: Install LLVM
|
|
shell: bash
|
|
run: |
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install llvm@14
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Cache Go
|
|
uses: actions/cache@v2
|
|
with:
|
|
key: go-cache-macos-homebrew-v1-${{ hashFiles('go.mod') }}
|
|
path: |
|
|
~/Library/Caches/go-build
|
|
~/go/pkg/mod
|
|
- name: Build TinyGo
|
|
run: go install
|
|
- name: Check binary
|
|
run: tinygo version
|