summaryrefslogtreecommitdiffstats
path: root/.devcontainer/Dockerfile
blob: 55565a07eb895b085ee7a03bf16892bfd3909e38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
FROM ubuntu:22.10

# TODO: install emscripten (https://emscripten.org/docs/getting_started/downloads.html)

# TODO: Clean this up once buildkit is supported gracefully in devcontainers
# https://github.com/microsoft/vscode-remote-release/issues/1409

ARG X86_64_TOOLCHAIN_FILENAME="gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2"
ARG X86_64_TOOLCHAIN="https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2"
ARG X86_64_TOOLCHAIN_CHECKSUM="b56ae639d9183c340f065ae114a30202"

ARG AARCH64_TOOLCHAIN_FILENAME="gcc-arm-none-eabi-10.3-2021.07-aarch64-linux.tar.bz2"
ARG AARCH64_TOOLCHAIN="https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-aarch64-linux.tar.bz2"
ARG AARCH64_TOOLCHAIN_CHECKSUM="c20b0535d01f8d4418341d893c62a782"

WORKDIR /setup

# Install required packages
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
    # make is used as the build system
    make \
    # git is used for fetching submodules & interactive development
    git \
    # bzip2 is required to extract the Arm toolchain
    bzip2 \
    # ca certs need to be available for fetching git submodules
    ca-certificates \
    # python is used to convert binaries to uf2 files
    python3 python-is-python3

# Download and verify both x86-64 and aarch64 toolchains. This is unfortunate and
# slows down the build, but it's a clean-ish option until buildkit can be used.
ADD $X86_64_TOOLCHAIN $X86_64_TOOLCHAIN_FILENAME
ADD $AARCH64_TOOLCHAIN $AARCH64_TOOLCHAIN_FILENAME

RUN echo "${X86_64_TOOLCHAIN_CHECKSUM} ${X86_64_TOOLCHAIN_FILENAME}" | md5sum --check
RUN echo "${AARCH64_TOOLCHAIN_CHECKSUM} ${AARCH64_TOOLCHAIN_FILENAME}" | md5sum --check

# Extract toolchain directly into /usr
RUN /bin/sh -c 'set -ex && \
    ARCH=`uname -m` && \
    if [ "$ARCH" = "x86_64" ]; then \
       tar --strip-components=1 -C /usr -xjf $X86_64_TOOLCHAIN_FILENAME ; \
    else \
       tar --strip-components=1 -C /usr -xjf $AARCH64_TOOLCHAIN_FILENAME ; \
    fi'

RUN rm $X86_64_TOOLCHAIN_FILENAME
RUN rm $AARCH64_TOOLCHAIN_FILENAME