name: RT-Thread BSP build check # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the master branch on: # Runs at 16:00 UTC (BeiJing 00:00) on the 1st of every month schedule: - cron: '0 16 1 * *' push: branches: - master paths-ignore: - documentation/** - '**/README.md' - '**/README_zh.md' pull_request: branches: - master paths-ignore: - documentation/** - '**/README.md' - '**/README_zh.md' permissions: contents: read # to fetch code (actions/checkout) jobs: build: runs-on: ubuntu-latest name: ${{ matrix.legs.RTT_BSP }} if: github.repository_owner == 'RT-Thread' strategy: fail-fast: false matrix: legs: - RTT_BSP: "others_at32_hc32" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "qemu-vexpress-a9" - "airm2m/air32f103" - "acm32/acm32f0x0-nucleo" - "CME_M7" - "apollo2" - "asm9260t" - "allwinner_tina" - "ft32/ft32f072xb-starter" - "mini2440" - "at91/at91sam9g45" - "at91/at91sam9260" - "wch/arm/ch32f103c8-core" - "wch/arm/ch32f203r-evt" - "synwit/swm320" - "synwit/swm341" - "beaglebone" - "zynqmp-r5-axu4ev" - "at32/at32f403a-start" - "at32/at32f407-start" - "at32/at32f413-start" - "at32/at32f415-start" - "at32/at32f421-start" - "at32/at32f423-start" - "at32/at32f425-start" - "at32/at32f435-start" - "at32/at32f437-start" - "yichip/yc3122-pos" - "hc32/ev_hc32f4a0_lqfp176" - "hc32/ev_hc32f460_lqfp100_v2" - "hc32l196" - "mm32/mm32f3270-100ask-pitaya" - "sam7x" - "hk32/hk32f030c8-mini" - "acm32/acm32f0x0-nucleo" - "acm32/acm32f4xx-nucleo" - RTT_BSP: "stm32l4_f0_f1" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "stm32/stm32l4r5-st-nucleo" - "stm32/stm32l4r9-st-eval" - "stm32/stm32l4r9-st-sensortile-box" - "stm32/stm32l010-st-nucleo" - "stm32/stm32l053-st-nucleo" - "stm32/stm32l412-st-nucleo" - "stm32/stm32l431-BearPi" - "stm32/stm32l432-st-nucleo" - "stm32/stm32l433-ali-startkit" - "stm32/stm32l433-st-nucleo" - "stm32/stm32l452-st-nucleo" - "stm32/stm32l475-atk-pandora" - "stm32/stm32l475-st-discovery" - "stm32/stm32l476-st-nucleo" - "stm32/stm32l496-ali-developer" - "stm32/stm32l496-st-nucleo" - "stm32/stm32l496-st-discovery" - "stm32/stm32f072-st-nucleo" - "stm32/stm32f091-st-nucleo" - "stm32/stm32f103-100ask-mini" - "stm32/stm32f103-100ask-pro" - "stm32/stm32f103-atk-nano" - "stm32/stm32f103-atk-warshipv3" - "stm32/stm32f103-blue-pill" - "stm32/stm32f103-dofly-lyc8" - "stm32/stm32f103-dofly-M3S" - "stm32/stm32f103-fire-arbitrary" - "stm32/stm32f103-gizwits-gokitv21" - "stm32/stm32f103-hw100k-ibox" - "stm32/stm32f103-onenet-nbiot" - "stm32/stm32f103-yf-ufun" - "stm32/stm32f103-ys-f1pro" - "stm32/stm32f107-uc-eval" - RTT_BSP: "stm32_f2_f4" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "stm32/stm32f207-st-nucleo" - "stm32/stm32f302-st-nucleo" - "stm32/stm32f334-st-nucleo" - "stm32/stm32f401-st-nucleo" - "stm32/stm32f401-weact-blackpill" - "stm32/stm32f405-smdz-breadfruit" - "stm32/stm32f407-armfly-v5" - "stm32/stm32f407-atk-explorer" - "stm32/stm32f407-robomaster-c" - "stm32/stm32f407-st-discovery" - "stm32/stm32f410-st-nucleo" - "stm32/stm32f411-atk-nano" - "stm32/stm32f411-st-nucleo" - "stm32/stm32f411-weact-blackpill" - "stm32/stm32f412-st-nucleo" - "stm32/stm32f413-st-nucleo" - "stm32/stm32f427-robomaster-a" - "stm32/stm32f429-armfly-v6" - "stm32/stm32f429-atk-apollo" - "stm32/stm32f429-fire-challenger" - "stm32/stm32f429-st-disco" - "stm32/stm32f446-st-nucleo" - "stm32/stm32f469-st-disco" - RTT_BSP: "stm32_f7_g0_h7_mp15_u5_h5_wb5" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "stm32/stm32f746-st-disco" - "stm32/stm32f746-st-nucleo" - "stm32/stm32f767-atk-apollo" - "stm32/stm32f767-fire-challenger-v1" - "stm32/stm32f767-st-nucleo" - "stm32/stm32f769-st-disco" - "stm32/stm32f723-st-disco" - "stm32/stm32g070-st-nucleo" - "stm32/stm32g071-st-nucleo" - "stm32/stm32g431-st-nucleo" - "stm32/stm32g474-st-nucleo" - "stm32/stm32h563-st-nucleo" - "stm32/stm32h743-armfly-v7" - "stm32/stm32h743-atk-apollo" - "stm32/stm32h743-openmv-h7plus" - "stm32/stm32h743-st-nucleo" - "stm32/stm32h747-st-discovery" - "stm32/stm32h750-artpi" - "stm32/stm32h750-weact-ministm32h7xx" - "stm32/stm32h750-fk750m1-vbt6" - "stm32/stm32mp157a-st-discovery" - "stm32/stm32mp157a-st-ev1" - "stm32/stm32u575-st-nucleo" - "stm32/stm32u585-iot02a" - "stm32/stm32wb55-st-nucleo" - RTT_BSP: "nxp_renesas" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "lpc55sxx/lpc55s69_nxp_evk" - "lpc55sxx/lpc55s28_nxp_evk" - "lpc55sxx/lpc55s06_nxp_evk" - "lpc55sxx/lpc55s16_nxp_evk" - "lpc55sxx/lpc55s36_nxp_evk" - "lpc178x" - "lpc408x" - "lpc1114" - "lpc2148" - "lpc2478" - "lpc5410x" - "lpc54114-lite" - "imx6sx/cortex-a9" - "imxrt/imxrt1052-atk-commander" - "imxrt/imxrt1052-fire-pro" - "imxrt/imxrt1052-nxp-evk" - "imxrt/imxrt1052-seeed-ArchMix" - "imxrt/imxrt1060-nxp-evk" - "imxrt/imxrt1064-nxp-evk" - "imxrt/imxrt1021-nxp-evk" - "frdm-k64f" - "lpc176x" - "xplorer4330/M4" #- "lpc43xx/M4" - "renesas/ebf_qi_min_6m5" - "renesas/ra6m4-cpk" - "renesas/ra6m4-iot" - "renesas/ra6m3-ek" - "renesas/ra6m3-hmi-board" - "renesas/ra4m2-eco" - "renesas/ra2l1-cpk" - RTT_BSP: "gd32_n32_apm32" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "gd32/arm/gd32103c-eval" - "gd32/arm/gd32105c-eval" - "gd32/arm/gd32105r-start" - "gd32/arm/gd32107c-eval" - "gd32/arm/gd32205r-start" - "gd32/arm/gd32207i-eval" - "gd32/arm/gd32303e-eval" - "gd32/arm/gd32303c-start" - "gd32/arm/gd32305r-start" - "gd32/arm/gd32307e-start" - "gd32/arm/gd32407v-start" - "gd32/arm/gd32450z-eval" - "gd32/arm/gd32470z-lckfb" - "gd32e230k-start" - "gd32303e-eval" - "gd32450z-eval" - "n32/n32g43xcl-stb" - "n32/n32g45xcl-stb" - "n32/n32g45xml-stb" - "n32/n32g45xrl-stb" - "n32/n32g45xvl-stb" - "n32/n32g457qel-stb" - "n32/n32g4frml-stb" - "n32/n32l40xcl-stb" - "n32/n32l43xml-stb" - "n32/n32l43xrl-stb" - "n32/n32l436-evb" - "n32/n32wb45xl-evb" - "apm32/apm32f103xe-minibroard" - "apm32/apm32f407ig-minibroard" - "apm32/apm32f407zg-evalboard" - "apm32/apm32f072vb-miniboard" - "apm32/apm32f107vc-evalboard" - "apm32/apm32f030r8-miniboard" - "apm32/apm32f051r8-evalboard" - "apm32/apm32f091vc-miniboard" - "apm32/apm32f103vb-miniboard" - "apm32/apm32e103ze-evalboard" - "apm32/apm32e103ze-tinyboard" - "apm32/apm32s103vb-miniboard" - RTT_BSP: "nordic_Infineon_TI_microchip" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: - "nrf5x/nrf51822" - "nrf5x/nrf52832" - "nrf5x/nrf52833" - "nrf5x/nrf52840" - "nrf5x/nrf5340" - "Infineon/psoc6-cy8ckit-062S2-43012" - "Infineon/psoc6-cy8ckit-062-BLE" - "Infineon/psoc6-cy8ckit-062s4" - "Infineon/psoc6-cy8ckit-062-WIFI-BT" - "Infineon/psoc6-cy8cproto-062S3-4343W" - "Infineon/psoc6-evaluationkit-062S2" - "fujitsu/mb9x/mb9bf500r" - "fujitsu/mb9x/mb9bf506r" - "fujitsu/mb9x/mb9bf618s" - "fujitsu/mb9x/mb9bf568r" - "raspberry-pico" - "raspberry-pi/raspi3-32" - "raspberry-pi/raspi4-32" - "lm3s8962" - "lm3s9b9x" - "lm4f232" - "tm4c123bsp" - "tm4c129x" - "msp432e401y-LaunchPad" - "microchip/samc21" - "microchip/same54" - "microchip/same70" - "smartfusion2" - "maxim/max32660-evsys" # - "efm32" - RTT_BSP: "mips" RTT_TOOL_CHAIN: "sourcery-mips" SUB_RTT_BSP: - "loongson/ls1bdev" - "loongson/ls2kdev" - "loongson/ls1cdev" - RTT_BSP: "aarch64" RTT_TOOL_CHAIN: "sourcery-aarch64" SUB_RTT_BSP: - "qemu-virt64-aarch64" - "raspberry-pi/raspi3-64" - "raspberry-pi/raspi4-64" - "rockchip/rk3568" - "phytium/aarch64" - RTT_BSP: "riscv-none" RTT_TOOL_CHAIN: "sourcery-riscv-none-embed" SUB_RTT_BSP: - "gd32vf103v-eval" - "k210" - RTT_BSP: "riscv64-unknown" RTT_TOOL_CHAIN: "sourcery-riscv64-unknown-elf" SUB_RTT_BSP: - "bluetrum/ab32vg1-ab-prougen" - "bouffalo_lab/bl60x" - "bouffalo_lab/bl70x" - RTT_BSP: "llvm-arm" RTT_TOOL_CHAIN: "llvm-arm" SUB_RTT_BSP: - "stm32/stm32l475-atk-pandora" - "renesas/ra6m3-hmi-board" - RTT_BSP: "simulator" RTT_TOOL_CHAIN: "gcc" SUB_RTT_BSP: - "simulator" - RTT_BSP: "ESP32C3" RTT_TOOL_CHAIN: "sourcery-riscv32-esp32" SUB_RTT_BSP: - "ESP32_C3" steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v3 with: python-version: 3.8 - name: Install Tools shell: bash run: | sudo apt-get update wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh chmod 777 install_ubuntu.sh ./install_ubuntu.sh git config --global http.postBuffer 524288000 python -c "import tools.menuconfig; tools.menuconfig.touch_env()" echo "RTT_ROOT=${{ github.workspace }}" >> $GITHUB_ENV echo "RTT_CC=gcc" >> $GITHUB_ENV - name: Install Arm ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-arm' && success() }} shell: bash run: | wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.3/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc --version echo "RTT_EXEC_PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin" >> $GITHUB_ENV - name: Install LLVM-Arm ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'llvm-arm' && success() }} shell: bash run: | wget -q https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-16.0.0/LLVMEmbeddedToolchainForArm-16.0.0-Linux-x86_64.tar.gz sudo tar zxf LLVMEmbeddedToolchainForArm-16.0.0-Linux-x86_64.tar.gz -C /opt sudo apt-get -qq install libncurses5 libncurses5-dev libncursesw5-dev /opt/LLVMEmbeddedToolchainForArm-16.0.0-Linux-x86_64/bin/clang --version echo "RTT_CC=llvm-arm" >> $GITHUB_ENV echo "RTT_EXEC_PATH=/opt/LLVMEmbeddedToolchainForArm-16.0.0-Linux-x86_64/bin" >> $GITHUB_ENV - name: Install AArch64 ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-aarch64' && success() }} shell: bash run: | wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.6/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz sudo tar -xf gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz -C /opt /opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin/aarch64-none-elf-gcc --version echo "RTT_EXEC_PATH=/opt/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin" >> $GITHUB_ENV - name: Install Mips ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-mips' && success() }} shell: bash run: | wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.1/mips-2016.05-7-mips-sde-elf-i686-pc-linux-gnu.tar.bz2 sudo tar xjf mips-2016.05-7-mips-sde-elf-i686-pc-linux-gnu.tar.bz2 -C /opt /opt/mips-2016.05/bin/mips-sde-elf-gcc --version echo "RTT_EXEC_PATH=/opt/mips-2016.05/bin" >> $GITHUB_ENV - name: Install Riscv64-unknown-elf ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-riscv64-unknown-elf' && success() }} run: | wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.4/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz sudo tar zxf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz -C /opt /opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin/riscv64-unknown-elf-gcc --version echo "RTT_EXEC_PATH=/opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_ENV - name: Install Riscv-none-embed ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-riscv-none-embed' && success() }} run: | wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.5/xpack-riscv-none-embed-gcc-8.3.0-2.3-linux-x64.tar.gz sudo tar zxf xpack-riscv-none-embed-gcc-8.3.0-2.3-linux-x64.tar.gz -C /opt /opt/xpack-riscv-none-embed-gcc-8.3.0-2.3/bin/riscv-none-embed-gcc --version echo "RTT_EXEC_PATH=/opt/xpack-riscv-none-embed-gcc-8.3.0-2.3/bin" >> $GITHUB_ENV - name: Install riscv32-esp-elf ToolChains if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-riscv32-esp32' && success() }} run: | wget -q https://github.com/espressif/crosstool-NG/releases/download/esp-2022r1-RC1/riscv32-esp-elf-gcc11_2_0-esp-2022r1-RC1-linux-amd64.tar.xz sudo tar xf riscv32-esp-elf-gcc11_2_0-esp-2022r1-RC1-linux-amd64.tar.xz -C /opt /opt/riscv32-esp-elf/bin/riscv32-esp-elf-gcc --version pip3 install esptool echo "RTT_EXEC_PATH=/opt/riscv32-esp-elf/bin" >> $GITHUB_ENV - name: Install Simulator Tools if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'gcc' && success() }} run: | sudo apt-get -qq install libsdl2-dev - name: Bsp Scons Compile if: ${{ success() }} shell: bash env: RTT_BSP: ${{ matrix.legs.RTT_BSP }} RTT_TOOL_CHAIN: ${{ matrix.legs.RTT_TOOL_CHAIN }} SRTT_BSP: ${{ join(matrix.legs.SUB_RTT_BSP, ',') }} run: | source ~/.env/env.sh failed=0 count=0 for bsp in $(echo $SRTT_BSP | tr ',' '\n'); do count=$((count+1)) echo "::group::Compiling BSP: ==$count=== $bsp ====" echo bsp/$bsp ls bsp/$bsp/Kconfig && scons -C bsp/$bsp --pyconfig-silent pushd bsp/$bsp && pkgs --update && popd scons -C bsp/$bsp -j$(nproc) --debug=time | tee output.log || \ { total_time=$(grep "Total command execution time" output.log | awk '{print $5}'); \ failed=$((failed+1)) ; echo "::endgroup::" ; echo "::error::build $bsp failed" ; \ echo "- ❌ build $bsp failed in $total_time seconds " >> $GITHUB_STEP_SUMMARY ; } && \ { total_time=$(grep "Total command execution time" output.log | awk '{print $5}'); \ echo "- ✅ build $bsp success in $total_time seconds " >> $GITHUB_STEP_SUMMARY ; echo "::endgroup::" ; } done exit $failed