Skip to content

Commit 34dc8e7

Browse files
committed
[ci] modify some bsp to use cmake+ninja to build faster, check the cmake generator btw
1 parent 3fdb940 commit 34dc8e7

File tree

2 files changed

+99
-5
lines changed

2 files changed

+99
-5
lines changed

.github/workflows/bsp_buildings.yml

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,22 @@ jobs:
3939
legs:
4040
- RTT_BSP: "RT-Thread Online Packages (STM32F407 RT-Spark)"
4141
RTT_TOOL_CHAIN: "sourcery-arm"
42+
RTT_BUILD_TOOL: "scons"
4243
SUB_RTT_BSP:
4344
- "stm32/stm32f407-rt-spark"
4445
- RTT_BSP: "RTduino/Arduino Libraries (STM32F412 Nucleo)"
4546
RTT_TOOL_CHAIN: "sourcery-arm"
47+
RTT_BUILD_TOOL: "scons"
4648
SUB_RTT_BSP:
4749
- "stm32/stm32f412-st-nucleo"
4850
- RTT_BSP: "RTduino/Arduino Libraries (Raspberry Pico)"
4951
RTT_TOOL_CHAIN: "sourcery-arm"
52+
RTT_BUILD_TOOL: "scons"
5053
SUB_RTT_BSP:
5154
- "raspberry-pico"
5255
- RTT_BSP: "others_at32_hc32_ht32"
5356
RTT_TOOL_CHAIN: "sourcery-arm"
57+
RTT_BUILD_TOOL: "scons"
5458
SUB_RTT_BSP:
5559
- "qemu-vexpress-a9"
5660
- "airm2m/air32f103"
@@ -109,8 +113,9 @@ jobs:
109113
- "hc32l136"
110114
- "yichip/yc3121-pos"
111115
- "fm33lc026"
112-
- RTT_BSP: "stm32l4_f0_f1"
116+
- RTT_BSP: "stm32l4_f0_f1(cmake)"
113117
RTT_TOOL_CHAIN: "sourcery-arm"
118+
RTT_BUILD_TOOL: "cmake"
114119
SUB_RTT_BSP:
115120
- "stm32/stm32l4r5-st-nucleo"
116121
- "stm32/stm32l4r9-st-eval"
@@ -148,6 +153,7 @@ jobs:
148153
- "stm32/stm32f107-uc-eval"
149154
- RTT_BSP: "stm32_f2_f4"
150155
RTT_TOOL_CHAIN: "sourcery-arm"
156+
RTT_BUILD_TOOL: "scons"
151157
SUB_RTT_BSP:
152158
- "stm32/stm32f207-st-nucleo"
153159
- "stm32/stm32f302-st-nucleo"
@@ -175,6 +181,7 @@ jobs:
175181
- "stm32/stm32f469-st-disco"
176182
- RTT_BSP: "stm32_f7_g0_h7_mp15_u5_h5_wb5"
177183
RTT_TOOL_CHAIN: "sourcery-arm"
184+
RTT_BUILD_TOOL: "scons"
178185
SUB_RTT_BSP:
179186
- "stm32/stm32f746-st-disco"
180187
- "stm32/stm32f746-st-nucleo"
@@ -208,6 +215,7 @@ jobs:
208215
- "stm32/stm32wb55-st-nucleo"
209216
- RTT_BSP: "nxp_renesas"
210217
RTT_TOOL_CHAIN: "sourcery-arm"
218+
RTT_BUILD_TOOL: "scons"
211219
SUB_RTT_BSP:
212220
- "nxp/lpc/lpc55sxx/lpc55s69_nxp_evk"
213221
- "nxp/lpc/lpc55sxx/lpc55s28_nxp_evk"
@@ -253,6 +261,7 @@ jobs:
253261
- "xplorer4330/M4"
254262
- RTT_BSP: "nuvoton"
255263
RTT_TOOL_CHAIN: "sourcery-arm"
264+
RTT_BUILD_TOOL: "scons"
256265
SUB_RTT_BSP:
257266
- "nuvoton/numaker-pfm-m487"
258267
- "nuvoton/numaker-hmi-ma35d1"
@@ -268,6 +277,7 @@ jobs:
268277
- "nuvoton/numaker-m2354"
269278
- RTT_BSP: "gd32_n32_apm32"
270279
RTT_TOOL_CHAIN: "sourcery-arm"
280+
RTT_BUILD_TOOL: "scons"
271281
SUB_RTT_BSP:
272282
- "gd32/arm/gd32103c-eval"
273283
- "gd32/arm/gd32105c-eval"
@@ -311,6 +321,7 @@ jobs:
311321
- "apm32/apm32s103vb-miniboard"
312322
- RTT_BSP: "Infineon_TI_microchip"
313323
RTT_TOOL_CHAIN: "sourcery-arm"
324+
RTT_BUILD_TOOL: "scons"
314325
SUB_RTT_BSP:
315326
- "Infineon/psoc6-cy8ckit-062S2-43012"
316327
- "Infineon/psoc6-cy8ckit-062-BLE"
@@ -338,12 +349,14 @@ jobs:
338349
- "maxim/max32660-evsys"
339350
- RTT_BSP: "mips"
340351
RTT_TOOL_CHAIN: "sourcery-mips"
352+
RTT_BUILD_TOOL: "scons"
341353
SUB_RTT_BSP:
342354
- "loongson/ls1bdev"
343355
- "loongson/ls2kdev"
344356
- "loongson/ls1cdev"
345357
- RTT_BSP: "aarch64"
346358
RTT_TOOL_CHAIN: "sourcery-aarch64"
359+
RTT_BUILD_TOOL: "scons"
347360
SUB_RTT_BSP:
348361
- "qemu-virt64-aarch64"
349362
- "raspberry-pi/raspi3-64"
@@ -352,18 +365,21 @@ jobs:
352365
- "phytium/aarch64"
353366
- RTT_BSP: "riscv-none"
354367
RTT_TOOL_CHAIN: "sourcery-riscv-none-embed"
368+
RTT_BUILD_TOOL: "scons"
355369
SUB_RTT_BSP:
356370
- "k210"
357371
- "wch/risc-v/ch32v307v-r1"
358372
- "wch/risc-v/yd-ch32v307vct6"
359373
- RTT_BSP: "riscv64-unknown"
360374
RTT_TOOL_CHAIN: "sourcery-riscv64-unknown-elf"
375+
RTT_BUILD_TOOL: "scons"
361376
SUB_RTT_BSP:
362377
- "bluetrum/ab32vg1-ab-prougen"
363378
- "bouffalo_lab/bl60x"
364379
- "bouffalo_lab/bl70x"
365380
- RTT_BSP: "hpmicro"
366381
RTT_TOOL_CHAIN: "RISC-V-GCC-RV32"
382+
RTT_BUILD_TOOL: "scons"
367383
SUB_RTT_BSP:
368384
- "hpmicro/hpm6750evkmini"
369385
- "hpmicro/hpm6750evk"
@@ -376,22 +392,27 @@ jobs:
376392
- "hpmicro/hpm6e00evk"
377393
- RTT_BSP: "llvm-arm"
378394
RTT_TOOL_CHAIN: "llvm-arm"
395+
RTT_BUILD_TOOL: "scons"
379396
SUB_RTT_BSP:
380397
- "stm32/stm32l475-atk-pandora"
381398
- RTT_BSP: "simulator"
382399
RTT_TOOL_CHAIN: "gcc"
400+
RTT_BUILD_TOOL: "scons"
383401
SUB_RTT_BSP:
384402
- "simulator"
385403
- RTT_BSP: "ESP32C3"
386404
RTT_TOOL_CHAIN: "sourcery-riscv32-esp32"
405+
RTT_BUILD_TOOL: "scons"
387406
SUB_RTT_BSP:
388407
- "ESP32_C3"
389408
- RTT_BSP: "i386-unknown"
390409
RTT_TOOL_CHAIN: "sourcery-i386-unknown-elf"
410+
RTT_BUILD_TOOL: "scons"
391411
SUB_RTT_BSP:
392412
- "x86"
393413
- RTT_BSP: "nordic(yml)"
394414
RTT_TOOL_CHAIN: "sourcery-arm"
415+
RTT_BUILD_TOOL: "scons"
395416
SUB_RTT_BSP:
396417
- "nrf5x/nrf51822"
397418
- "nrf5x/nrf52832"
@@ -406,7 +427,6 @@ jobs:
406427
python-version: 3.8
407428

