idf-build-apps 2.14.0__py3-none-any.whl → 2.15.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ Tools for building ESP-IDF related apps.
8
8
  # ruff: noqa: E402
9
9
  # avoid circular imports
10
10
 
11
- __version__ = '2.14.0'
11
+ __version__ = '2.15.1'
12
12
 
13
13
  from .session_args import (
14
14
  SessionArgs,
idf_build_apps/app.py CHANGED
@@ -956,7 +956,11 @@ class CMakeApp(App):
956
956
 
957
957
  # While ESP-IDF component CMakeLists files can be identified by the presence of 'idf_component_register' string,
958
958
  # there is no equivalent for the project CMakeLists files. This seems to be the best option...
959
- CMAKE_PROJECT_LINE: t.ClassVar[str] = r'include($ENV{IDF_PATH}/tools/cmake/project.cmake)'
959
+ # Support both build system v1 and v2 patterns
960
+ CMAKE_PROJECT_LINE: t.ClassVar[t.List[str]] = [
961
+ r'include($ENV{IDF_PATH}/tools/cmake/project.cmake)',
962
+ r'include($ENV{IDF_PATH}/tools/cmakev2/idf.cmake)',
963
+ ]
960
964
 
961
965
  build_system: Literal['cmake'] = 'cmake' # type: ignore
962
966
 
@@ -1064,10 +1068,12 @@ class CMakeApp(App):
1064
1068
  if not cmakelists_file_content:
1065
1069
  return False
1066
1070
 
1067
- if cls.CMAKE_PROJECT_LINE not in cmakelists_file_content:
1068
- return False
1071
+ # Check if any of the supported build system patterns are present
1072
+ for pattern in cls.CMAKE_PROJECT_LINE:
1073
+ if pattern in cmakelists_file_content:
1074
+ return True
1069
1075
 
1070
- return True
1076
+ return False
1071
1077
 
1072
1078
 
1073
1079
  class AppDeserializer(BaseModel):
idf_build_apps/args.py CHANGED
@@ -929,6 +929,18 @@ class DumpManifestShaArguments(GlobalArguments):
929
929
  description='Path to the manifest files which contains the build test rules of the apps',
930
930
  default=None, # type: ignore
931
931
  )
932
+ common_components: t.Optional[t.List[str]] = field(
933
+ FieldMetadata(
934
+ validate_method=[ValidateMethod.TO_LIST],
935
+ type=semicolon_separated_str_to_list,
936
+ shorthand='-rc',
937
+ ),
938
+ description='semicolon-separated list of components. '
939
+ 'expand the `- *common_components` placeholder in manifests. '
940
+ 'If set to "", the value would be considered as None. '
941
+ 'If set to ";", the value would be considered as an empty list.',
942
+ default=None, # type: ignore
943
+ )
932
944
 
