spl-core 7.3.2__py3-none-any.whl → 7.5.0__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.
spl_core/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "7.3.2"
1
+ __version__ = "7.5.0"
spl_core/common.cmake CHANGED
@@ -192,10 +192,17 @@ macro(spl_create_component)
192
192
  \"has_reports\": \"\",
193
193
  \"reports_output_dir\": \"\"
194
194
  }")
195
- if(SOURCES)
196
- # Create the component library
195
+ set(_component_is_header_only FALSE)
196
+ # If prod and sources or test and test_sources define library. Else make it an interface and set the flag
197
+ if ((BUILD_KIT STREQUAL prod AND SOURCES) OR
198
+ (BUILD_KIT STREQUAL test AND TEST_SOURCES))
197
199
  add_library(${component_name} ${CREATE_COMPONENT_LIBRARY_TYPE} ${SOURCES})
200
+ else()
201
+ # Add header only component
202
+ set(_component_is_header_only TRUE)
203
+ add_library(${component_name} INTERFACE)
198
204
  endif()
205
+
199
206
  if(BUILD_KIT STREQUAL prod)
200
207
  if(SOURCES)
201
208
  # Define list of productive specific compile options for component's sources
@@ -213,7 +220,6 @@ macro(spl_create_component)
213
220
 
214
221
  set(_component_dir ${CMAKE_CURRENT_LIST_DIR})
215
222
  set(_component_doc_dir ${_component_dir}/doc)
216
- set(_component_doc_file ${_component_doc_dir}/index.rst)
217
223
  set(_component_test_junit_xml ${CMAKE_CURRENT_BINARY_DIR}/junit.xml)
218
224
  set(_component_coverage_json ${CMAKE_CURRENT_BINARY_DIR}/coverage.json)
219
225
  set(_component_docs_out_dir ${CMAKE_CURRENT_BINARY_DIR}/docs)
@@ -223,7 +229,7 @@ macro(spl_create_component)
223
229
  set(_sphinx_source_dir ${PROJECT_SOURCE_DIR})
224
230
 
225
231
  # Create component docs target if there is an index.rst file in the component's doc directory
226
- if(EXISTS ${_component_doc_file})
232
+ if(EXISTS ${_component_doc_dir}/index.rst OR EXISTS ${_component_doc_dir}/index.md)
227
233
  file(RELATIVE_PATH _rel_component_docs_out_dir ${_sphinx_source_dir} ${_component_docs_out_dir})
228
234
  string(JSON _component_info SET "${_component_info}" docs_output_dir "\"${_rel_component_docs_out_dir}\"")
229
235
  string(JSON _component_info SET "${_component_info}" has_docs "\"True\"")
@@ -355,7 +361,7 @@ Code Coverage
355
361
  # Collect all component sphinx include pattern to be used in the variant targets (docs, reports)
356
362
  list(APPEND COMPONENTS_SPHINX_INCLUDE_PATTERNS "${_rel_component_doc_dir}/**" "${_rel_component_docs_out_dir}/**" "${_rel_component_reports_out_dir}/**")
357
363
  set(COMPONENTS_SPHINX_INCLUDE_PATTERNS ${COMPONENTS_SPHINX_INCLUDE_PATTERNS} PARENT_SCOPE)
358
- endif(EXISTS ${_component_doc_file})
364
+ endif(EXISTS ${_component_doc_dir}/index.rst OR EXISTS ${_component_doc_dir}/index.md)
359
365
  endif(BUILD_KIT STREQUAL prod)
360
366
 
361
367
  # Implicitly add default include directories to provided interfaces
@@ -376,10 +382,18 @@ Code Coverage
376
382
  # Define the target public interfaces to be used instead of the global include directories.
377
383
  if(TARGET ${component_name})
378
384
  foreach(interfaceDir IN LISTS PROVIDED_INTERFACES)
