summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhydevcode <[email protected]>2024-11-07 09:47:59 +0800
committerGitHub <[email protected]>2024-11-07 09:47:59 +0800
commit65e239d3f14fedc824259330a7684d4dcfde0844 (patch)
tree0ecc8916b71027fa132f32df285b0309e5cbf745
parentea75800d5b3be3e63c6304afed8b06a3fdeae289 (diff)
[action] yml file adds the depends parameter (#9627)
-rw-r--r--bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml79
-rw-r--r--tools/ci/bsp_buildings.py57
2 files changed, 122 insertions, 14 deletions
diff --git a/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml b/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml
index 650a97c929..e923d7a470 100644
--- a/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml
+++ b/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml
@@ -1,8 +1,11 @@
+devices.strict:
+ depend_scons_arg:
+ - '--strict'
devices.gpio:
+ depends:
+ - devices.strict
kconfig:
- CONFIG_BSP_USING_GPIO=y
- scons_arg:
- - '--strict'
devices.adc:
kconfig:
- CONFIG_BSP_USING_SAADC=y
@@ -12,13 +15,14 @@ devices.flash:
devices.i2c:
kconfig:
- CONFIG_BSP_USING_I2C=y
-devices.spi:
+devices.spi:
kconfig:
- - CONFIG_BSP_USING_SPI=y
-devices.uart:
+ - CONFIG_RT_USING_SPI=y
+ - CONFIG_BSP_USING_SPI=y
+devices.uart:
kconfig:
- CONFIG_BSP_USING_UART=y
-devices.watchdog:
+devices.watchdog:
kconfig:
- CONFIG_BSP_USING_WDT=y
devices.qspi_flash:
@@ -33,4 +37,65 @@ devices.rtc:
devices.hwtimer:
kconfig:
- CONFIG_BSP_USING_TIM=y
- - CONFIG_BSP_USING_TIM0=y \ No newline at end of file
+ - CONFIG_BSP_USING_TIM0=y
+# ------ NimBLE-v1.0.0 CI ------
+nimble:
+ kconfig:
+ - CONFIG_BSP_USING_NIMBLE=y
+ - CONFIG_PKG_USING_NIMBLE_V100=y
+nimble.advertiser:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_ADVERTISER=y
+nimble.beacon:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_BEACON=y
+nimble.blecsc:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_BLECSC=y
+nimble.central:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_CENTRAL=y
+nimble.ext.advertiser:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_EXT_ADVERTISER=y
+ - CONFIG_PKG_NIMBLE_EXT_ADV=y
+nimble.mesh:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_BLEMESH=y
+nimble.per.hr:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_PER_HR=y
+nimble.peripheral:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_PERIPHERAL=y
+nimble.btshell:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_BTSHELL=y
+nimble.uart:
+ depends:
+ - nimble
+ kconfig:
+ - CONFIG_PKG_NIMBLE_SAMPLE_BLEUART=y
+# ------ SEGGER CI ------
+segger:
+ kconfig:
+ - CONFIG_PKG_USING_SEGGER_RTT=y
+ - CONFIG_RT_USING_SERIAL_V2=y \ No newline at end of file
diff --git a/tools/ci/bsp_buildings.py b/tools/ci/bsp_buildings.py
index 02cb7f3a92..ae3e2eebb5 100644
--- a/tools/ci/bsp_buildings.py
+++ b/tools/ci/bsp_buildings.py
@@ -100,6 +100,32 @@ def check_scons_args(file_path):
args.append(match.group(1).strip())
return ' '.join(args)
+def get_details_and_dependencies(details, projects, seen=None):
+ if seen is None:
+ seen = set()
+ detail_list = []
+ scons_arg_list = []
+ if details is not None:
+ for dep in details:
+ if dep not in seen:
+ dep_details=projects.get(dep)
+ seen.add(dep)
+ if dep_details is not None:
+ if dep_details.get('depends') is not None:
+ detail_temp,scons_arg_temp=get_details_and_dependencies(dep_details.get('depends'), projects, seen)
+ for line in detail_temp:
+ detail_list.append(line)
+ for line in scons_arg_temp:
+ scons_arg_list.append(line)
+ if dep_details.get('kconfig') is not None:
+ for line in dep_details.get('kconfig'):
+ detail_list.append(line)
+ if dep_details.get('depend_scons_arg') is not None:
+ for line in dep_details.get('depend_scons_arg'):
+ scons_arg_list.append(line)
+ else:
+ print(f"::error::There are some problems with attachconfig depend: {dep}");
+ return detail_list,scons_arg_list
def build_bsp_attachconfig(bsp, attach_file):
"""
@@ -167,9 +193,18 @@ if __name__ == "__main__":
if filename.endswith('attachconfig.yml'):
file_path = os.path.join(root, filename)
if os.path.exists(file_path):
- with open(file_path, 'r') as file:
- content = yaml.safe_load(file)
- yml_files_content.append(content)
+ try:
+ with open(file_path, 'r') as file:
+ content = yaml.safe_load(file)
+ if content is None:
+ continue
+ yml_files_content.append(content)
+ except yaml.YAMLError as e:
+ print(f"::error::Error parsing YAML file: {e}")
+ continue
+ except Exception as e:
+ print(f"::error::Error reading file: {e}")
+ continue
config_file = os.path.join(rtt_root, 'bsp', bsp, '.config')
@@ -179,10 +214,18 @@ if __name__ == "__main__":
config_bacakup = config_file+'.origin'
shutil.copyfile(config_file, config_bacakup)
with open(config_file, 'a') as destination:
- for line in details.get('kconfig'):
- destination.write(line + '\n')
- scons_arg = details.get('scons_arg')
- scons_arg_str = scons_arg[0] if scons_arg else ' '
+ if(projects.get(name) is not None):
+ detail_list,scons_arg_list=get_details_and_dependencies([name],projects)
+ for line in detail_list:
+ destination.write(line + '\n')
+ scons_arg=[]
+ if details.get('scons_arg') is not None:
+ for line in details.get('scons_arg'):
+ scons_arg.append(line)
+ if scons_arg_list is not None:
+ for line in scons_arg_list:
+ scons_arg.append(line)
+ scons_arg_str=' '.join(scons_arg) if scons_arg else ' '
print(f"::group::\tCompiling yml project: =={count}==={name}=scons_arg={scons_arg_str}==")
res = build_bsp(bsp, scons_arg_str)
if not res: