
Currently, if the user hasn't run `git submodule update --init` beforehand, the docker build will fail This little addition makes the build atomic and ready for automatic CI tests for the future
83 строки
4,1 КиБ
Docker
83 строки
4,1 КиБ
Docker
# TinyGo base stage just installs LLVM 7 and the TinyGo compiler itself.
|
|
FROM golang:latest AS tinygo-base
|
|
|
|
RUN wget -O- https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - && \
|
|
echo "deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-7 main" >> /etc/apt/sources.list && \
|
|
apt-get update && \
|
|
apt-get install -y llvm-7-dev libclang-7-dev git
|
|
|
|
RUN wget -O- https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
|
|
|
COPY . /go/src/github.com/tinygo-org/tinygo
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
git submodule update --init
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
dep ensure --vendor-only && \
|
|
go install /go/src/github.com/tinygo-org/tinygo/
|
|
|
|
# tinygo-wasm stage installs the needed dependencies to compile TinyGo programs for WASM.
|
|
FROM tinygo-base AS tinygo-wasm
|
|
|
|
COPY --from=tinygo-base /go/bin/tinygo /go/bin/tinygo
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/src /go/src/github.com/tinygo-org/tinygo/src
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/targets /go/src/github.com/tinygo-org/tinygo/targets
|
|
|
|
RUN wget -O- https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - && \
|
|
echo "deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-7 main" >> /etc/apt/sources.list && \
|
|
apt-get update && \
|
|
apt-get install -y libllvm7 lld-7
|
|
|
|
# tinygo-avr stage installs the needed dependencies to compile TinyGo programs for AVR microcontrollers.
|
|
FROM tinygo-base AS tinygo-avr
|
|
|
|
COPY --from=tinygo-base /go/bin/tinygo /go/bin/tinygo
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/src /go/src/github.com/tinygo-org/tinygo/src
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/targets /go/src/github.com/tinygo-org/tinygo/targets
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/Makefile /go/src/github.com/tinygo-org/tinygo/
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/tools /go/src/github.com/tinygo-org/tinygo/tools
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/lib /go/src/github.com/tinygo-org/tinygo/lib
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
apt-get update && \
|
|
apt-get install -y apt-utils python3 make binutils-avr gcc-avr avr-libc && \
|
|
make gen-device-avr && \
|
|
apt-get remove -y python3 make && \
|
|
apt-get autoremove -y && \
|
|
apt-get clean
|
|
|
|
# tinygo-arm stage installs the needed dependencies to compile TinyGo programs for ARM microcontrollers.
|
|
FROM tinygo-base AS tinygo-arm
|
|
|
|
COPY --from=tinygo-base /go/bin/tinygo /go/bin/tinygo
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/src /go/src/github.com/tinygo-org/tinygo/src
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/targets /go/src/github.com/tinygo-org/tinygo/targets
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/Makefile /go/src/github.com/tinygo-org/tinygo/
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/tools /go/src/github.com/tinygo-org/tinygo/tools
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/lib /go/src/github.com/tinygo-org/tinygo/lib
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
apt-get update && \
|
|
apt-get install -y apt-utils python3 make binutils-arm-none-eabi clang-7 && \
|
|
make gen-device-nrf && make gen-device-stm32 && \
|
|
apt-get remove -y python3 make && \
|
|
apt-get autoremove -y && \
|
|
apt-get clean
|
|
|
|
# tinygo-all stage installs the needed dependencies to compile TinyGo programs for all platforms.
|
|
FROM tinygo-wasm AS tinygo-all
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/Makefile /go/src/github.com/tinygo-org/tinygo/
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/tools /go/src/github.com/tinygo-org/tinygo/tools
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/lib /go/src/github.com/tinygo-org/tinygo/lib
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
apt-get update && \
|
|
apt-get install -y apt-utils python3 make binutils-arm-none-eabi clang-7 binutils-avr gcc-avr avr-libc && \
|
|
make gen-device && \
|
|
apt-get remove -y python3 make && \
|
|
apt-get autoremove -y && \
|
|
apt-get clean
|
|
|
|
CMD ["tinygo"]
|