379
- target_include_directories(${component_name} PUBLIC ${interfaceDir})
385
+ if (_component_is_header_only)
386
+ target_include_directories(${component_name} INTERFACE ${interfaceDir})
387
+ else()
388
+ target_include_directories(${component_name} PUBLIC ${interfaceDir})
389
+ endif()
380
390
  endforeach()
381
391
  foreach(component IN LISTS REQUIRED_INTERFACES)
382
- target_link_libraries(${component_name} PUBLIC ${component})
392
+ if(_component_is_header_only)
393
+ target_link_libraries(${component_name} INTERFACE ${component})
394
+ else()
395
+ target_link_libraries(${component_name} PUBLIC ${component})
396
+ endif()
383
397
  endforeach()
384
398
  endif()
385
399
 
@@ -1,16 +1,56 @@
1
- from pathlib import Path
2
- from typing import List
1
+ from typing import ClassVar
3
2
 
4
- from spl_core.test_utils.base_variant_test_runner import BaseVariantTestRunner
3
+ import pytest
5
4
 
5
+ from spl_core.test_utils.spl_build import SplBuild
6
6
 
7
- class Test_EnglishVariant(BaseVariantTestRunner):
8
- @property
9
- def component_paths(self) -> List[Path]:
10
- return [
11
- Path("src/greeter"),
12
- ]
13
7
 
14
- @property
15
- def expected_build_artifacts(self) -> List[Path]:
16
- return [Path("my_main.exe"), Path("compile_commands.json")]
8
+ class Test_EnglishVariant:
9
+ variant: str = "EnglishVariant"
10
+ components: ClassVar[list[str]] = ["src/greeter"]
11
+
12
+ @pytest.mark.unittests
13
+ def test_unittests(self) -> None:
14
+ # Arrange
15
+ spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="test", build_type="Debug", target="unittests")
16
+
17
+ # Act
18
+ result = spl_build.execute()
19
+
20
+ # Assert
21
+ assert result == 0, "Building unittests failed"
22
+ for artifact in spl_build.get_components_artifacts(self.components):
23
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
24
+
25
+ @pytest.mark.reports
26
+ def test_reports(self) -> None:
27
+ # Arrange
28
+ spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="test", build_type="Debug", target="reports")
29
+
30
+ # Act
31
+ result = spl_build.execute()
32
+
33
+ # Assert
34
+ assert result == 0, "Building reports failed"
35
+ for artifact in spl_build.get_components_artifacts(self.components):
36
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
37
+
38
+ @pytest.mark.build
39
+ @pytest.mark.parametrize(
40
+ ("build_type"),
41
+ [
42
+ pytest.param("Debug", marks=pytest.mark.debug),
43
+ pytest.param("Release", marks=pytest.mark.release),
44
+ ],
45
+ )
46
+ def test_build(self, build_type: str) -> None:
47
+ # Arrange
48
+ spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="prod", build_type=build_type, target="all")
49
+
50
+ # Act
51
+ result = spl_build.execute()
52
+
53
+ # Assert
54
+ assert result == 0, "Building failed"
55
+ for artifact in [spl_build.build_dir / "main.exe", *spl_build.get_variant_artifacts()]:
56
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
@@ -1,16 +1,56 @@
1
- from pathlib import Path
2
- from typing import List
1
+ from typing import ClassVar
3
2
 
4
- from spl_core.test_utils.base_variant_test_runner import BaseVariantTestRunner
3
+ import pytest
5
4
 
5
+ from spl_core.test_utils.spl_build import SplBuild
6
6
 
7
- class Test_GermanVariant(BaseVariantTestRunner):
8
- @property
9
- def component_paths(self) -> List[Path]:
10
- return [
11
- Path("src/greeter"),
12
- ]
13
7
 
