diff --git a/.github/actions/ci-container/action.yaml b/.github/actions/ci-container/action.yaml new file mode 100644 index 0000000000..d87f1a1ec5 --- /dev/null +++ b/.github/actions/ci-container/action.yaml @@ -0,0 +1,25 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +name: ci-container +inputs: + run: # id of input + description: 'Commands to run' + required: true +runs: + using: 'docker' + image: 'docker.pkg.github.com/apache/incubator-nuttx/apache-nuttx-ci-linux' + args: + - "/bin/bash" + - "-ce" + - ${{ inputs.run }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6d56460c4..2c02fa1c13 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,7 +32,6 @@ jobs: id: gittargets shell: bash run: | - TESTING_REF="master" # Always use master for testing OS_REF="" APPS_REF="" @@ -80,7 +79,6 @@ jobs: echo ::set-output name=os_ref::$OS_REF echo ::set-output name=apps_ref::$APPS_REF - echo ::set-output name=testing_ref::$TESTING_REF - name: Checkout nuttx repo uses: actions/checkout@v2 @@ -100,14 +98,6 @@ jobs: path: sources/apps fetch-depth: 1 - - name: Checkout testing repo - uses: actions/checkout@v2 - with: - repository: apache/incubator-nuttx-testing - ref: ${{ steps.gittargets.outputs.testing_ref }} - path: sources/testing - fetch-depth: 1 - - name: Tar sources run: tar zcf sources.tar.gz sources - name: Archive Source Bundle @@ -142,11 +132,11 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Pull - run: docker pull docker.pkg.github.com/apache/incubator-nuttx-testing/nuttx-ci-linux + run: docker pull docker.pkg.github.com/apache/incubator-nuttx/apache-nuttx-ci-linux - name: Export NuttX Repo SHA run: echo "nuttx_sha=`git -C sources/nuttx rev-parse HEAD`" >> $GITHUB_ENV - name: Run builds - uses: ./sources/testing/.github/actions/ci-container + uses: ./sources/nuttx/.github/actions/ci-container env: BLOBDIR: /tools/blobs with: @@ -154,8 +144,8 @@ jobs: echo "::add-matcher::sources/nuttx/.github/gcc.json" export CCACHE_DIR=`pwd`/ccache mkdir $CCACHE_DIR - cd sources/testing - export ARTIFACTDIR=`pwd`/../../buildartifacts + export ARTIFACTDIR=`pwd`/buildartifacts + cd sources/nuttx/tools/ci ./cibuild.sh -A -c testlist/${{matrix.boards}}.dat ccache -s - uses: actions/upload-artifact@v2 @@ -185,7 +175,7 @@ jobs: cache-name: ${{ runner.os }}-cache-tools with: path: prebuilt - key: ${{ runner.os }}-tools-${{ hashFiles('./sources/testing/cibuild.sh') }} + key: ${{ runner.os }}-tools-${{ hashFiles('./sources/nuttx/tools/ci/cibuild.sh') }} - name: Export NuttX Repo SHA run: echo "nuttx_sha=`git -C sources/nuttx rev-parse HEAD`" >> $GITHUB_ENV @@ -194,8 +184,8 @@ jobs: echo "::add-matcher::sources/nuttx/.github/gcc.json" export CCACHE_DIR=`pwd`/ccache mkdir $CCACHE_DIR - cd sources/testing - export ARTIFACTDIR=`pwd`/../../buildartifacts + export ARTIFACTDIR=`pwd`/buildartifacts + cd sources/nuttx/tools/ci ./cibuild.sh -i -A -c testlist/${{matrix.boards}}.dat ccache -s - uses: actions/upload-artifact@v2 diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml index 8b4ac2a17d..3ac9cc289a 100644 --- a/.github/workflows/cancel.yml +++ b/.github/workflows/cancel.yml @@ -1,7 +1,7 @@ name: Cancelling Duplicates on: workflow_run: - workflows: ["Build", "Check", "Build Documentation", "Lint"] + workflows: ["Build", "Check", "Build Documentation", " Lint", "Docker-Linux"] types: ['requested'] jobs: diff --git a/.github/workflows/docker_linux.yml b/.github/workflows/docker_linux.yml new file mode 100644 index 0000000000..d2d97e9e24 --- /dev/null +++ b/.github/workflows/docker_linux.yml @@ -0,0 +1,57 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +name: Docker-Linux + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + paths: + - 'tools/ci/docker/linux/**' + + # Run builds for any PRs. + pull_request: + paths: + - 'tools/ci/docker/linux/**' + +env: + IMAGE_NAME: nuttx-ci-linux + +jobs: + # Push image to GitHub Packages. + push: + runs-on: ubuntu-latest + env: + DOCKER_BUILDKIT: 1 + IMAGE_TAG: docker.pkg.github.com/${{ github.repository }}/nuttx-ci-linux + steps: + - uses: actions/checkout@v2 + + - name: Log into registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin + + - name: Build Linux image + run: | + echo "Building Linux Image using cache from $IMAGE_TAG" + + docker build \ + --build-arg BUILDKIT_INLINE_CACHE=1 \ + --cache-from $IMAGE_TAG \ + --tag $IMAGE_TAG \ + -f ./tools/ci/docker/linux/Dockerfile ./tools/ci/docker/ + + - name: Push Linux image + if: (github.event_name == 'push') && (github.ref == 'refs/heads/master') + run: | + docker push $IMAGE_TAG diff --git a/tools/ci/README.md b/tools/ci/README.md new file mode 100644 index 0000000000..f0eaa8eda3 --- /dev/null +++ b/tools/ci/README.md @@ -0,0 +1,2 @@ +# CI Tools +These are tools and data used for the CI system. Some of what is here may also be useful for local testing. diff --git a/tools/ci/cibuild.sh b/tools/ci/cibuild.sh new file mode 100755 index 0000000000..bb604ec567 --- /dev/null +++ b/tools/ci/cibuild.sh @@ -0,0 +1,442 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Prerequisites for macOS +# - Xcode (cc, etc) +# - homebrew +# - autoconf +# - wget + +set -e +set -o xtrace + +WD=$(cd $(dirname $0) && pwd) +WORKSPACE=$(cd $WD/../../../ && pwd -P) +nuttx=$WORKSPACE/nuttx +apps=$WORKSPACE/apps +tools=$WORKSPACE/tools +prebuilt=$WORKSPACE/prebuilt +os=$(uname -s) +EXTRA_PATH= + +case $os in + Darwin) + install="python-tools u-boot-tools elf-toolchain gen-romfs kconfig-frontends arm-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain avr-gcc-toolchain c-cache binutils" + mkdir -p ${prebuilt}/homebrew + export HOMEBREW_CACHE=${prebuilt}/homebrew + # https://github.com/actions/virtual-environments/issues/2322#issuecomment-749211076 + rm -rf /usr/local/bin/2to3 + # https://github.com/osx-cross/homebrew-avr/issues/205#issuecomment-760637996 + brew update --quiet + ;; + Linux) + install="python-tools gen-romfs gperf kconfig-frontends arm-gcc-toolchain mips-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain rx-gcc-toolchain c-cache" + ;; +esac + +function add_path { + PATH=$1:$PATH + EXTRA_PATH=$1:$EXTRA_PATH +} + +function python-tools { + # Python User Env + PIP_USER=yes + export PIP_USER + PYTHONUSERBASE=$prebuilt/pylocal + export PYTHONUSERBASE + add_path $PYTHONUSERBASE/bin + pip3 install pexpect +} + +function u-boot-tools { + if ! type mkimage > /dev/null; then + case $os in + Darwin) + brew install u-boot-tools + ;; + esac + fi +} + +function elf-toolchain { + if ! type x86_64-elf-gcc > /dev/null; then + case $os in + Darwin) + brew install x86_64-elf-gcc + ;; + esac + fi + x86_64-elf-gcc --version +} + +function gen-romfs { + add_path $prebuilt/genromfs/usr/bin + + if [ ! -f "$prebuilt/genromfs/usr/bin/genromfs" ]; then + if [ ! -d "$tools" ]; then + git clone https://bitbucket.org/nuttx/tools.git $tools + fi + mkdir -p $prebuilt; cd $tools + tar zxf genromfs-0.5.2.tar.gz -C $prebuilt + cd $prebuilt/genromfs-0.5.2 + make install PREFIX=$prebuilt/genromfs + cd $prebuilt + rm -rf genromfs-0.5.2 + fi +} + +function gperf { + add_path $prebuilt/gperf/bin + + if [ ! -f "$prebuilt/gperf/bin/gperf" ]; then + cd $prebuilt + wget --quiet http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz + tar zxf gperf-3.1.tar.gz + cd $prebuilt/gperf-3.1 + ./configure --prefix=$prebuilt/gperf; make; make install + cd $prebuilt + rm -rf gperf-3.1; rm gperf-3.1.tar.gz + fi +} + +function kconfig-frontends { + add_path $prebuilt/kconfig-frontends/bin + + if [ ! -f "$prebuilt/kconfig-frontends/bin/kconfig-conf" ]; then + cd $tools/kconfig-frontends + ./configure --prefix=$prebuilt/kconfig-frontends \ + --disable-kconfig --disable-nconf --disable-qconf \ + --disable-gconf --disable-mconf --disable-static \ + --disable-shared --disable-L10n + # Avoid "aclocal/automake missing" errors + touch aclocal.m4 Makefile.in + make install + cd $tools; git clean -xfd + fi +} + +function bloaty { + add_path $prebuilt/bloaty/bin + if [ ! -f "$prebuilt/bloaty/bin/bloaty" ]; then + git clone --depth 1 --branch v1.1 https://github.com/google/bloaty bloaty-src + cd bloaty-src + mkdir -p $prebuilt/bloaty + cmake -DCMAKE_SYSTEM_PREFIX_PATH=$prebuilt/bloaty + make install -j 6 + cd $prebuilt + rm -rf bloaty-src + fi +} + +function arm-gcc-toolchain { + add_path $prebuilt/gcc-arm-none-eabi/bin + + if [ ! -f "$prebuilt/gcc-arm-none-eabi/bin/arm-none-eabi-gcc" ]; then + local flavor + case $os in + Darwin) + flavor=mac + ;; + Linux) + flavor=x86_64-linux + ;; + esac + cd $prebuilt + wget --quiet https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-${flavor}.tar.bz2 + tar jxf gcc-arm-none-eabi-9-2019-q4-major-${flavor}.tar.bz2 + mv gcc-arm-none-eabi-9-2019-q4-major gcc-arm-none-eabi + rm gcc-arm-none-eabi-9-2019-q4-major-${flavor}.tar.bz2 + fi + arm-none-eabi-gcc --version +} + +function mips-gcc-toolchain { + add_path $prebuilt/pinguino-compilers/linux64/p32/bin + + if [ ! -f "$prebuilt/pinguino-compilers/linux64/p32/bin/p32-gcc" ]; then + cd $prebuilt + git clone https://github.com/PinguinoIDE/pinguino-compilers + fi + p32-gcc --version +} + +function riscv-gcc-toolchain { + add_path $prebuilt/riscv64-unknown-elf-gcc/bin + + if [ ! -f "$prebuilt/riscv64-unknown-elf-gcc/bin/riscv64-unknown-elf-gcc" ]; then + local flavor + case $os in + Darwin) + flavor=x86_64-apple-darwin + ;; + Linux) + flavor=x86_64-linux-ubuntu14 + ;; + esac + cd $prebuilt + wget --quiet https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor}.tar.gz + tar zxf riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor}.tar.gz + mv riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor} riscv64-unknown-elf-gcc + rm riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor}.tar.gz + fi + riscv64-unknown-elf-gcc --version +} + +function xtensa-esp32-gcc-toolchain { + add_path $prebuilt/xtensa-esp32-elf/bin + + if [ ! -f "$prebuilt/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc" ]; then + cd $prebuilt + case $os in + Darwin) + wget --quiet https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2019r2-macos.tar.gz + tar xzf xtensa-esp32-elf-gcc8_2_0-esp-2019r2-macos.tar.gz + rm xtensa-esp32-elf-gcc8_2_0-esp-2019r2-macos.tar.gz + ;; + Linux) + wget --quiet https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar.xz + xz -d xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar.xz + tar xf xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar + rm xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar + ;; + esac + fi + xtensa-esp32-elf-gcc --version + pip3 install esptool +} + +function avr-gcc-toolchain { + if ! type avr-gcc > /dev/null; then + case $os in + Darwin) + brew tap osx-cross/avr + brew install avr-gcc + ;; + esac + fi +} + +function rx-gcc-toolchain { + add_path $prebuilt/renesas-toolchain/rx-elf-gcc/bin + + if [ ! -f "$prebuilt/renesas-toolchain/rx-elf-gcc/bin/rx-elf-gcc" ]; then + case $os in + Linux) + # Download toolchain source code + # RX toolchain is built from source code. Once prebuilt RX toolchain is made available, the below code snippet can be removed. + mkdir -p $prebuilt/renesas-tools/rx/source; cd $prebuilt/renesas-tools/rx/source + wget --quiet https://gcc-renesas.com/downloads/d.php?f=rx/binutils/4.8.4.201803-gnurx/rx_binutils2.24_2018Q3.tar.gz \ + -O rx_binutils2.24_2018Q3.tar.gz + tar zxf rx_binutils2.24_2018Q3.tar.gz + wget --quiet https://gcc-renesas.com/downloads/d.php?f=rx/gcc/4.8.4.201803-gnurx/rx_gcc_4.8.4_2018Q3.tar.gz \ + -O rx_gcc_4.8.4_2018Q3.tar.gz + tar zxf rx_gcc_4.8.4_2018Q3.tar.gz + wget --quiet https://gcc-renesas.com/downloads/d.php?f=rx/newlib/4.8.4.201803-gnurx/rx_newlib2.2.0_2018Q3.tar.gz \ + -O rx_newlib2.2.0_2018Q3.tar.gz + tar zxf rx_newlib2.2.0_2018Q3.tar.gz + + # Install binutils + cd $prebuilt/renesas-tools/rx/source/binutils; chmod +x ./configure ./mkinstalldirs + mkdir -p $prebuilt/renesas-tools/rx/build/binutils; cd $prebuilt/renesas-tools/rx/build/binutils + $prebuilt/renesas-tools/rx/source/binutils/configure --target=rx-elf --prefix=$prebuilt/renesas-toolchain/rx-elf-gcc \ + --disable-werror + make; make install + + # Install gcc + cd $prebuilt/renesas-tools/rx/source/gcc + chmod +x ./contrib/download_prerequisites ./configure ./move-if-change ./libgcc/mkheader.sh + ./contrib/download_prerequisites + sed -i '1s/^/@documentencoding ISO-8859-1\n/' ./gcc/doc/gcc.texi + sed -i 's/@tex/\n&/g' ./gcc/doc/gcc.texi && sed -i 's/@end tex/\n&/g' ./gcc/doc/gcc.texi + mkdir -p $prebuilt/renesas-tools/rx/build/gcc; cd $prebuilt/renesas-tools/rx/build/gcc + $prebuilt/renesas-tools/rx/source/gcc/configure --target=rx-elf --prefix=$prebuilt/renesas-toolchain/rx-elf-gcc \ + --disable-shared --disable-multilib --disable-libssp --disable-libstdcxx-pch --disable-werror --enable-lto \ + --enable-gold --with-pkgversion=GCC_Build_1.02 --with-newlib --enable-languages=c + make; make install + + # Install newlib + cd $prebuilt/renesas-tools/rx/source/newlib; chmod +x ./configure + mkdir -p $prebuilt/renesas-tools/rx/build/newlib; cd $prebuilt/renesas-tools/rx/build/newlib + $prebuilt/renesas-tools/rx/source/newlib/configure --target=rx-elf --prefix=$prebuilt/renesas-toolchain/rx-elf-gcc + make; make install + rm -rf $prebuilt/renesas-tools/ + ;; + esac + fi + rx-elf-gcc --version +} + +function c-cache { + add_path $prebuilt/ccache/bin + + if ! type ccache > /dev/null; then + case $os in + Darwin) + brew install ccache + ;; + Linux) + cd $prebuilt; + wget https://github.com/ccache/ccache/releases/download/v3.7.7/ccache-3.7.7.tar.gz + tar zxf ccache-3.7.7.tar.gz + cd ccache-3.7.7; ./configure --prefix=$prebuilt/ccache; make; make install + cd $prebuilt; rm -rf ccache-3.7.7; rm ccache-3.7.7.tar.gz + ;; + esac + fi + + ccache --version + mkdir -p $prebuilt/ccache/bin/ + ln -sf `which ccache` $prebuilt/ccache/bin/x86_64-elf-gcc + ln -sf `which ccache` $prebuilt/ccache/bin/x86_64-elf-g++ + ln -sf `which ccache` $prebuilt/ccache/bin/cc + ln -sf `which ccache` $prebuilt/ccache/bin/c++ + ln -sf `which ccache` $prebuilt/ccache/bin/clang + ln -sf `which ccache` $prebuilt/ccache/bin/clang++ + ln -sf `which ccache` $prebuilt/ccache/bin/gcc + ln -sf `which ccache` $prebuilt/ccache/bin/g++ + ln -sf `which ccache` $prebuilt/ccache/bin/arm-none-eabi-gcc + ln -sf `which ccache` $prebuilt/ccache/bin/arm-none-eabi-g++ + ln -sf `which ccache` $prebuilt/ccache/bin/p32-gcc + ln -sf `which ccache` $prebuilt/ccache/bin/riscv64-unknown-elf-gcc + ln -sf `which ccache` $prebuilt/ccache/bin/riscv64-unknown-elf-g++ + ln -sf `which ccache` $prebuilt/ccache/bin/xtensa-esp32-elf-gcc + ln -sf `which ccache` $prebuilt/ccache/bin/avr-gcc + ln -sf `which ccache` $prebuilt/ccache/bin/avr-g++ +} + +function binutils { + mkdir -p $prebuilt/bintools/bin + add_path $prebuilt/bintools/bin + + if ! type objcopy > /dev/null; then + case $os in + Darwin) + brew install binutils + # It is possible we cached prebuilt but did brew install so recreate + # simlink if it exists + rm -f $prebuilt/bintools/bin/objcopy + ln -s /usr/local/opt/binutils/bin/objcopy $prebuilt/bintools/bin/objcopy + ;; + esac + fi +} + +function usage { + echo "" + echo "USAGE: $0 [-i] [-s] [-c] [-*] " + echo " $0 -h" + echo "" + echo "Where:" + echo " -i install tools" + echo " -s setup repos" + echo " -c enable ccache" + echo " -* support all options in testbuild.sh" + echo " -h will show this help test and terminate" + echo " select testlist file" + echo "" + exit 1 +} + +function enable_ccache { + export USE_CCACHE=1; + ccache -z + ccache -M 5G; + ccache -s +} + +function setup_repos { + pushd . + if [ -d "$nuttx" ]; then + cd $nuttx; git pull + else + git clone https://github.com/apache/incubator-nuttx.git $nuttx + cd $nuttx + fi + git log -1 + + if [ -d "$apps" ]; then + cd $apps; git pull + else + git clone https://github.com/apache/incubator-nuttx-apps.git $apps + cd $apps + fi + git log -1 + popd +} + +function install_tools { + pushd . + for func in $install; do + $func + done + popd + + echo PATH=$EXTRA_PATH\$PATH > $prebuilt/env.sh +} + +function run_builds { + local ncpus + + case $os in + Darwin) + ncpus=$(sysctl -n hw.ncpu) + ;; + Linux) + ncpus=`grep -c ^processor /proc/cpuinfo` + ;; + esac + + options+="-j $ncpus" + + for build in $builds; do + $nuttx/tools/testbuild.sh $options -e "-Wno-cpp -Werror" $build + done +} + +if [ -z "$1" ]; then + usage +fi + +while [ ! -z "$1" ]; do + case "$1" in + -h ) + usage + ;; + -i ) + install_tools + ;; + -c ) + enable_ccache + ;; + -s ) + setup_repos + ;; + -* ) + options+="$1 " + ;; + * ) + builds=$@ + break + ;; + esac + shift +done + +run_builds diff --git a/tools/ci/docker/linux/Dockerfile b/tools/ci/docker/linux/Dockerfile new file mode 100644 index 0000000000..c5cd371c69 --- /dev/null +++ b/tools/ci/docker/linux/Dockerfile @@ -0,0 +1,279 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +FROM ubuntu:20.04 AS builder-base +# NOTE WE ARE NOT REMOVEING APT CACHE. +# This should only be used for temp build images that artifacts will be copied from +RUN apt-get update -qq && apt-get install -y -qq \ + curl \ + xz-utils + +############################################################################### +# Base image that should be used to prepare tools from nuttx-tools +############################################################################### +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 \ + g++ \ + gawk \ + git + +RUN mkdir /tools +WORKDIR /tools + +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 \ + && make install + +RUN cd nuttx-tools \ + && mkdir genromfs \ + && tar -C genromfs --strip-components=1 -xf genromfs-0.5.2.tar.gz \ + && 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 \ + && make install + +CMD [ "/bin/bash" ] + +############################################################################### +# Base image that should be used to prepare arch build images +############################################################################### +FROM builder-base AS nuttx-toolchain-base + +RUN mkdir /tools +WORKDIR /tools + +############################################################################### +# Build image for tool required by ARM builds +############################################################################### +FROM nuttx-toolchain-base AS nuttx-toolchain-arm +# 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-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=108bd959-44bd-4619-9c19-26187abf5225&la=en&hash=E788CE92E5DFD64B2A8C246BBA91A249CB8E2D2D" \ + | tar -C gcc-arm-none-eabi --strip-components 1 -xj + +############################################################################### +# Build image for tool required by Pinguino builds +############################################################################### +FROM nuttx-toolchain-base AS nuttx-toolchain-pinguino +# Download the pinguino compilers. Note this includes both 8bit and 32bit +# toolchains and builds for multiple host systems. Only copy what is needed. +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 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-2020r3/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz" \ + | tar -C xtensa-esp32-elf-gcc --strip-components 1 -xz + +RUN echo "ESP Binaries: 2021/02/20" +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/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 + +############################################################################### +# 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 \ + libncurses5-dev \ + m4 \ + make \ + gcc \ + g++ \ + wget + +# Download toolchain source code +RUN mkdir -p /tools/renesas-tools/source/binutils && \ + curl -s -L "https://gcc-renesas.com/downloads/d.php?f=rx/binutils/4.8.4.201803-gnurx/rx_binutils2.24_2018Q3.tar.gz" \ + | tar -C renesas-tools/source/binutils --strip-components=1 -xz +RUN mkdir -p /tools/renesas-tools/source/gcc && \ + curl -s -L "https://gcc-renesas.com/downloads/d.php?f=rx/gcc/4.8.4.201803-gnurx/rx_gcc_4.8.4_2018Q3.tar.gz" \ + | tar -C renesas-tools/source/gcc --strip-components=1 -xz +RUN mkdir -p /tools/renesas-tools/source/newlib && \ + curl -s -L "https://gcc-renesas.com/downloads/d.php?f=rx/newlib/4.8.4.201803-gnurx/rx_newlib2.2.0_2018Q3.tar.gz" \ + | tar -C renesas-tools/source/newlib --strip-components=1 -xz + +# Install binutils +RUN cd renesas-tools/source/binutils && \ + chmod +x ./configure ./mkinstalldirs && \ + mkdir -p /tools/renesas-tools/build/binutils && cd /tools/renesas-tools/build/binutils && \ + /tools/renesas-tools/source/binutils/configure --target=rx-elf --prefix=/tools/renesas-toolchain/rx-elf-gcc --disable-werror &&\ + make && make install +ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH" + +# Install gcc +RUN cd renesas-tools/source/gcc && \ + chmod +x ./contrib/download_prerequisites ./configure ./move-if-change ./libgcc/mkheader.sh && \ + ./contrib/download_prerequisites && \ + sed -i '1s/^/@documentencoding ISO-8859-1\n/' ./gcc/doc/gcc.texi && \ + sed -i 's/@tex/\n&/g' ./gcc/doc/gcc.texi && sed -i 's/@end tex/\n&/g' ./gcc/doc/gcc.texi && \ + mkdir -p /tools/renesas-tools/build/gcc && cd /tools/renesas-tools/build/gcc && \ + /tools/renesas-tools/source/gcc/configure --target=rx-elf --prefix=/tools/renesas-toolchain/rx-elf-gcc \ + --disable-shared --disable-multilib --disable-libssp --disable-libstdcxx-pch --disable-werror --enable-lto \ + --enable-gold --with-pkgversion=GCC_Build_1.02 --with-newlib --enable-languages=c && \ + make && make install +ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH" + +# Install newlib +RUN cd renesas-tools/source/newlib && \ + chmod +x ./configure && \ + mkdir -p /tools/renesas-tools/build/newlib && cd /tools/renesas-tools/build/newlib && \ + /tools/renesas-tools/source/newlib/configure --target=rx-elf --prefix=/tools/renesas-toolchain/rx-elf-gcc && \ + make && make install +RUN cd /tools/renesas-tools/build/gcc && \ + make && make install + + +############################################################################### +# Final Docker image used for running CI system. This includes all toolchains +# supported by the CI system. +############################################################################### +FROM ubuntu:20.04 +LABEL maintainer="dev@nuttx.apache.org" + +RUN dpkg --add-architecture i386 +# This is used for the final images so make sure to not store apt cache +# Note: xtensa-esp32-elf-gdb is linked to libpython2.7 +RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -qq --no-install-recommends \ + -o APT::Immediate-Configure=0 \ + avr-libc \ + build-essential \ + ccache \ + curl \ + gcc \ + gcc-avr \ + gcc-multilib \ + gettext \ + git \ + lib32z1-dev \ + libc6-dev-i386 \ + libasound2-dev libasound2-dev:i386 \ + libcurl4-openssl-dev \ + libpulse-dev libpulse-dev:i386 \ + libpython2.7 \ + libx11-dev libx11-dev:i386 \ + libxext-dev libxext-dev:i386 \ + linux-libc-dev:i386 \ + linux-headers-generic \ + python3 \ + python3-pip \ + python-is-python3 \ + u-boot-tools \ + unzip \ + wget \ + xxd \ + && rm -rf /var/lib/apt/lists/* + + +# Configure out base setup for adding python packages +ENV PIP_DISABLE_PIP_VERSION_CHECK=true +# This disables the cache with value 0. We do not want caching as it +# increases the images size. +ENV PIP_NO_CACHE_DIR=0 +# We are using the minimal python installation from the system so include +# setuptools and also wheel so we can use the binary releases of packages +# instead of requiring them to be compiled. +RUN pip3 install setuptools wheel + +RUN mkdir /tools +WORKDIR /tools + +# Pull in the tools we just built for nuttx +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" + +# 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" + +# MIPS toolchain +COPY --from=nuttx-toolchain-pinguino /tools/pinguino-compilers/p32/ pinguino-compilers/p32/ +ENV PATH="/tools/pinguino-compilers/p32/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" + +# ESP32 toolchain +COPY --from=nuttx-toolchain-esp32 /tools/xtensa-esp32-elf-gcc/ xtensa-esp32-elf-gcc/ +ENV PATH="/tools/xtensa-esp32-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" + +# Configure ccache +RUN mkdir -p /tools/ccache/bin && \ + 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/p32-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/xtensa-esp32-elf-gcc && \ + ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32-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 +ENV PATH="/tools/ccache/bin:$PATH" + +CMD [ "/bin/bash" ] diff --git a/tools/ci/testlist/all.dat b/tools/ci/testlist/all.dat new file mode 100644 index 0000000000..b630b10f6a --- /dev/null +++ b/tools/ci/testlist/all.dat @@ -0,0 +1,35 @@ +/arm,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-eagle100:nxflat +-eagle100:thttpd +-imxrt1050-evk:libcxxtest +-imxrt1060-evk:libcxxtest +-launchxl-cc1310:nsh +-launchxl-tms57004:nsh +-lpcxpresso-lpc1768:thttpd +-moxa:nsh +-olimex-lpc1766stk:slip-httpd +-olimex-lpc1766stk:thttpd-nxflat +-shenzhou:thttpd +-stm32f4discovery:cxxtest +-stm32f4discovery:testlibcxx +-stm32f4discovery:winbuild +-tms570ls31x-usb-kit:nsh +-zkit-arm-1769:thttpd + +/mips,CONFIG_MIPS32_TOOLCHAIN_PINGUINOL + +/risc-v,CONFIG_RV32IM_TOOLCHAIN_GNU_RVGL + +/sim + +/x86 + +/x86_64 + +/xtensa + +/renesas/rx65n/rx65n-grrose +-rx65n-grrose:ipv6 + +/renesas/rx65n/rx65n-rsk2mb +-rx65n-rsk2mb:ipv6 diff --git a/tools/ci/testlist/arm-01.dat b/tools/ci/testlist/arm-01.dat new file mode 100644 index 0000000000..b22a0842a0 --- /dev/null +++ b/tools/ci/testlist/arm-01.dat @@ -0,0 +1 @@ +/arm/[a-h]*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-02.dat b/tools/ci/testlist/arm-02.dat new file mode 100644 index 0000000000..1562c2d445 --- /dev/null +++ b/tools/ci/testlist/arm-02.dat @@ -0,0 +1,3 @@ +/arm/[i-k]*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-imxrt1050-evk:libcxxtest +-imxrt1060-evk:libcxxtest diff --git a/tools/ci/testlist/arm-03.dat b/tools/ci/testlist/arm-03.dat new file mode 100644 index 0000000000..8e92ab6b00 --- /dev/null +++ b/tools/ci/testlist/arm-03.dat @@ -0,0 +1,5 @@ +/arm/lpc17xx_40xx,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-lpcxpresso-lpc1768:thttpd +-olimex-lpc1766stk:slip-httpd +-olimex-lpc1766stk:thttpd-nxflat +-zkit-arm-1769:thttpd diff --git a/tools/ci/testlist/arm-04.dat b/tools/ci/testlist/arm-04.dat new file mode 100644 index 0000000000..de8f68647b --- /dev/null +++ b/tools/ci/testlist/arm-04.dat @@ -0,0 +1,11 @@ +/arm/lc823450,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/lpc214x,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/lpc2378,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/lpc31xx,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/lpc43xx,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/lpc54xx,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-05.dat b/tools/ci/testlist/arm-05.dat new file mode 100644 index 0000000000..e79de836c9 --- /dev/null +++ b/tools/ci/testlist/arm-05.dat @@ -0,0 +1,6 @@ +/arm/[m-r]*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-moxa:nsh + +/arm/s32k1xx,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/sam34,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-06.dat b/tools/ci/testlist/arm-06.dat new file mode 100644 index 0000000000..c733d4c60e --- /dev/null +++ b/tools/ci/testlist/arm-06.dat @@ -0,0 +1,7 @@ +/arm/sama5,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/samd2l2,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/samd5e5,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/samv7,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-07.dat b/tools/ci/testlist/arm-07.dat new file mode 100644 index 0000000000..c531b45b3f --- /dev/null +++ b/tools/ci/testlist/arm-07.dat @@ -0,0 +1,7 @@ +/arm/stm32/[a-m]*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/nucleo-f1*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/nucleo-f2*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/nucleo-f30*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-08.dat b/tools/ci/testlist/arm-08.dat new file mode 100644 index 0000000000..ac945ace3c --- /dev/null +++ b/tools/ci/testlist/arm-08.dat @@ -0,0 +1,9 @@ +/arm/stm32/nucleo-f33*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/nucleo-f4*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/nucleo-g*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/nucleo-l*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/olimex-*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-09.dat b/tools/ci/testlist/arm-09.dat new file mode 100644 index 0000000000..277107012c --- /dev/null +++ b/tools/ci/testlist/arm-09.dat @@ -0,0 +1,14 @@ +/arm/stm32/olimexino-stm32,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/omnibusf4,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/photon,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/shenzhou,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-shenzhou:thttpd + +/arm/stm32/stm3210e-eval,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm3220g-eval,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm3240g-eval,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-10.dat b/tools/ci/testlist/arm-10.dat new file mode 100644 index 0000000000..c30d5ba188 --- /dev/null +++ b/tools/ci/testlist/arm-10.dat @@ -0,0 +1,15 @@ +/arm/stm32/stm32_tiny,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32butterfly2,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32f103-minimum,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32f334-disco,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32f3discovery,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32f411-minimum,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32f411e-disco,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32f429i-disco,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-11.dat b/tools/ci/testlist/arm-11.dat new file mode 100644 index 0000000000..2d8f2239a7 --- /dev/null +++ b/tools/ci/testlist/arm-11.dat @@ -0,0 +1,10 @@ +/arm/stm32/stm32f4discovery,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-stm32f4discovery:cxxtest +-stm32f4discovery:testlibcxx +-stm32f4discovery:winbuild + +/arm/stm32/stm32ldiscovery,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/stm32vldiscovery,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32/viewtool-stm32f107,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-12.dat b/tools/ci/testlist/arm-12.dat new file mode 100644 index 0000000000..5fcca3045e --- /dev/null +++ b/tools/ci/testlist/arm-12.dat @@ -0,0 +1,3 @@ +/arm/stm32f*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/stm32h*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL diff --git a/tools/ci/testlist/arm-13.dat b/tools/ci/testlist/arm-13.dat new file mode 100644 index 0000000000..3d48e0ac19 --- /dev/null +++ b/tools/ci/testlist/arm-13.dat @@ -0,0 +1,10 @@ +/arm/stm32l*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/str71x,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +/arm/[t-z]*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL +-eagle100:nxflat +-eagle100:thttpd +-launchxl-cc1310:nsh +-launchxl-tms57004:nsh +-tms570ls31x-usb-kit:nsh diff --git a/tools/ci/testlist/macos.dat b/tools/ci/testlist/macos.dat new file mode 100644 index 0000000000..4b5f6e63ae --- /dev/null +++ b/tools/ci/testlist/macos.dat @@ -0,0 +1,38 @@ +# Chose a minimalistic subset of board/configs due to macOS builds +# being extremely slow on GitHub + +# AVR +# +# We do not have a toolchain for avr32 outside of Microchip login wall. +# The work was never upstreamed to GCC. + +/avr/atmega/arduino-mega2560/configs/nsh + +# MIPS +# +# PINGUINOL toolchain doesn't provide macOS binaries +# with the same name + +#/mips/pic32mx/pic32mx-starterkit/configs/nsh,CONFIG_MIPS32_TOOLCHAIN_PINGUINOL + +# RISC-V + +/risc-v/bl602/bl602evb/configs/wifi,CONFIG_RV32IM_TOOLCHAIN_GNU_RVGL + +/risc-v/esp32c3/esp32c3-devkit/configs/wapi,CONFIG_RV32IM_TOOLCHAIN_GNU_RVGL + +# ARM + +/arm/stm32/stm32f4discovery/configs/nsh,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL + +# XTENSA + +/xtensa/esp32/esp32-devkitc/configs/wapi + +# x86_64-elf-gcc from homebrew doesn't seem to +# provide __udivdi3 etc for -m32, so we do not build +# x86 + +# x86_64 + +/x86_64/intel64/qemu-intel64/configs/nsh diff --git a/tools/ci/testlist/other.dat b/tools/ci/testlist/other.dat new file mode 100644 index 0000000000..fea100e57b --- /dev/null +++ b/tools/ci/testlist/other.dat @@ -0,0 +1,18 @@ +# We do not have a toolchain for avr32 outside of Microchip login wall. +# The work was never upstreamed to GCC. +/avr +-avr32dev1:nsh +-avr32dev1:ostest + +# PINGUINOL toolchain doesn't provide macOS binaries +# with the same name +/mips,CONFIG_MIPS32_TOOLCHAIN_PINGUINOL + +/renesas/rx65n/rx65n-grrose +/renesas/rx65n/rx65n-rsk2mb + +/x86 + +# x86_64-elf-gcc from homebrew doesn't seem to +# provide __udivdi3 etc for -m32 +/x86_64 diff --git a/tools/ci/testlist/risc-v.dat b/tools/ci/testlist/risc-v.dat new file mode 100644 index 0000000000..10556d7e0b --- /dev/null +++ b/tools/ci/testlist/risc-v.dat @@ -0,0 +1 @@ +/risc-v,CONFIG_RV32IM_TOOLCHAIN_GNU_RVGL diff --git a/tools/ci/testlist/sim01.dat b/tools/ci/testlist/sim01.dat new file mode 100644 index 0000000000..5c6588d3d8 --- /dev/null +++ b/tools/ci/testlist/sim01.dat @@ -0,0 +1,21 @@ +/sim/*/*/*/[a-n]* + +# macOS doesn't have ALSA +-Darwin,sim:alsa + +-Darwin,sim:cxxtest +-Darwin,sim:libcxxtest + +# Do not build Linux configs +-Darwin,sim:linuxi2c + +# macOS doesn't support 32bit(CONFIG_SIM_M32=y) anymore +-Darwin,sim:loadable +-Darwin,sim:module32 + +# macOS doesn't have X11 +-Darwin,sim:lvgl +-Darwin,sim:nsh2 +-Darwin,sim:nx11 +-Darwin,sim:nxlines +-Darwin,sim:nxwm diff --git a/tools/ci/testlist/sim02.dat b/tools/ci/testlist/sim02.dat new file mode 100644 index 0000000000..677370d37f --- /dev/null +++ b/tools/ci/testlist/sim02.dat @@ -0,0 +1,9 @@ +/sim/*/*/*/[o-z]* + +# macOS doesn't support 32bit anymore(CONFIG_SIM_M32=y) +-Darwin,sim:rpproxy +-Darwin,sim:rpserver +-Darwin,sim:sotest32 + +# macOS doesn't have X11 +-Darwin,sim:touchscreen diff --git a/tools/ci/testlist/xtensa.dat b/tools/ci/testlist/xtensa.dat new file mode 100644 index 0000000000..0fec540ce6 --- /dev/null +++ b/tools/ci/testlist/xtensa.dat @@ -0,0 +1 @@ +/xtensa