933
945
  output: t.Optional[str] = field(
934
946
  FieldMetadata(
idf_build_apps/main.py CHANGED
@@ -394,7 +394,9 @@ def main():
394
394
 
395
395
  if action == 'dump-manifest-sha':
396
396
  arguments = DumpManifestShaArguments(**kwargs_without_none)
397
- Manifest.from_files(arguments.manifest_files).dump_sha_values(arguments.output)
397
+ Manifest.from_files(arguments.manifest_files, common_components=arguments.common_components).dump_sha_values(
398
+ arguments.output
399
+ )
398
400
  sys.exit(0)
399
401
 
400
402
  if action == 'find':
@@ -77,6 +77,8 @@ def flatten_common_components(manifest_dict: t.Dict):
77
77
 
78
78
  flattened: t.List[str] = []
79
79
  for item in depends:
80
+ if not item:
81
+ continue
80
82
  if isinstance(item, t.List):
81
83
  flattened.extend(map(str, item))
82
84
  else:
@@ -89,7 +91,7 @@ def parse(path: PathLike, *, common_components: t.Optional[t.Sequence[str]] = No
89
91
  common_components_yaml = (
90
92
  '.common_components: &common_components\n' + '\n'.join(f' - {component}' for component in common_components)
91
93
  if common_components
92
- else ''
94
+ else '.common_components: &common_components\n null'
93
95
  )
94
96
 
95
97
  with open(path, encoding='utf-8') as f:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: idf-build-apps
3
- Version: 2.14.0
3
+ Version: 2.15.1
4
4
  Summary: Tools for building ESP-IDF related apps.
5
5
  Author-email: Fu Hanxi <fuhanxi@espressif.com>
6
6
  Requires-Python: >=3.7
@@ -1,12 +1,12 @@
1
- idf_build_apps/__init__.py,sha256=aPohj9cU8yfQCqYn7wKsJDjVMUJq6A__07PNoAFUHbs,711
1
+ idf_build_apps/__init__.py,sha256=vqnHqkjVySCAsUMu7GlaBMUFZ6fUOdCGJkPq-l0bf_k,711
2
2
  idf_build_apps/__main__.py,sha256=xbvcgp3sNxXZZ0MMr9XU12TjdzHBWq6DF1FYUSmAjHE,182
3
- idf_build_apps/app.py,sha256=_B4kCTCUq7mSd6T-VwtLbBM9iHSpXRpfM0vmrznkjYo,40223
4
- idf_build_apps/args.py,sha256=sdp7eI33BXKmqucs60sS0kK8l5p4fRpRS6H7Y0XyITY,40803
3
+ idf_build_apps/app.py,sha256=XfZuDRvEbtsBGqagc4az-LYnbK3y7lxQIvpUk9r4A5Q,40469
4
+ idf_build_apps/args.py,sha256=KosT-D3DHURq6valzeLLim6K2flApR-Y6UCZBvhvc5E,41342
5
5
  idf_build_apps/autocompletions.py,sha256=UbswHAWRvqvq4TgDBFjqHGlDLS_NEBM8EE0LlLUYY0A,2143
6
6
  idf_build_apps/constants.py,sha256=CW7vKXV6brsNLWeGLNCoDj28r5GO9So3RFNqgk_X2CI,2166
7
7
  idf_build_apps/finder.py,sha256=eSIr-y5yPTInQk5IQHggRJyxOndciexaNzpU4VVhfQQ,5833
8
8
  idf_build_apps/log.py,sha256=2aJRqx3hPT9IhSv3RLkXR5j7PgB2RX47G766c4i_m5c,3899
9
- idf_build_apps/main.py,sha256=B5yb6cy5UgqHP8-f7VEc9CrbkQmWGEpf6ww70MC_1z8,18255
9
+ idf_build_apps/main.py,sha256=qJCa6kXsffrBfosJBXQeZ8X9dfaJ5DJ-20iGws4an-E,18324
10
10
  idf_build_apps/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  idf_build_apps/session_args.py,sha256=BMWfW48hHHt5UsAbzTJ9BMnerVP5lnulb0h3Db-BNC8,2973
12
12
  idf_build_apps/utils.py,sha256=YAVIYTvz86G--qjh58H376taQ-qe1PbebXcWxYNdnFs,10976
@@ -19,9 +19,9 @@ idf_build_apps/manifest/soc_header.py,sha256=vBO8oDEIIcxWRCDOPNXtqHKU0yv8q4yMrTo
19
19
  idf_build_apps/vendors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  idf_build_apps/vendors/pydantic_sources.py,sha256=cxSIPRc3eI5peVMhDxwf58YaGhuG4SCwPRVX2znFEek,4553
21
21
  idf_build_apps/yaml/__init__.py,sha256=lbBz5r6hp8dSsxIypGFcc5EbXgWw2codDmky8QCo-sg,167
22
- idf_build_apps/yaml/parser.py,sha256=qlPZbLOM48CFs4F8i83Sa0QAl8AA-DQceWozTE_CkHM,3191
23
- idf_build_apps-2.14.0.dist-info/entry_points.txt,sha256=3pVUirUEsb6jsDRikkQWNUt4hqLK2ci1HvW_Vf8b6uE,59
24
- idf_build_apps-2.14.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
25
- idf_build_apps-2.14.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
26
- idf_build_apps-2.14.0.dist-info/METADATA,sha256=Zo3oJH3A2BCUuQmQ67mhFNw68LrXWfJvDwP5SngpIp4,4795
27
- idf_build_apps-2.14.0.dist-info/RECORD,,
22
+ idf_build_apps/yaml/parser.py,sha256=fdqlRsepAhb-_iynn0_TPMCk9qutMSl0cDRMxYKoPr0,3287
23
+ idf_build_apps-2.15.1.dist-info/entry_points.txt,sha256=3pVUirUEsb6jsDRikkQWNUt4hqLK2ci1HvW_Vf8b6uE,59
24
+ idf_build_apps-2.15.1.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
25
+ idf_build_apps-2.15.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
26
+ idf_build_apps-2.15.1.dist-info/METADATA,sha256=3wApFMgDQuljzJEmh0tkDpEbdWAlYhKLLK5bpF0-bxA,4795
27
+ idf_build_apps-2.15.1.dist-info/RECORD,,