14
- @property
15
- def expected_build_artifacts(self) -> List[Path]:
16
- return [Path("my_main.exe"), Path("compile_commands.json")]
8
+ class Test_GermanVariant:
9
+ variant: str = "GermanVariant"
10
+ components: ClassVar[list[str]] = ["src/greeter"]
11
+
12
+ @pytest.mark.unittests
13
+ def test_unittests(self) -> None:
14
+ # Arrange
15
+ spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="test", build_type="Debug", target="unittests")
16
+
17
+ # Act
18
+ result = spl_build.execute()
19
+
20
+ # Assert
21
+ assert result == 0, "Building unittests failed"
22
+ for artifact in spl_build.get_components_artifacts(self.components):
23
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
24
+
25
+ @pytest.mark.reports
26
+ def test_reports(self) -> None:
27
+ # Arrange
28
+ spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="test", build_type="Debug", target="reports")
29
+
30
+ # Act
31
+ result = spl_build.execute()
32
+
33
+ # Assert
34
+ assert result == 0, "Building reports failed"
35
+ for artifact in spl_build.get_components_artifacts(self.components):
36
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
37
+
38
+ @pytest.mark.build
39
+ @pytest.mark.parametrize(
40
+ ("build_type"),
41
+ [
42
+ pytest.param("Debug", marks=pytest.mark.debug),
43
+ pytest.param("Release", marks=pytest.mark.release),
44
+ ],
45
+ )
46
+ def test_build(self, build_type: str) -> None:
47
+ # Arrange
48
+ spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="prod", build_type=build_type, target="all")
49
+
50
+ # Act
51
+ result = spl_build.execute()
52
+
53
+ # Assert
54
+ assert result == 0, "Building failed"
55
+ for artifact in [spl_build.build_dir / "main.exe", *spl_build.get_variant_artifacts()]:
56
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
@@ -261,7 +261,7 @@ function Get-User-Menu-Selection {
261
261
 
262
262
  function Invoke-Bootstrap {
263
263
  # Download bootstrap scripts from external repository
264
- Invoke-RestMethod -Uri https://raw.githubusercontent.com/avengineers/bootstrap-installer/v1.17.0/install.ps1 | Invoke-Expression
264
+ Invoke-RestMethod -Uri https://raw.githubusercontent.com/avengineers/bootstrap-installer/v1.17.1/install.ps1 | Invoke-Expression
265
265
  # Execute bootstrap script
266
266
  . .\.bootstrap\bootstrap.ps1
267
267
  }
@@ -55,14 +55,14 @@ class BaseVariantTestRunner(ABC):
55
55
 
56
56
  def assert_artifact_exists(self, dir: Path, artifact: Path) -> None:
57
57
  if artifact.is_absolute():
58
- assert artifact.exists(), f"Artifact {artifact} does not exist" # noqa: S101
58
+ assert artifact.exists(), f"Artifact {artifact} does not exist"
59
59
  else:
60
- assert Path.joinpath(dir, artifact).exists(), f"Artifact {Path.joinpath(dir, artifact)} does not exist" # noqa: S101
60
+ assert Path.joinpath(dir, artifact).exists(), f"Artifact {Path.joinpath(dir, artifact)} does not exist"
61
61
 
62
62
  @pytest.mark.build
63
63
  def test_build(self, build_type: Optional[str] = None) -> None:
64
64
  spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="prod", build_type=build_type)
65
- assert 0 == spl_build.execute(target="all") # noqa: S101
65
+ assert 0 == spl_build.execute(target="all")
66
66
  for artifact in self.expected_build_artifacts:
67
67
  self.assert_artifact_exists(dir=spl_build.build_dir, artifact=artifact)
68
68
  if self.create_artifacts_archive:
@@ -74,16 +74,26 @@ class BaseVariantTestRunner(ABC):
74
74
  @pytest.mark.unittests
75
75
  def test_unittests(self, build_type: Optional[str] = None) -> None:
76
76
  spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="test", build_type=build_type)
77
- assert 0 == spl_build.execute(target="unittests") # noqa: S101
77
+ assert 0 == spl_build.execute(target="unittests")
78
78
  for artifact in self.expected_test_artifacts:
79
79
  self.assert_artifact_exists(dir=spl_build.build_dir, artifact=artifact)
80
80
 
81
81
  @pytest.mark.reports
82
82
  def test_reports(self, build_type: Optional[str] = None) -> None:
83
83
  spl_build: SplBuild = SplBuild(variant=self.variant, build_kit="test", build_type=build_type)
84
- assert 0 == spl_build.execute(target="all") # noqa: S101
84
+ assert 0 == spl_build.execute(target="reports")
85
85
  for artifact in self.expected_variant_report_artifacts:
86
86
  self.assert_artifact_exists(dir=spl_build.build_dir, artifact=artifact)
87
87
  for component in self.component_paths:
88
88
  for artifact in self.expected_component_report_artifacts:
89
- self.assert_artifact_exists(dir=Path.joinpath(spl_build.build_dir, "reports", "html", spl_build.build_dir, component, "reports"), artifact=artifact)
89
+ self.assert_artifact_exists(
90
+ dir=Path.joinpath(
91
+ spl_build.build_dir,
92
+ "reports",
93
+ "html",
94
+ spl_build.build_dir,
95
+ component,
96
+ "reports",
97
+ ),
98
+ artifact=artifact,
99
+ )
@@ -3,7 +3,7 @@ import time
3
3
  import zipfile
4
4
  from dataclasses import dataclass
5
5
  from pathlib import Path
6
- from typing import List, Optional
6
+ from typing import Callable, ClassVar, List, Optional
7
7
 
8
8
  from py_app_dev.core.logging import time_it
9
9
 
@@ -39,54 +39,76 @@ class ArtifactsCollection:
39
39
 
40
40
 
41
41
  class SplBuild:
42
- """Class for building an SPL repository."""
43
-
44
- def __init__(self, variant: str, build_kit: str, build_type: Optional[str] = None) -> None:
45
- """
46
- Initialize a SplBuild instance.
47
-
48
- Args:
49
- variant (str): The build variant.
50
- build_kit (str): The build kit.
51
- build_type (str, optional): The build type. Defaults to None.
52
-
53
- """
42
+ """
43
+ Class for building an SPL repository.
44
+
45
+ Relies on build.bat in the root of the SPL repository.
46
+ """
47
+
48
+ @dataclass
49
+ class BuildArtifacts:
50
+ artifacts: list[str]
51
+ # callable to resolve the path to the component artifacts specific to the build target
52
+ path_resolver: Callable[[Path, str], Path]
53
+
54
+ TARGET_VARIANT_BUILD_ARTIFACTS: ClassVar[dict[str, list[str]]] = {"prod/all": ["compile_commands.json"]}
55
+
56
+ TARGET_COMPONENT_BUILD_ARTIFACTS: ClassVar[dict[str, "SplBuild.BuildArtifacts"]] = {
57
+ "test/unittests": BuildArtifacts(
58
+ [
59
+ "coverage.json",
60
+ "junit.xml",
61
+ "reports/coverage/index.html",
62
+ ],
63
+ lambda build_dir, component_name: build_dir / component_name,
64
+ ),
65
+ "test/reports": BuildArtifacts(
66
+ [
67
+ "coverage.html",
68
+ "coverage/index.html",
69
+ "doxygen/html/index.html",
70
+ "unit_test_results.html",
71
+ "unit_test_spec.html",
72
+ ],
73
+ lambda build_dir, component_name: build_dir / "reports" / "html" / build_dir / component_name / "reports",
74
+ ),
75
+ }
76
+
77
+ def __init__(self, variant: str, build_kit: str, build_type: Optional[str] = None, target: Optional[str] = None) -> None:
54
78
  self.variant = variant
55
79
  self.build_kit = build_kit
56
80
  self.build_type = build_type
81
+ self.target = target
57
82
 
58
83
  @property
