circleci: do macOS builds here instead of on Travis CI
This provides several advantages. Among others: * Much faster and hopefully more reliable. * Good caching support to store LLVM builds. * Building and testing of release-ready artifacts.
Этот коммит содержится в:
родитель
38c3d0852e
коммит
2e926789f5
4 изменённых файлов: 91 добавлений и 52 удалений
|
@ -48,17 +48,20 @@ commands:
|
||||||
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
||||||
dep ensure --vendor-only
|
dep ensure --vendor-only
|
||||||
smoketest:
|
smoketest:
|
||||||
|
steps:
|
||||||
|
- smoketest-no-avr
|
||||||
|
- run: tinygo build -size short -o test.elf -target=arduino examples/blinky1
|
||||||
|
- run: tinygo build -size short -o test.elf -target=digispark examples/blinky1
|
||||||
|
smoketest-no-avr:
|
||||||
steps:
|
steps:
|
||||||
- run: tinygo build -size short -o test.elf -target=pca10040 examples/blinky1
|
- run: tinygo build -size short -o test.elf -target=pca10040 examples/blinky1
|
||||||
- run: tinygo build -size short -o test.elf -target=pca10040 examples/blinky2
|
- run: tinygo build -size short -o test.elf -target=pca10040 examples/blinky2
|
||||||
- run: tinygo build -size short -o blinky2 examples/blinky2
|
- run: tinygo build -o blinky2 examples/blinky2 # TODO: re-enable -size flag with MachO support
|
||||||
- run: tinygo build -size short -o test.elf -target=pca10040 examples/test
|
- run: tinygo build -size short -o test.elf -target=pca10040 examples/test
|
||||||
- run: tinygo build -size short -o test.elf -target=microbit examples/echo
|
- run: tinygo build -size short -o test.elf -target=microbit examples/echo
|
||||||
- run: tinygo build -size short -o test.elf -target=nrf52840-mdk examples/blinky1
|
- run: tinygo build -size short -o test.elf -target=nrf52840-mdk examples/blinky1
|
||||||
- run: tinygo build -size short -o test.elf -target=pca10031 examples/blinky1
|
- run: tinygo build -size short -o test.elf -target=pca10031 examples/blinky1
|
||||||
- run: tinygo build -size short -o test.elf -target=bluepill examples/blinky1
|
- run: tinygo build -size short -o test.elf -target=bluepill examples/blinky1
|
||||||
- run: tinygo build -size short -o test.elf -target=arduino examples/blinky1
|
|
||||||
- run: tinygo build -size short -o test.elf -target=digispark examples/blinky1
|
|
||||||
- run: tinygo build -size short -o test.elf -target=reelboard examples/blinky1
|
- run: tinygo build -size short -o test.elf -target=reelboard examples/blinky1
|
||||||
- run: tinygo build -size short -o test.elf -target=reelboard examples/blinky2
|
- run: tinygo build -size short -o test.elf -target=reelboard examples/blinky2
|
||||||
- run: tinygo build -size short -o test.elf -target=pca10056 examples/blinky1
|
- run: tinygo build -size short -o test.elf -target=pca10056 examples/blinky1
|
||||||
|
@ -90,7 +93,7 @@ commands:
|
||||||
paths:
|
paths:
|
||||||
- ~/.cache/go-build
|
- ~/.cache/go-build
|
||||||
- ~/.cache/tinygo
|
- ~/.cache/tinygo
|
||||||
build-release:
|
build-linux:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- submodules
|
- submodules
|
||||||
|
@ -162,9 +165,9 @@ commands:
|
||||||
name: "Build TinyGo release"
|
name: "Build TinyGo release"
|
||||||
command: |
|
command: |
|
||||||
make release -j3
|
make release -j3
|
||||||
cp -p build/release.tar.gz /tmp/release.tar.gz
|
cp -p build/release.tar.gz /tmp/tinygo.linux-amd64.tar.gz
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: /tmp/release.tar.gz
|
path: /tmp/tinygo.linux-amd64.tar.gz
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: go-cache-{{ checksum "Gopkg.lock" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
|
key: go-cache-{{ checksum "Gopkg.lock" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
|
||||||
paths:
|
paths:
|
||||||
|
@ -174,10 +177,71 @@ commands:
|
||||||
name: "Extract release tarball"
|
name: "Extract release tarball"
|
||||||
command: |
|
command: |
|
||||||
mkdir -p ~/lib
|
mkdir -p ~/lib
|
||||||
tar -C ~/lib -xf /tmp/release.tar.gz
|
tar -C ~/lib -xf /tmp/tinygo.linux-amd64.tar.gz
|
||||||
ln -s ~/lib/tinygo/bin/tinygo /go/bin/tinygo
|
ln -s ~/lib/tinygo/bin/tinygo /go/bin/tinygo
|
||||||
tinygo version
|
tinygo version
|
||||||
- smoketest
|
- smoketest
|
||||||
|
build-macos:
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- submodules
|
||||||
|
- run:
|
||||||
|
name: "Install dependencies"
|
||||||
|
command: |
|
||||||
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install go dep qemu
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
- llvm-source-8-macos-v2
|
||||||
|
- run:
|
||||||
|
name: "Fetch LLVM source"
|
||||||
|
command: make llvm-source
|
||||||
|
- save_cache:
|
||||||
|
key: llvm-source-8-macos-v2
|
||||||
|
paths:
|
||||||
|
- llvm
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
- llvm-build-8-macos-v2
|
||||||
|
- run:
|
||||||
|
name: "Build LLVM"
|
||||||
|
command: |
|
||||||
|
if [ ! -f llvm-build/lib/liblldELF.a ]
|
||||||
|
then
|
||||||
|
# install dependencies
|
||||||
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja
|
||||||
|
# build!
|
||||||
|
make llvm-build
|
||||||
|
fi
|
||||||
|
- save_cache:
|
||||||
|
key: llvm-build-8-macos-v2
|
||||||
|
paths:
|
||||||
|
llvm-build
|
||||||
|
- run:
|
||||||
|
name: "Create LLVM symlinks"
|
||||||
|
command: |
|
||||||
|
ln -s $PWD/llvm-build/bin/clang-8 /usr/local/bin/clang-8
|
||||||
|
ln -s $PWD/llvm-build/bin/llvm-ar /usr/local/bin/llvm-ar
|
||||||
|
- run:
|
||||||
|
name: "Install Go dependencies"
|
||||||
|
command: dep ensure --vendor-only
|
||||||
|
- run:
|
||||||
|
name: "Test TinyGo"
|
||||||
|
command: make static-test
|
||||||
|
- 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
|
||||||
|
- smoketest-no-avr
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
@ -195,12 +259,20 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- test-linux:
|
- test-linux:
|
||||||
llvm: "-8"
|
llvm: "-8"
|
||||||
build-release:
|
build-linux:
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.12
|
- image: circleci/golang:1.12
|
||||||
working_directory: /go/src/github.com/tinygo-org/tinygo
|
working_directory: /go/src/github.com/tinygo-org/tinygo
|
||||||
steps:
|
steps:
|
||||||
- build-release
|
- build-linux
|
||||||
|
build-macos:
|
||||||
|
macos:
|
||||||
|
xcode: "10.1.0"
|
||||||
|
working_directory: ~/go/src/github.com/tinygo-org/tinygo
|
||||||
|
steps:
|
||||||
|
- build-macos
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
|
@ -208,4 +280,5 @@ workflows:
|
||||||
jobs:
|
jobs:
|
||||||
- test-llvm8-go111
|
- test-llvm8-go111
|
||||||
- test-llvm8-go112
|
- test-llvm8-go112
|
||||||
- build-release
|
- build-linux
|
||||||
|
- build-macos
|
||||||
|
|
39
.travis.yml
39
.travis.yml
|
@ -1,39 +0,0 @@
|
||||||
language: go
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: osx
|
|
||||||
go: "1.12"
|
|
||||||
env: PATH="/usr/local/opt/llvm/bin:$PATH"
|
|
||||||
before_install:
|
|
||||||
- mkdir -p /Users/travis/gopath/bin
|
|
||||||
|
|
||||||
addons:
|
|
||||||
homebrew:
|
|
||||||
update: true
|
|
||||||
packages:
|
|
||||||
- llvm@8
|
|
||||||
- qemu
|
|
||||||
|
|
||||||
install:
|
|
||||||
- curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
|
||||||
- dep ensure --vendor-only
|
|
||||||
|
|
||||||
script:
|
|
||||||
- go install github.com/tinygo-org/tinygo
|
|
||||||
- go test -v .
|
|
||||||
- make gen-device
|
|
||||||
- tinygo build -size short -o blinky1.nrf.elf -target=pca10040 examples/blinky1
|
|
||||||
- tinygo build -size short -o blinky2.nrf.elf -target=pca10040 examples/blinky2
|
|
||||||
- tinygo build -o blinky2 examples/blinky2 # TODO: re-enable -size flag with MachO support
|
|
||||||
- tinygo build -size short -o test.nrf.elf -target=pca10040 examples/test
|
|
||||||
- tinygo build -size short -o blinky1.nrf51.elf -target=microbit examples/echo
|
|
||||||
- tinygo build -size short -o test.nrf.elf -target=nrf52840-mdk examples/blinky1
|
|
||||||
- tinygo build -size short -o blinky1.nrf51d.elf -target=pca10031 examples/blinky1
|
|
||||||
- tinygo build -size short -o blinky1.stm32.elf -target=bluepill examples/blinky1
|
|
||||||
- tinygo build -size short -o blinky1.reel.elf -target=reelboard examples/blinky1
|
|
||||||
- tinygo build -size short -o blinky2.reel.elf -target=reelboard examples/blinky2
|
|
||||||
- tinygo build -size short -o blinky1.pca10056.elf -target=pca10056 examples/blinky1
|
|
||||||
- tinygo build -size short -o blinky2.pca10056.elf -target=pca10056 examples/blinky2
|
|
||||||
- tinygo build -size short -o blinky1.samd21.elf -target=itsybitsy-m0 examples/blinky1
|
|
||||||
- tinygo build -o wasm.wasm -target=wasm examples/wasm
|
|
10
Makefile
10
Makefile
|
@ -47,9 +47,15 @@ LLD_SRC ?= llvm/tools/lld
|
||||||
|
|
||||||
LLVM_COMPONENTS = all-targets analysis asmparser asmprinter bitreader bitwriter codegen core coroutines debuginfodwarf executionengine instrumentation interpreter ipo irreader linker lto mc mcjit objcarcopts option profiledata scalaropts support target
|
LLVM_COMPONENTS = all-targets analysis asmparser asmprinter bitreader bitwriter codegen core coroutines debuginfodwarf executionengine instrumentation interpreter ipo irreader linker lto mc mcjit objcarcopts option profiledata scalaropts support target
|
||||||
|
|
||||||
CLANG_LIBS = -Wl,--start-group $(abspath $(LLVM_BUILDDIR))/lib/libclang.a -lclangAnalysis -lclangARCMigrate -lclangAST -lclangASTMatchers -lclangBasic -lclangCodeGen -lclangCrossTU -lclangDriver -lclangDynamicASTMatchers -lclangEdit -lclangFormat -lclangFrontend -lclangFrontendTool -lclangHandleCXX -lclangHandleLLVM -lclangIndex -lclangLex -lclangParse -lclangRewrite -lclangRewriteFrontend -lclangSema -lclangSerialization -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangStaticAnalyzerFrontend -lclangTooling -lclangToolingASTDiff -lclangToolingCore -lclangToolingInclusions -lclangToolingRefactor -Wl,--end-group -lstdc++
|
UNAME_S := $(shell uname -s)
|
||||||
|
ifeq ($(UNAME_S),Linux)
|
||||||
|
START_GROUP = -Wl,--start-group
|
||||||
|
END_GROUP = -Wl,--end-group
|
||||||
|
endif
|
||||||
|
|
||||||
LLD_LIBS = -Wl,--start-group -llldCOFF -llldCommon -llldCore -llldDriver -llldELF -llldMachO -llldMinGW -llldReaderWriter -llldWasm -llldYAML -Wl,--end-group
|
CLANG_LIBS = $(START_GROUP) $(abspath $(LLVM_BUILDDIR))/lib/libclang.a -lclangAnalysis -lclangARCMigrate -lclangAST -lclangASTMatchers -lclangBasic -lclangCodeGen -lclangCrossTU -lclangDriver -lclangDynamicASTMatchers -lclangEdit -lclangFormat -lclangFrontend -lclangFrontendTool -lclangHandleCXX -lclangHandleLLVM -lclangIndex -lclangLex -lclangParse -lclangRewrite -lclangRewriteFrontend -lclangSema -lclangSerialization -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangStaticAnalyzerFrontend -lclangTooling -lclangToolingASTDiff -lclangToolingCore -lclangToolingInclusions -lclangToolingRefactor $(END_GROUP) -lstdc++
|
||||||
|
|
||||||
|
LLD_LIBS = $(START_GROUP) -llldCOFF -llldCommon -llldCore -llldDriver -llldELF -llldMachO -llldMinGW -llldReaderWriter -llldWasm -llldYAML $(END_GROUP)
|
||||||
|
|
||||||
|
|
||||||
# For static linking.
|
# For static linking.
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
# TinyGo - Go compiler for small places
|
# TinyGo - Go compiler for small places
|
||||||
|
|
||||||
[](https://travis-ci.com/tinygo-org/tinygo)
|
|
||||||
[](https://circleci.com/gh/tinygo-org/tinygo/tree/dev)
|
[](https://circleci.com/gh/tinygo-org/tinygo/tree/dev)
|
||||||
|
|
||||||
TinyGo is a Go compiler intended for use in small places such as microcontrollers, WebAssembly (WASM), and command-line tools.
|
TinyGo is a Go compiler intended for use in small places such as microcontrollers, WebAssembly (WASM), and command-line tools.
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче