[ci]Add bsp attachconfig check
This commit is contained in:
parent
d0dec5cbf2
commit
2693e7e15a
|
@ -421,19 +421,4 @@ jobs:
|
|||
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
|
||||
python tools/ci/bsp_buildings.py
|
||||
|
|
|
@ -1 +1 @@
|
|||
RT_USING_NANO=y
|
||||
CONFIG_RT_USING_NANO=y
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
BSP_USING_ARDUINO=y
|
|
@ -0,0 +1,161 @@
|
|||
import os
|
||||
import re
|
||||
import glob
|
||||
import shutil
|
||||
import multiprocessing
|
||||
|
||||
|
||||
def add_summary(text):
|
||||
"""
|
||||
add summary to github action.
|
||||
"""
|
||||
os.system(f'echo "{text}" >> $GITHUB_STEP_SUMMARY ;')
|
||||
|
||||
|
||||
def run_cmd(cmd):
|
||||
"""
|
||||
run command and return output and result.
|
||||
"""
|
||||
print('\033[1;32m' + cmd + '\033[0m')
|
||||
res = os.system(cmd + " > output.txt 2>&1")
|
||||
with open("output.txt", "r") as file:
|
||||
output = file.readlines()
|
||||
for line in output:
|
||||
print(line, end='')
|
||||
os.remove("output.txt")
|
||||
return output, res
|
||||
|
||||
|
||||
def build_bsp(bsp):
|
||||
"""
|
||||
build bsp.
|
||||
|
||||
cd {rtt_root}
|
||||
scons -C bsp/{bsp} --pyconfig-silent
|
||||
|
||||
cd {rtt_root}/bsp/{bsp}
|
||||
pkgs --upgrade-script-force
|
||||
pkgs --update
|
||||
pkgs --list
|
||||
|
||||
cd {rtt_root}
|
||||
scons -C bsp/{bsp} -j{nproc} --debug=time
|
||||
|
||||
cd {rtt_root}/bsp/{bsp}
|
||||
scons -c
|
||||
rm -rf packages
|
||||
|
||||
"""
|
||||
success = True
|
||||
os.chdir(rtt_root)
|
||||
if os.path.exists(f"{rtt_root}/bsp/{bsp}/Kconfig"):
|
||||
os.chdir(rtt_root)
|
||||
run_cmd(f'scons -C bsp/{bsp} --pyconfig-silent')
|
||||
|
||||
os.chdir(f'{rtt_root}/bsp/{bsp}')
|
||||
run_cmd('pkgs --upgrade-script-force')
|
||||
run_cmd('pkgs --update')
|
||||
run_cmd('pkgs --list')
|
||||
|
||||
nproc = multiprocessing.cpu_count()
|
||||
os.chdir(rtt_root)
|
||||
output, res = run_cmd(f'scons -C bsp/{bsp} -j{nproc} --debug=time')
|
||||
|
||||
total_time = 0
|
||||
for line in output:
|
||||
pattern = r"Total command execution time: (\d+\.\d+) seconds"
|
||||
match = re.search(pattern, line)
|
||||
if match:
|
||||
total_time = match.group(1)
|
||||
break
|
||||
if res != 0:
|
||||
success = False
|
||||
|
||||
os.chdir(f'{rtt_root}/bsp/{bsp}')
|
||||
run_cmd('scons -c')
|
||||
|
||||
pkg_dir = os.path.join(rtt_root, 'bsp', bsp, 'packages')
|
||||
shutil.rmtree(pkg_dir, ignore_errors=True)
|
||||
|
||||
return success, total_time
|
||||
|
||||
|
||||
def append_file(source_file, destination_file):
|
||||
"""
|
||||
append file to another file.
|
||||
"""
|
||||
with open(source_file, 'r') as source:
|
||||
with open(destination_file, 'a') as destination:
|
||||
for line in source:
|
||||
destination.write(line)
|
||||
|
||||
|
||||
def build_bsp_attachconfig(bsp, attach_file):
|
||||
"""
|
||||
build bsp with attach config.
|
||||
|
||||
cp bsp/{bsp}/.config bsp/{bsp}/.config.origin
|
||||
cat .ci/attachconfig/{attach_file} >> bsp/{bsp}/.config
|
||||
|
||||
build_bsp()
|
||||
|
||||
cp bsp/{bsp}/.config.origin bsp/{bsp}/.config
|
||||
rm bsp/{bsp}/.config.origin
|
||||
|
||||
"""
|
||||
config_file = os.path.join(rtt_root, 'bsp', bsp, '.config')
|
||||
config_bacakup = config_file+'.origin'
|
||||
shutil.copyfile(config_file, config_bacakup)
|
||||
|
||||
append_file(attach_file, config_file)
|
||||
|
||||
res, total_time = build_bsp(bsp)
|
||||
|
||||
shutil.copyfile(config_bacakup, config_file)
|
||||
os.remove(config_bacakup)
|
||||
|
||||
return res, total_time
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""
|
||||
build all bsp and attach config.
|
||||
|
||||
1. build all bsp.
|
||||
2. build all bsp with attach config.
|
||||
|
||||
"""
|
||||
failed = 0
|
||||
count = 0
|
||||
|
||||
rtt_root = os.getcwd()
|
||||
srtt_bsp = os.getenv('SRTT_BSP').split(',')
|
||||
|
||||
for bsp in srtt_bsp:
|
||||
count += 1
|
||||
print(f"::group::Compiling BSP: =={count}=== {bsp} ====")
|
||||
res, total_time = build_bsp(bsp)
|
||||
if not res:
|
||||
print(f"::error::build {bsp} failed")
|
||||
add_summary(f"- ❌ build {bsp} failed in {total_time} s.")
|
||||
failed += 1
|
||||
else:
|
||||
add_summary(f'- ✅ build {bsp} success in {total_time} s.')
|
||||
print("::endgroup::")
|
||||
|
||||
attach_dir = os.path.join(rtt_root, 'bsp', bsp, '.ci/attachconfig')
|
||||
attach_files = glob.glob(os.path.join(attach_dir, '*.attach'))
|
||||
for attach_file in attach_files:
|
||||
count += 1
|
||||
attach = os.path.basename(attach_file)
|
||||
print(f"::group::\tCompiling BSP: =={count}=== {bsp} {attach}===")
|
||||
res, total_time = build_bsp_attachconfig(bsp, attach_file)
|
||||
if not res:
|
||||
print(f"::error::build {bsp} {attach} failed.")
|
||||
add_summary(f'\t- ❌ build {attach} failed in {total_time} s.')
|
||||
failed += 1
|
||||
else:
|
||||
add_summary(f'\t- ✅ build {attach} success in {total_time} s.')
|
||||
print("::endgroup::")
|
||||
|
||||
exit(failed)
|
Loading…
Reference in New Issue