59
84
  def build_dir(self) -> Path:
60
85
  """
61
- Get the build directory.
62
-
63
- Returns:
64
- Path: The build directory path.
65
-
86
+ Output directory of all build artifacts.
66
87
  """
67
88
  if self.build_type:
68
89
  return Path(f"build/{self.variant}/{self.build_kit}/{self.build_type}")
69
90
  return Path(f"build/{self.variant}/{self.build_kit}")
70
91
 
71
92
  @time_it()
72
- def execute(self, target: str, additional_args: Optional[List[str]] = None) -> int:
93
+ def execute(self, target: Optional[str] = None, additional_args: Optional[List[str]] = None) -> int:
73
94
  """
74
- Build the target
95
+ Execute an SPL build (of a given target).
75
96
 
76
97
  Args:
77
- target (str): The build target.
78
- additional_args (List[str], optional): Additional arguments for building. Defaults to ["-build"].
98
+ target: The target to build, optional, defaults to value given in the constructor.
99
+ additional_args: Additional arguments to pass to the build command.
79
100
 
80
101
  Returns:
81
102
  int: 0 in case of success.
82
103
 
83
104
  """
84
- if additional_args is None:
85
- additional_args = ["-build"]
105
+ if target is None:
106
+ target = self.target if self.target else "all"
86
107
  return_code = -1
87
108
  while True:
88
109
  cmd = [
89
110
  "build.bat",
111
+ "-build",
90
112
  "-buildKit",
91
113
  self.build_kit,
92
114
  "-variants",
@@ -97,7 +119,8 @@ class SplBuild:
97
119
  ]
98
120
  if self.build_type:
99
121
  cmd.extend(["-buildType", self.build_type])
100
- cmd.extend(additional_args)
122
+ if additional_args:
123
+ cmd.extend(additional_args)
101
124
  result = CommandLineExecutor().execute(cmd)
102
125
  return_code = result.returncode
103
126
  if result.returncode:
@@ -113,6 +136,29 @@ class SplBuild:
113
136
  break
114
137
  return return_code
115
138
 
139
+ def get_component_artifacts(self, component_name: str) -> list[Path]:
140
+ if not self.target:
141
+ return []
142
+ target_data = self.TARGET_COMPONENT_BUILD_ARTIFACTS.get(self.build_kit + "/" + self.target)
143
+ if not target_data:
144
+ return []
145
+
146
+ return [target_data.path_resolver(self.build_dir, component_name) / artifact for artifact in target_data.artifacts]
147
+
148
+ def get_components_artifacts(self, component_names: list[str]) -> list[Path]:
149
+ artifacts = []
150
+ for component_name in component_names:
151
+ artifacts.extend(self.get_component_artifacts(component_name))
152
+ return artifacts
153
+
154
+ def get_variant_artifacts(self) -> list[Path]:
155
+ if not self.target:
156
+ return []
157
+ target_data = self.TARGET_VARIANT_BUILD_ARTIFACTS.get(self.build_kit + "/" + self.target)
158
+ if not target_data:
159
+ return []
160
+ return [self.build_dir / artifact for artifact in target_data]
161
+
116
162
  def create_artifacts_archive(self, expected_artifacts: List[Path]) -> Path:
