You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by bt...@apache.org on 2022/10/24 00:10:09 UTC
[incubator-nuttx] 02/02: tools/ci/docker/linux/Dockerfile: Keep the installation in alphabetical order
This is an automated email from the ASF dual-hosted git repository.
btashton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 8c1036b7a1a7971fead89f070974fc8c60a6ad18
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Mon Oct 24 01:05:13 2022 +0800
tools/ci/docker/linux/Dockerfile: Keep the installation in alphabetical order
Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
tools/ci/docker/linux/Dockerfile | 193 +++++++++++++++++++--------------------
1 file changed, 96 insertions(+), 97 deletions(-)
diff --git a/tools/ci/docker/linux/Dockerfile b/tools/ci/docker/linux/Dockerfile
index a3424ce284..be20984c7e 100644
--- a/tools/ci/docker/linux/Dockerfile
+++ b/tools/ci/docker/linux/Dockerfile
@@ -27,15 +27,15 @@ RUN apt-get update -qq && apt-get install -y -qq \
FROM builder-base AS nuttx-tools
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq \
- flex \
bison \
- gperf \
- libncurses5-dev \
- make \
cmake \
+ flex \
g++ \
gawk \
- git
+ git \
+ gperf \
+ libncurses5-dev \
+ make
RUN mkdir /tools
WORKDIR /tools
@@ -44,8 +44,10 @@ RUN mkdir -p /tools/nuttx-tools
RUN curl -s -L https://bitbucket.org/nuttx/tools/get/9ad3e1ee75c7.tar.gz \
| tar -C nuttx-tools --strip-components=1 -xz
-RUN cd nuttx-tools/kconfig-frontends \
- && ./configure --enable-mconf --disable-gconf --disable-qconf --enable-static --prefix=/tools/kconfig-frontends \
+RUN mkdir bloaty -p \
+ && git clone --depth 1 --branch v1.1 https://github.com/google/bloaty bloaty \
+ && cd bloaty \
+ && cmake -DCMAKE_SYSTEM_PREFIX_PATH=/tools/bloaty \
&& make install
RUN cd nuttx-tools \
@@ -54,10 +56,8 @@ RUN cd nuttx-tools \
&& cd genromfs \
&& make install PREFIX=/tools/genromfs
-RUN mkdir bloaty -p \
- && git clone --depth 1 --branch v1.1 https://github.com/google/bloaty bloaty \
- && cd bloaty \
- && cmake -DCMAKE_SYSTEM_PREFIX_PATH=/tools/bloaty \
+RUN cd nuttx-tools/kconfig-frontends \
+ && ./configure --enable-mconf --disable-gconf --disable-qconf --enable-static --prefix=/tools/kconfig-frontends \
&& make install
# Install Rust and targets supported from NuttX
@@ -83,6 +83,11 @@ WORKDIR /tools
# Build image for tool required by ARM builds
###############################################################################
FROM nuttx-toolchain-base AS nuttx-toolchain-arm
+# Download the latest ARM clang toolchain prebuilt by ARM
+RUN mkdir clang-arm-none-eabi && \
+ curl -s -L "https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-14.0.0/LLVMEmbeddedToolchainForArm-14.0.0-linux.tar.gz" \
+ | tar -C clang-arm-none-eabi --strip-components 1 -xz
+
# Download the latest ARM GCC toolchain prebuilt by ARM
RUN mkdir gcc-arm-none-eabi && \
curl -s -L "https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi.tar.xz" \
@@ -90,11 +95,6 @@ RUN mkdir gcc-arm-none-eabi && \
&& curl -s -L -O "https://raw.githubusercontent.com/apache/incubator-nuttx/master/tools/ci/patch/arm-none-eabi-workaround-for-newlib-version-break.patch" \
&& patch -p0 < arm-none-eabi-workaround-for-newlib-version-break.patch
-# Download the latest ARM clang toolchain prebuilt by ARM
-RUN mkdir clang-arm-none-eabi && \
- curl -s -L "https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-14.0.0/LLVMEmbeddedToolchainForArm-14.0.0-linux.tar.gz" \
- | tar -C clang-arm-none-eabi --strip-components 1 -xz
-
###############################################################################
# Build image for tool required by ARM64 builds
###############################################################################
@@ -114,66 +114,20 @@ RUN mkdir pinguino-compilers && \
curl -s -L "https://github.com/PinguinoIDE/pinguino-compilers/archive/62db5158d7f6d41c6fadb05de81cc31dd81a1958.tar.gz" \
| tar -C pinguino-compilers --strip-components=2 --wildcards -xz */linux64
-###############################################################################
-# Build image for tool required by RISCV builds
-###############################################################################
-FROM nuttx-toolchain-base AS nuttx-toolchain-riscv
-# Download the latest RISCV GCC toolchain prebuilt by SiFive
-RUN mkdir riscv64-unknown-elf-gcc && \
- curl -s -L "https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz" \
- | tar -C riscv64-unknown-elf-gcc --strip-components 1 -xz
-
-###############################################################################
-# Build image for tool required by SPARC builds
-###############################################################################
-FROM nuttx-toolchain-base AS nuttx-toolchain-sparc
-# Download the SPARC GCC toolchain prebuilt by Gaisler
-RUN mkdir sparc-gaisler-elf-gcc && \
- curl -s -L "https://www.gaisler.com/anonftp/bcc2/bin/bcc-2.1.0-gcc-linux64.tar.xz" \
- | tar -C sparc-gaisler-elf-gcc --strip-components 1 -xJ
-
-###############################################################################
-# Build image for tool required by ESP32 builds
-###############################################################################
-FROM nuttx-toolchain-base AS nuttx-toolchain-esp32
-# Download the latest ESP32 GCC toolchain prebuilt by Espressif
-RUN mkdir -p xtensa-esp32-elf-gcc && \
- curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz" \
- | tar -C xtensa-esp32-elf-gcc --strip-components 1 -xz
-
-RUN mkdir -p xtensa-esp32s2-elf-gcc && \
- curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz" \
- | tar -C xtensa-esp32s2-elf-gcc --strip-components 1 -xz
-
-RUN mkdir -p xtensa-esp32s3-elf-gcc && \
- curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz" \
- | tar -C xtensa-esp32s3-elf-gcc --strip-components 1 -xz
-
-RUN echo "ESP Binaries: 2022/01/26"
-RUN mkdir -p /tools/blobs && cd /tools/blobs \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32.bin" -o bootloader-esp32.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32c3.bin" -o bootloader-esp32c3.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32s2.bin" -o bootloader-esp32s2.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32s3.bin" -o bootloader-esp32s3.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32.bin" -o partition-table-esp32.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32c3.bin" -o partition-table-esp32c3.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32s2.bin" -o partition-table-esp32s2.bin \
- && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32s3.bin" -o partition-table-esp32s3.bin
-
###############################################################################
# Build image for tool required by Renesas builds
###############################################################################
FROM nuttx-toolchain-base AS nuttx-toolchain-renesas
# Build Renesas RX GCC toolchain
RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq \
- flex \
bison \
- texinfo \
+ flex \
+ g++ \
+ gcc \
libncurses5-dev \
m4 \
make \
- gcc \
- g++ \
+ texinfo \
wget
# Download toolchain source code
@@ -217,6 +171,52 @@ RUN cd renesas-tools/source/newlib && \
RUN cd /tools/renesas-tools/build/gcc && \
make && make install
+###############################################################################
+# Build image for tool required by RISCV builds
+###############################################################################
+FROM nuttx-toolchain-base AS nuttx-toolchain-riscv
+# Download the latest RISCV GCC toolchain prebuilt by SiFive
+RUN mkdir riscv64-unknown-elf-gcc && \
+ curl -s -L "https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz" \
+ | tar -C riscv64-unknown-elf-gcc --strip-components 1 -xz
+
+###############################################################################
+# Build image for tool required by SPARC builds
+###############################################################################
+FROM nuttx-toolchain-base AS nuttx-toolchain-sparc
+# Download the SPARC GCC toolchain prebuilt by Gaisler
+RUN mkdir sparc-gaisler-elf-gcc && \
+ curl -s -L "https://www.gaisler.com/anonftp/bcc2/bin/bcc-2.1.0-gcc-linux64.tar.xz" \
+ | tar -C sparc-gaisler-elf-gcc --strip-components 1 -xJ
+
+###############################################################################
+# Build image for tool required by ESP32 builds
+###############################################################################
+FROM nuttx-toolchain-base AS nuttx-toolchain-esp32
+# Download the latest ESP32 GCC toolchain prebuilt by Espressif
+RUN mkdir -p xtensa-esp32-elf-gcc && \
+ curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz" \
+ | tar -C xtensa-esp32-elf-gcc --strip-components 1 -xz
+
+RUN mkdir -p xtensa-esp32s2-elf-gcc && \
+ curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz" \
+ | tar -C xtensa-esp32s2-elf-gcc --strip-components 1 -xz
+
+RUN mkdir -p xtensa-esp32s3-elf-gcc && \
+ curl -s -L "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz" \
+ | tar -C xtensa-esp32s3-elf-gcc --strip-components 1 -xz
+
+RUN echo "ESP Binaries: 2022/01/26"
+RUN mkdir -p /tools/blobs && cd /tools/blobs \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32.bin" -o bootloader-esp32.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32c3.bin" -o bootloader-esp32c3.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32s2.bin" -o bootloader-esp32s2.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/bootloader-esp32s3.bin" -o bootloader-esp32s3.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32.bin" -o partition-table-esp32.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32c3.bin" -o partition-table-esp32c3.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32s2.bin" -o partition-table-esp32s2.bin \
+ && curl -s -L "https://github.com/espressif/esp-nuttx-bootloader/releases/download/latest/partition-table-esp32s3.bin" -o partition-table-esp32s3.bin
+
###############################################################################
# Final Docker image used for running CI system. This includes all toolchains
# supported by the CI system.
@@ -232,28 +232,30 @@ RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -q
avr-libc \
build-essential \
ccache \
+ clang \
+ clang-tidy \
cmake \
curl \
gcc \
gcc-avr \
gcc-multilib \
- clang \
- clang-tidy \
gettext \
git \
lib32z1-dev \
- libc6-dev-i386 \
libasound2-dev libasound2-dev:i386 \
+ libc6-dev-i386 \
libcurl4-openssl-dev \
+ libncurses5-dev \
libpulse-dev libpulse-dev:i386 \
libpython2.7 \
- libncurses5-dev \
libtinfo5 \
libx11-dev libx11-dev:i386 \
libxext-dev libxext-dev:i386 \
- linux-libc-dev:i386 \
linux-headers-generic \
+ linux-libc-dev:i386 \
ninja-build \
+ qemu-system-arm \
+ qemu-system-misc \
python3 \
python3-pip \
python-is-python3 \
@@ -261,8 +263,6 @@ RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -q
unzip \
wget \
xxd \
- qemu-system-arm \
- qemu-system-misc \
&& rm -rf /var/lib/apt/lists/*
# Configure out base setup for adding python packages
@@ -277,25 +277,28 @@ RUN pip3 install setuptools wheel
# Install CodeChecker and use it to statically analyze the code.
RUN pip3 install CodeChecker
# Install pytest
+RUN pip3 install cxxfilt
+RUN pip3 install esptool
+RUN pip3 install imgtool
RUN pip3 install pexpect==4.8.0
+RUN pip3 install pyelftools
+RUN pip3 install pyserial==3.5
RUN pip3 install pytest==6.2.5
-RUN pip3 install pytest-repeat==0.9.1
RUN pip3 install pytest-json==0.4.0
RUN pip3 install pytest-ordering==0.6
-RUN pip3 install pyserial==3.5
+RUN pip3 install pytest-repeat==0.9.1
# Used to generate symbol table files
-RUN pip3 install pyelftools cxxfilt
RUN mkdir /tools
WORKDIR /tools
# Pull in the tools we just built for nuttx
+COPY --from=nuttx-tools /tools/bloaty/ bloaty/
+ENV PATH="/tools/bloaty/bin:$PATH"
COPY --from=nuttx-tools /tools/genromfs/ /tools/genromfs/
ENV PATH="/tools/genromfs/usr/bin:$PATH"
COPY --from=nuttx-tools /tools/kconfig-frontends/ kconfig-frontends/
ENV PATH="/tools/kconfig-frontends/bin:$PATH"
-COPY --from=nuttx-tools /tools/bloaty/ bloaty/
-ENV PATH="/tools/bloaty/bin:$PATH"
# Pull in the Rust toolchain including supported targets
COPY --from=nuttx-tools /tools/rust/ /tools/rust/
@@ -304,12 +307,12 @@ ENV RUSTUP_HOME=/tools/rust/rustup
ENV PATH="/tools/rust/cargo/bin:$PATH"
# ARM toolchain
-COPY --from=nuttx-toolchain-arm /tools/gcc-arm-none-eabi/ gcc-arm-none-eabi/
-ENV PATH="/tools/gcc-arm-none-eabi/bin:$PATH"
-
COPY --from=nuttx-toolchain-arm /tools/clang-arm-none-eabi/ clang-arm-none-eabi/
ENV PATH="/tools/clang-arm-none-eabi/bin:$PATH"
+COPY --from=nuttx-toolchain-arm /tools/gcc-arm-none-eabi/ gcc-arm-none-eabi/
+ENV PATH="/tools/gcc-arm-none-eabi/bin:$PATH"
+
# ARM64 toolchain
COPY --from=nuttx-toolchain-arm64 /tools/gcc-aarch64-none-elf/ gcc-aarch64-none-elf/
ENV PATH="/tools/gcc-aarch64-none-elf/bin:$PATH"
@@ -318,6 +321,10 @@ ENV PATH="/tools/gcc-aarch64-none-elf/bin:$PATH"
COPY --from=nuttx-toolchain-pinguino /tools/pinguino-compilers/p32/ pinguino-compilers/p32/
ENV PATH="/tools/pinguino-compilers/p32/bin:$PATH"
+# Renesas toolchain
+COPY --from=nuttx-toolchain-renesas /tools/renesas-toolchain/rx-elf-gcc/ renesas-toolchain/rx-elf-gcc/
+ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH"
+
# RISCV toolchain
COPY --from=nuttx-toolchain-riscv /tools/riscv64-unknown-elf-gcc/ riscv64-unknown-elf-gcc/
ENV PATH="/tools/riscv64-unknown-elf-gcc/bin:$PATH"
@@ -340,28 +347,23 @@ ENV PATH="/tools/xtensa-esp32s3-elf-gcc/bin:$PATH"
RUN mkdir -p /tools/blobs/esp-bins
COPY --from=nuttx-toolchain-esp32 /tools/blobs/* /tools/blobs/esp-bins/
-RUN pip3 install esptool
-
-# Renesas toolchain
-COPY --from=nuttx-toolchain-renesas /tools/renesas-toolchain/rx-elf-gcc/ renesas-toolchain/rx-elf-gcc/
-ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH"
-
-# MCUboot's tool for image signing and key management
-RUN pip3 install imgtool
# Configure ccache
RUN mkdir -p /tools/ccache/bin && \
+ ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-gcc && \
+ ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-g++ && \
+ ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-gcc && \
+ ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-g++ && \
+ ln -sf `which ccache` /tools/ccache/bin/avr-gcc && \
+ ln -sf `which ccache` /tools/ccache/bin/avr-g++ && \
ln -sf `which ccache` /tools/ccache/bin/cc && \
ln -sf `which ccache` /tools/ccache/bin/c++ && \
ln -sf `which ccache` /tools/ccache/bin/clang && \
ln -sf `which ccache` /tools/ccache/bin/clang++ && \
ln -sf `which ccache` /tools/ccache/bin/gcc && \
ln -sf `which ccache` /tools/ccache/bin/g++ && \
- ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-gcc && \
- ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-g++ && \
- ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-gcc && \
- ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-g++ && \
ln -sf `which ccache` /tools/ccache/bin/p32-gcc && \
+ ln -sf `which ccache` /tools/ccache/bin/rx-elf-gcc && \
ln -sf `which ccache` /tools/ccache/bin/riscv64-unknown-elf-gcc && \
ln -sf `which ccache` /tools/ccache/bin/riscv64-unknown-elf-g++ && \
ln -sf `which ccache` /tools/ccache/bin/sparc-gaisler-elf-gcc && \
@@ -371,10 +373,7 @@ RUN mkdir -p /tools/ccache/bin && \
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s2-elf-gcc && \
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s2-elf-g++ && \
ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s3-elf-gcc && \
- ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s3-elf-g++ && \
- ln -sf `which ccache` /tools/ccache/bin/avr-gcc && \
- ln -sf `which ccache` /tools/ccache/bin/avr-g++ && \
- ln -sf `which ccache` /tools/ccache/bin/rx-elf-gcc
+ ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32s3-elf-g++
ENV PATH="/tools/ccache/bin:$PATH"
CMD [ "/bin/bash" ]