Skip to content

Commit 7531bba

Browse files
committed
ci: add cmake&ninja to speed up github action build
1 parent 5b33206 commit 7531bba

File tree

2 files changed

+89
-2
lines changed

2 files changed

+89
-2
lines changed

.github/workflows/bsp_buildings.yml

Lines changed: 29 additions & 1 deletion
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"
@@ -252,6 +260,7 @@ jobs:
252260
- "xplorer4330/M4"
253261
- RTT_BSP: "nuvoton"
254262
RTT_TOOL_CHAIN: "sourcery-arm"
263+
RTT_BUILD_TOOL: "scons"
255264
SUB_RTT_BSP:
256265
- "nuvoton/numaker-pfm-m487"
257266
- "nuvoton/numaker-hmi-ma35d1"
@@ -267,6 +276,7 @@ jobs:
267276
- "nuvoton/numaker-m2354"
268277
- RTT_BSP: "gd32_n32_apm32"
269278
RTT_TOOL_CHAIN: "sourcery-arm"
279+
RTT_BUILD_TOOL: "scons"
270280
SUB_RTT_BSP:
271281
- "gd32/arm/gd32103c-eval"
272282
- "gd32/arm/gd32105c-eval"
@@ -310,6 +320,7 @@ jobs:
310320
- "apm32/apm32s103vb-miniboard"
311321
- RTT_BSP: "Infineon_TI_microchip"
312322
RTT_TOOL_CHAIN: "sourcery-arm"
323+
RTT_BUILD_TOOL: "scons"
313324
SUB_RTT_BSP:
314325
- "Infineon/psoc6-cy8ckit-062S2-43012"
315326
- "Infineon/psoc6-cy8ckit-062-BLE"
@@ -337,12 +348,14 @@ jobs:
337348
- "maxim/max32660-evsys"
338349
- RTT_BSP: "mips"
339350
RTT_TOOL_CHAIN: "sourcery-mips"
351+
RTT_BUILD_TOOL: "scons"
340352
SUB_RTT_BSP:
341353
- "loongson/ls1bdev"
342354
- "loongson/ls2kdev"
343355
- "loongson/ls1cdev"
344356
- RTT_BSP: "aarch64"
345357
RTT_TOOL_CHAIN: "sourcery-aarch64"
358+
RTT_BUILD_TOOL: "scons"
346359
SUB_RTT_BSP:
347360
- "qemu-virt64-aarch64"
348361
- "raspberry-pi/raspi3-64"
@@ -351,17 +364,20 @@ jobs:
351364
- "phytium/aarch64"
352365
- RTT_BSP: "riscv-none"
353366
RTT_TOOL_CHAIN: "sourcery-riscv-none-embed"
367+
RTT_BUILD_TOOL: "scons"
354368
SUB_RTT_BSP:
355369
- "k210"
356370
- "wch/risc-v/ch32v307v-r1"
357371
- RTT_BSP: "riscv64-unknown"
358372
RTT_TOOL_CHAIN: "sourcery-riscv64-unknown-elf"
373+
RTT_BUILD_TOOL: "scons"
359374
SUB_RTT_BSP:
360375
- "bluetrum/ab32vg1-ab-prougen"
361376
- "bouffalo_lab/bl60x"
362377
- "bouffalo_lab/bl70x"
363378
- RTT_BSP: "hpmicro"
364379
RTT_TOOL_CHAIN: "RISC-V-GCC-RV32"
380+
RTT_BUILD_TOOL: "scons"
365381
SUB_RTT_BSP:
366382
- "hpmicro/hpm6750evkmini"
367383
- "hpmicro/hpm6750evk"
@@ -374,22 +390,27 @@ jobs:
374390
- "hpmicro/hpm6e00evk"
375391
- RTT_BSP: "llvm-arm"
376392
RTT_TOOL_CHAIN: "llvm-arm"
393+
RTT_BUILD_TOOL: "scons"
377394
SUB_RTT_BSP:
378395
- "stm32/stm32l475-atk-pandora"
379396
- RTT_BSP: "simulator"
380397
RTT_TOOL_CHAIN: "gcc"
398+
RTT_BUILD_TOOL: "scons"
381399
SUB_RTT_BSP:
382400
- "simulator"
383401
- RTT_BSP: "ESP32C3"
384402
RTT_TOOL_CHAIN: "sourcery-riscv32-esp32"
403+
RTT_BUILD_TOOL: "scons"
385404
SUB_RTT_BSP:
386405
- "ESP32_C3"
387406
- RTT_BSP: "i386-unknown"
388407
RTT_TOOL_CHAIN: "sourcery-i386-unknown-elf"
408+
RTT_BUILD_TOOL: "scons"
389409
SUB_RTT_BSP:
390410
- "x86"
391411
- RTT_BSP: "nordic(yml)"
392412
RTT_TOOL_CHAIN: "sourcery-arm"
413+
RTT_BUILD_TOOL: "scons"
393414
SUB_RTT_BSP:
394415
- "nrf5x/nrf51822"
395416
- "nrf5x/nrf52832"
@@ -414,6 +435,12 @@ jobs:
414435
echo "RTT_ROOT=${{ github.workspace }}" >> $GITHUB_ENV
415436
echo "RTT_CC=gcc" >> $GITHUB_ENV
416437
echo "export PATH=~/.env/tools/scripts:$PATH" > ~/.env/env.sh
438+
439+
- name: Install Cmake & Ninja
440+
uses: lukka/get-cmake@latest
441+
with:
442+
cmakeVersion: latestrc
443+
ninjaVersion: latest
417444