117
163
  """
118
164
  Create a zip file containing the collected artifacts.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: spl-core
3
- Version: 7.3.2
3
+ Version: 7.5.0
4
4
  Summary: Software Product Line Support for CMake
5
5
  License: MIT
6
6
  Author: Avengineers
@@ -1,9 +1,9 @@
1
- spl_core/__init__.py,sha256=8Jco-UfTOBG0bR83qZyBQc0_drTG-H86kUcnKWGtY7o,22
1
+ spl_core/__init__.py,sha256=RW55kHQozoWkaSZN2isiW82hGbM2sEaInLcWMhCPrc8,22
2
2
  spl_core/__run.py,sha256=DphnN7_Bjiw_mOOztsHxTDHS8snz1g2MMWAaJpZxPKM,361
3
3
  spl_core/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  spl_core/common/command_line_executor.py,sha256=GHIMpNiMD_eP44vq7L_HiC08aKt7lgW_wn_omU6REwQ,2217
5
5
  spl_core/common/path.py,sha256=sDujd3n4XP1XGjHc7ImXEdjihO6A8BOIDbKCf7HgQ0Y,462
6
- spl_core/common.cmake,sha256=HHYZQ0q3PzvYUSZwhD7RBS2r9oDkvhBGKCuRdHFDbEU,34448
6
+ spl_core/common.cmake,sha256=sRWqQeK04iUpeM3beQZXIi5mpEQNyO751O-yBoFCrqk,35160
7
7
  spl_core/conan.cmake,sha256=i1AuyN-e8cczX7TI1nl6e3Y8N-EP-QXPVY7LG6NUyJY,41958
8
8
  spl_core/config/KConfig,sha256=atlUwl0kPIdoGjbOI2PoaCQ2wgao7-mblZKn3dXUCxI,1755
9
9
  spl_core/gcov_maid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -24,8 +24,8 @@ spl_core/kickstart/templates/application/src/greeter/test/test_greeter.cc,sha256
24
24
  spl_core/kickstart/templates/application/src/main/CMakeLists.txt,sha256=LGGmW6QLigu8qpdeuQKdgQs6PMgXZBKsiReHHDZQ5DI,109
25
25
  spl_core/kickstart/templates/application/src/main/doc/index.rst,sha256=vJah60GsBx70m-Q1d9sR34cSziwA7wMR-10jMSSlO6c,303
26
26
  spl_core/kickstart/templates/application/src/main/src/main.c,sha256=vNj-JGFqD70h_AVpjFiHeB6pvbW2OpZeSF7munyY6tY,215
27
- spl_core/kickstart/templates/application/test/EnglishVariant/test__EnglishVariant.py,sha256=P66U-6oCKTwLQ_tFFVPEyRbTvfQjKoREnqqWXou4OOc,437
28
- spl_core/kickstart/templates/application/test/German/test__GermanVariant.py,sha256=v4O8mbDA7tAHNus2fQ4MJvXp6kBLyersBy7J-rgpoq4,436
27
+ spl_core/kickstart/templates/application/test/EnglishVariant/test__EnglishVariant.py,sha256=aUpE4_syrOEmqJjQVxfuLc7Z3FcmYNBu7Jjpl9hLOsE,1872
28
+ spl_core/kickstart/templates/application/test/German/test__GermanVariant.py,sha256=vZMSDQ4LgjfaIYg2lLeygRHCV1AG9-ylHQMqWiLH2G0,1870
29
29
  spl_core/kickstart/templates/application/variants/EnglishVariant/config.cmake,sha256=SbFIGrclTicjW-TNH4QlUilaSs1CCmL882PBrlVau8g,94
30
30
  spl_core/kickstart/templates/application/variants/EnglishVariant/parts.cmake,sha256=CnNxm2Cf2X_0vkS52xj5WNTLffVQP9CflkEaDEtlxXs,61
31
31
  spl_core/kickstart/templates/application/variants/GermanVariant/config.cmake,sha256=SbFIGrclTicjW-TNH4QlUilaSs1CCmL882PBrlVau8g,94
@@ -41,7 +41,7 @@ spl_core/kickstart/templates/project/CMakeLists.txt,sha256=le-VTB-TWz6dEisvypxom
41
41
  spl_core/kickstart/templates/project/README.md,sha256=k-P_SycFIRnRmjjUoAiDrRF8Gg1Te-qErAX-pgtYuqg,310
42
42
  spl_core/kickstart/templates/project/bootstrap.json,sha256=FqVp5PmTRZvO0FR_jeA9g2TvIMPPQ5-ozlZNs5YZTmE,119
43
43
  spl_core/kickstart/templates/project/build.bat,sha256=RaFszwOtD27hhmInBV0K2vNRwgcmUBx0ihCKa0LIY6I,85
44
- spl_core/kickstart/templates/project/build.ps1,sha256=ICL0JLGWbVxNaQzv38OQ0ai4JDGjB0m-N_LOMyY5ZXE,14350
44
+ spl_core/kickstart/templates/project/build.ps1,sha256=IVI_fhKUiDyuEx2e2TtYwlh-j4DyHl4sqjmhkN6k5FY,14350
45
45
  spl_core/kickstart/templates/project/conf.py,sha256=KYcz0pLP0nMSYdNhebdNcQPzC5Yg14TDcMPD-mHnlso,6502
46
46
  spl_core/kickstart/templates/project/doc/Doxyfile.in,sha256=NOj07VHEUeEfYIrETKg--G2ShBXMqFh61q1FdhfY-5U,123953
47
47
  spl_core/kickstart/templates/project/doc/common/index.rst,sha256=tOqSYkFdxIJtBcllwMwWEkw9_cbbAsg9NPU2AanyJNc,91
@@ -60,10 +60,10 @@ spl_core/kickstart/templates/project/tools/toolchains/clang/toolchain.cmake,sha2
60
60
  spl_core/kickstart/templates/project/tools/toolchains/gcc/toolchain.cmake,sha256=AmLzPyhTgfc_Dsre4AlsvSOkVGW6VswWvrEnUL8JLhA,183
61
61
  spl_core/main.py,sha256=_hL4j155WZMXog_755bgAH1PeUwvTdJZvVdVw9EWhvo,1225
62
62
  spl_core/spl.cmake,sha256=W8h-Zj-N302qxMrRG8MhoEkJ0io92bWGp4Y5r8LBQnc,4535
63
- spl_core/test_utils/base_variant_test_runner.py,sha256=E5EtAX5qTLQbofIZ9eZoCx2SNd1CTm1HtEKqEn014fA,3493
64
- spl_core/test_utils/spl_build.py,sha256=OO7rIZpBb7EP87D39NeTK4XH17x3xNfwRI5YHPBvGgY,6041
65
- spl_core-7.3.2.dist-info/LICENSE,sha256=UjjA0o8f5tT3wVm7qodTLAhPWLl6kgVyn9FPAd1VeYY,1099
66
- spl_core-7.3.2.dist-info/METADATA,sha256=G2uVtsg4cpCgU5C6BfZsVHiwE5qzijzN9HpxCoK7BSg,5156
67
- spl_core-7.3.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
68
- spl_core-7.3.2.dist-info/entry_points.txt,sha256=18_sdVY93N1GVBiAHxQ_F9ZM-bBvOmVMOMn7PNe2EqU,45
69
- spl_core-7.3.2.dist-info/RECORD,,
63
+ spl_core/test_utils/base_variant_test_runner.py,sha256=0q3jejtj4aEPnlK2mTsgVEaxMP6TZ3Isq-JqZvBeZNo,3653
64
+ spl_core/test_utils/spl_build.py,sha256=wRCtCgnptQaB4Tc_shAmcjJid9mxdYLR910G-PTL9TI,8090
65
+ spl_core-7.5.0.dist-info/LICENSE,sha256=UjjA0o8f5tT3wVm7qodTLAhPWLl6kgVyn9FPAd1VeYY,1099
66
+ spl_core-7.5.0.dist-info/METADATA,sha256=yu2LWQmJ1tGMOlGQ_KswiqTUv4hBUsl2_HLU6Woxcao,5156
67
+ spl_core-7.5.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
68
+ spl_core-7.5.0.dist-info/entry_points.txt,sha256=18_sdVY93N1GVBiAHxQ_F9ZM-bBvOmVMOMn7PNe2EqU,45
69
+ spl_core-7.5.0.dist-info/RECORD,,