408429
- name: Install Tools
409-
shell: bash
410430
run: |
411431
wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
412432
chmod 777 install_ubuntu.sh
@@ -417,9 +437,13 @@ jobs:
417437
echo "RTT_CC=gcc" >> $GITHUB_ENV
418438
echo "export PATH=~/.env/tools/scripts:$PATH" > ~/.env/env.sh
419439
440+
- name: Install Cmake build Tools
441+
if: ${{ matrix.legs.RTT_BUILD_TOOL == 'cmake' && success() }}
442+
run: |
443+
sudo apt install cmake ninja-build
444+
420445
- name: Install Arm ToolChains
421446
if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-arm' && success() }}
422-
shell: bash
423447
run: |
424448
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
425449
sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt
@@ -503,10 +527,10 @@ jobs:
503527
504528
- name: Bsp Scons Compile
505529
if: ${{ success() }}
506-
shell: bash
507530
env:
508531
RTT_BSP: ${{ matrix.legs.RTT_BSP }}
509532
RTT_TOOL_CHAIN: ${{ matrix.legs.RTT_TOOL_CHAIN }}
533+
RTT_BUILD_TOOL: ${{ matrix.legs.RTT_BUILD_TOOL }}
510534
SRTT_BSP: ${{ join(matrix.legs.SUB_RTT_BSP, ',') }}
511535
run: |
512536
source ~/.env/env.sh

