@@ -25,15 +25,15 @@ permissions:
2525jobs :
2626 test :
2727 runs-on : ubuntu-22.04
28- name : ${{ matrix.platform.UTEST }} - ${{ matrix.config_file }}
28+ name : ${{ matrix.platform.KERNEL }} - ${{ matrix.config_file }}
2929 if : github.repository_owner == 'RT-Thread'
3030 strategy :
3131 fail-fast : false
3232 matrix :
3333 platform :
34- - { UTEST: "qemu-vexpress-a9", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", SD_FILE: "sd.bin", RUN: "yes" }
35- - { UTEST: "qemu-virt64-aarch64 ", RTT_BSP: "bsp/qemu-virt64-aarch64 ", QEMU_ARCH: "aarch64 ", QEMU_MACHINE: "virt", SD_FILE: "sd.bin ", RUN: "no " }
36- - { UTEST: "qemu-virt64-riscv ", RTT_BSP: "bsp/qemu-virt64-riscv ", QEMU_ARCH: "riscv64 ", QEMU_MACHINE: "virt", SD_FILE: "None ", RUN: "yes" }
34+ - { UTEST: "qemu-vexpress-a9", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", SD_FILE: "sd.bin", RUN: "yes", KERNEL: "standard " }
35+ - { UTEST: "qemu-virt64-riscv ", RTT_BSP: "bsp/qemu-virt64-riscv ", QEMU_ARCH: "riscv64 ", QEMU_MACHINE: "virt", SD_FILE: "None ", RUN: "yes", KERNEL: "standard " }
36+ - { UTEST: "qemu-virt64-aarch64 ", RTT_BSP: "bsp/qemu-virt64-aarch64 ", QEMU_ARCH: "aarch64 ", QEMU_MACHINE: "virt", SD_FILE: "sd.bin ", RUN: "yes", KERNEL: "rtsmart " }
3737 config_file :
3838 - " default.cfg"
3939
6060 TEST_CONFIG_FILE : ${{ matrix.config_file }}
6161 TEST_SD_FILE : ${{ matrix.platform.SD_FILE }}
6262 RUN_FLAG : ${{ matrix.platform.RUN }}
63+ KERNEL_FLAG : ${{ matrix.platform.KERNEL }}
6364 steps :
6465 - uses : actions/checkout@v4
6566
@@ -70,61 +71,75 @@ jobs:
7071 sudo apt-get -yqq install scons qemu-system git
7172 pip3 install kconfiglib
7273
73- - name : Install Arm ToolChains
74- if : ${{ matrix.platform.QEMU_ARCH == 'arm' && matrix.platform.UTEST != 'rtsmart/arm' && success() }}
74+ - name : Install ToolChains
7575 shell : bash
7676 run : |
77- 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
78- sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt
79- /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc --version
80- echo "RTT_EXEC_PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin" >> $GITHUB_ENV
77+ TOOLCHAIN_INSTALLED=""
78+
79+ # Install Arm ToolChains
80+ if [[ "${{ matrix.platform.QEMU_ARCH }}" == "arm" && "${{ matrix.platform.KERNEL }}" == "standard" && "${{ matrix.config_file }}" != "rtsmart/rtsmart.cfg" ]]; then
81+ 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
82+ sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt
83+ /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc --version
84+ echo "RTT_EXEC_PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin" >> $GITHUB_ENV
85+ echo "RTT_CC_PREFIX=arm-none-eabi-" >> $GITHUB_ENV
86+ echo "TOOLCHAIN_INSTALLED=arm" >> $GITHUB_ENV
87+ fi
8188
82- - name : Install Arm Musl ToolChains
83- if : ${{ matrix.platform.QEMU_ARCH == 'arm' && matrix.platform.UTEST == 'rtsmart/arm' && success() }}
84- shell : bash
85- run : |
86- wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/arm-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
87- sudo tar xjf arm-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2 -C /opt
88- /opt/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin/arm-linux-musleabi-gcc --version
89- echo "RTT_EXEC_PATH=/opt/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
90- echo "RTT_CC_PREFIX=arm-linux-musleabi-" >> $GITHUB_ENV
91-
92- - name : Install RISC-V ToolChains
93- if : ${{ matrix.platform.QEMU_ARCH == 'riscv64' && matrix.platform.UTEST != 'rtsmart/riscv64' && success() }}
94- run : |
95- 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
96- sudo tar zxvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz -C /opt
97- /opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin/riscv64-unknown-elf-gcc --version
98- echo "RTT_EXEC_PATH=/opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_ENV
89+ # Install Arm Musl ToolChains
90+ if [[ "${{ matrix.platform.QEMU_ARCH }}" == "arm" && "${{ matrix.platform.KERNEL }}" == "rtsmart" && "${{ matrix.config_file }}" == "rtsmart/rtsmart.cfg" ]]; then
91+ wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/arm-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
92+ sudo tar xjf arm-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2 -C /opt
93+ /opt/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin/arm-linux-musleabi-gcc --version
94+ echo "RTT_EXEC_PATH=/opt/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
95+ echo "RTT_CC_PREFIX=arm-linux-musleabi-" >> $GITHUB_ENV
96+ echo "TOOLCHAIN_INSTALLED=arm-musl" >> $GITHUB_ENV
97+ fi
9998
100- - name : Install RISC-V Musl ToolChains
101- if : ${{ matrix.platform.QEMU_ARCH == 'riscv64' && matrix.platform.UTEST == 'rtsmart/riscv64' && success() }}
102- shell : bash
103- run : |
104- wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2
105- sudo tar xjf riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2 -C /opt
106- /opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-gcc --version
107- echo "RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
108- echo "RTT_CC_PREFIX=riscv64-unknown-linux-musl-" >> $GITHUB_ENV
109-
110- - name : Install AARCH64 Musl ToolChains
111- if : ${{ matrix.platform.QEMU_ARCH == 'aarch64' && matrix.platform.UTEST == 'rtsmart/aarch64' && success() }}
112- shell : bash
113- run : |
114- wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
115- sudo tar xjf aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2 -C /opt
116- /opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/aarch64-linux-musleabi-gcc --version
117- echo "RTT_EXEC_PATH=/opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
118- echo "RTT_CC_PREFIX=aarch64-linux-musleabi-" >> $GITHUB_ENV
119-
120- - name : CPP11 Preprocessing Toolchain
121- if : ${{ matrix.platform.QEMU_ARCH == 'arm' && matrix.platform.UTEST == 'components/cpp11' && success() }}
122- shell : bash
123- run : |
124- sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/c++/10.2.1/{thread,mutex,condition_variable,future}
125- sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/pthread.h
126- sudo sh -c 'echo "" > /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/sys/_pthreadtypes.h'
127- sed -i 's/-fno-exceptions//g' $TEST_BSP_ROOT/rtconfig.py
99+ # Install RISC-V ToolChains
100+ if [[ "${{ matrix.platform.QEMU_ARCH }}" == "riscv64" && "${{ matrix.platform.KERNEL }}" == "standard" && "${{ matrix.config_file }}" != "rtsmart/rtsmart.cfg" ]]; then
101+ 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
102+ sudo tar zxvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz -C /opt
103+ /opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin/riscv64-unknown-elf-gcc --version
104+ echo "RTT_EXEC_PATH=/opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_ENV
105+ echo "TOOLCHAIN_INSTALLED=riscv" >> $GITHUB_ENV
106+ fi
107+
108+ # Install RISC-V Musl ToolChains
109+ if [[ "${{ matrix.platform.QEMU_ARCH }}" == "riscv64" && "${{ matrix.platform.KERNEL }}" == "rtsmart" && "${{ matrix.config_file }}" == "rtsmart/rtsmart.cfg" ]]; then
110+ wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2
111+ sudo tar xjf riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2 -C /opt
112+ /opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-gcc --version
113+ echo "RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
114+ echo "RTT_CC_PREFIX=riscv64-unknown-linux-musl-" >> $GITHUB_ENV
115+ echo "TOOLCHAIN_INSTALLED=riscv-musl" >> $GITHUB_ENV
116+ fi
117+
118+ # Install AARCH64 Musl ToolChains
119+ if [[ "${{ matrix.platform.QEMU_ARCH }}" == "aarch64" && "${{ matrix.platform.KERNEL }}" == "rtsmart" && "${{ matrix.config_file }}" == "rtsmart/rtsmart.cfg" ]]; then
120+ wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
121+ sudo tar xjf aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2 -C /opt
122+ /opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/aarch64-linux-musleabi-gcc --version
123+ echo "RTT_EXEC_PATH=/opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
124+ echo "RTT_CC_PREFIX=aarch64-linux-musleabi-" >> $GITHUB_ENV
125+ echo "TOOLCHAIN_INSTALLED=aarch64-musl" >> $GITHUB_ENV
126+ fi
127+
128+ # Install CPP11 Preprocessing Toolchain
129+ if [[ "${{ matrix.platform.QEMU_ARCH }}" == "arm" && "${{ matrix.config_file }}" == "cpp11/cpp11.cfg" ]]; then
130+ sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/c++/10.2.1/thread
131+ sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/c++/10.2.1/mutex
132+ sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/c++/10.2.1/condition_variable
133+ sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/c++/10.2.1/future
134+ sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/pthread.h
135+ sudo cat /dev/null > /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/sys/_pthreadtypes.h
136+ sed -i 's/-fno-exceptions/ /g' $TEST_BSP_ROOT/rtconfig.py
137+ fi
138+
139+ if [[ -z "$TOOLCHAIN_INSTALLED" ]]; then
140+ echo "No valid toolchain installed, stopping the workflow."
141+ exit 1
142+ fi
128143
129144 - name : Build BSP
130145 run : |
@@ -134,7 +149,7 @@ jobs:
134149 scons -j$(nproc) --strict -C $TEST_BSP_ROOT
135150
136151 - name : QEMU Run Test
137- if : ${{ matrix.platform.RUN == 'yes' && success() }}
152+ if : ${{ matrix.platform.RUN == 'yes' && env.TOOLCHAIN_INSTALLED != '' && success() }}
138153 run : |
139154 if [ "$TEST_SD_FILE" != "None" ]; then
140155 dd if=/dev/zero of=$TEST_BSP_ROOT/sd.bin bs=1024 count=65536
@@ -147,6 +162,7 @@ jobs:
147162 disown $QEMU_PID
148163
149164 - name : Monitor qemu log
165+ if : ${{ matrix.platform.RUN == 'yes' && env.TOOLCHAIN_INSTALLED != '' && success() }}
150166 run : |
151167 FAILURE_DETECTED=false
152168 ERROR_LOGS=""
0 commit comments