418445
- name: Install Arm ToolChains
419446
if: ${{ matrix.legs.RTT_TOOL_CHAIN == 'sourcery-arm' && success() }}
@@ -505,6 +532,7 @@ jobs:
505532
env:
506533
RTT_BSP: ${{ matrix.legs.RTT_BSP }}
507534
RTT_TOOL_CHAIN: ${{ matrix.legs.RTT_TOOL_CHAIN }}
535+
RTT_BUILD_TOOL: ${{ matrix.legs.RTT_BUILD_TOOL }}
508536
SRTT_BSP: ${{ join(matrix.legs.SUB_RTT_BSP, ',') }}
509537
run: |
510538
source ~/.env/env.sh

tools/ci/bsp_buildings.py

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,58 @@ def build_bsp(bsp, scons_args=''):
8181

8282
return success
8383

84+
def build_bsp_cmake(bsp, scons_args=''):
85+
"""
86+
build bsp using cmake generater.
87+
88+
cd {rtt_root}
89+
scons -C bsp/{bsp} --pyconfig-silent > /dev/null
90+
91+
cd {rtt_root}/bsp/{bsp}
92+
pkgs --update > /dev/null
93+
pkgs --list
94+
95+
scons --target=cmake
96+
mkdir build
97+
cd build
98+
cmake .. -G Ninja
99+
ninja -j{nproc}
100+
101+
cd ..
102+
rm -rf build
103+
rm -rf packages
104+
105+
"""
106+
if scons_args != '':
107+
print("this project would be built regularly because `scons_args` is not empty")
108+
return build_bsp(bsp, scons_args)
109+
success = True
110+
os.chdir(rtt_root)
111+
if os.path.exists(f"{rtt_root}/bsp/{bsp}/Kconfig"):
112+
os.chdir(rtt_root)
113+
run_cmd(f'scons -C bsp/{bsp} --pyconfig-silent', output_info=False)
114+
115+
os.chdir(f'{rtt_root}/bsp/{bsp}')
116+
run_cmd('pkgs --update', output_info=False)
117+
run_cmd('pkgs --list')
118+
119+
nproc = multiprocessing.cpu_count()
120+
121+
run_cmd('scons --target=cmake')
122+
os.mkdir(f'{rtt_root}/bsp/{bsp}/cmake-build')
123+
os.chdir(f'{rtt_root}/bsp/{bsp}/cmake-build')
124+
run_cmd('cmake .. -G Ninja')
125+
_, res = run_cmd(f'ninja -j{nproc}')
126+
127+
if res != 0:
128+
success = False
129+
130+
build_dir = os.path.join(rtt_root, 'bsp', bsp, 'cmake-build')
131+
shutil.rmtree(build_dir, ignore_errors=True)
132+
pkg_dir = os.path.join(rtt_root, 'bsp', bsp, 'packages')
133+
shutil.rmtree(pkg_dir, ignore_errors=True)
134+
135+
return success
84136

85137
def append_file(source_file, destination_file):
86138
"""
@@ -166,11 +218,18 @@ def build_bsp_attachconfig(bsp, attach_file):
166218

167219
rtt_root = os.getcwd()
168220
srtt_bsp = os.getenv('SRTT_BSP').split(',')
221+
build_tool = os.getenv('RTT_BUILD_TOOL')
169222

170223
for bsp in srtt_bsp:
171224
count += 1
172225
print(f"::group::Compiling BSP: =={count}=== {bsp} ====")
173-
res = build_bsp(bsp)
226+
res = False
227+
if build_tool == 'scons':
228+
res = build_bsp(bsp)
229+
elif build_tool =='cmake':
230+
res = build_bsp_cmake(bsp)
231+
else:
232+
print(f"::error::build tool {build_tool} is not supported")
174233
if not res:
175234
print(f"::error::build {bsp} failed")
176235
add_summary(f"- ❌ build {bsp} failed.")

0 commit comments

Comments
 (0)