tools/ci/bsp_buildings.py

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,18 @@ def run_cmd(cmd, output_info=True):
3636
return output_str_list, res
3737

3838

39-
def build_bsp(bsp, scons_args=''):
39+
def build_bsp(bsp, scons_args='', build_tool=None):
40+
if build_tool is None:
41+
build_tool = os.getenv('RTT_BUILD_TOOL')
42+
if build_tool == 'scons':
43+
return build_bsp_scons(bsp, scons_args)
44+
elif build_tool =='cmake':
45+
return build_bsp_cmake(bsp, scons_args)
46+
else:
47+
print(f"::error::build tool {build_tool} is not supported")
48+
return False
49+
50+
def build_bsp_scons(bsp, scons_args=''):
4051
"""
4152
build bsp.
4253
@@ -81,6 +92,65 @@ def build_bsp(bsp, scons_args=''):
8192

8293
return success
8394

95+
def build_bsp_cmake(bsp, scons_args=''):
96+
"""
97+
build bsp using cmake generater.
98+
99+
cd {rtt_root}
100+
scons -C bsp/{bsp} --pyconfig-silent > /dev/null
101+
102+
cd {rtt_root}/bsp/{bsp}
103+
pkgs --update > /dev/null
104+
pkgs --list
105+
106+
scons --target=cmake
107+
mkdir build
108+
cd build
109+
cmake .. -G Ninja
110+
ninja -j{nproc}
111+
112+
cd ..
113+
rm -rf build
114+
rm -rf packages
115+
116+
"""
117+
ext_flags = ''
118+
scons_args = scons_args.strip()
119+
if scons_args == "--strict":
120+
print("scons using strict mode, build it with `-Werror` flag")
121+
ext_flags += '-DCMAKE_COMPILE_WARNING_AS_ERROR=1'
122+
elif scons_args != '':
123+
print(f"this project would be built regularly because `scons_args` is `{scons_args}`")
124+
return build_bsp_scons(bsp, scons_args)
125+
success = True
126+
os.chdir(rtt_root)
127+
if os.path.exists(f"{rtt_root}/bsp/{bsp}/Kconfig"):
128+
os.chdir(rtt_root)
129+
run_cmd(f'scons -C bsp/{bsp} --pyconfig-silent', output_info=False)
130+
131+
os.chdir(f'{rtt_root}/bsp/{bsp}')
132+
run_cmd('pkgs --update', output_info=False)
133+
run_cmd('pkgs --list')
134+
135+
nproc = multiprocessing.cpu_count()
136+
137+
run_cmd('scons --target=cmake')
138+
os.mkdir(f'{rtt_root}/bsp/{bsp}/cmake-build')
139+
os.chdir(f'{rtt_root}/bsp/{bsp}/cmake-build')
140+
run_cmd(f'cmake {ext_flags} .. -G Ninja')
141+
_, res = run_cmd(f'ninja -j{nproc}')
142+
143+
if res != 0:
144+
success = False
145+
146+
os.chdir(f'{rtt_root}/bsp/{bsp}')
147+
148+
build_dir = os.path.join(rtt_root, 'bsp', bsp, 'cmake-build')
149+
shutil.rmtree(build_dir, ignore_errors=True)
150+
pkg_dir = os.path.join(rtt_root, 'bsp', bsp, 'packages')
151+
shutil.rmtree(pkg_dir, ignore_errors=True)
152+
153+
return success
84154

85155
def append_file(source_file, destination_file):
86156
"""

0 commit comments

Comments
 (0)