spl-core 7.2.6__py3-none-any.whl → 7.3.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.2.6"
1
+ __version__ = "7.3.0"
spl_core/common.cmake CHANGED
@@ -76,6 +76,16 @@ macro(spl_add_test_source fileName)
76
76
  list(APPEND TEST_SOURCES ${to_be_appended})
77
77
  endmacro()
78
78
 
79
+ macro(spl_add_provided_interface directory)
80
+ _spl_get_absolute_path(to_be_appended ${directory})
81
+ list(APPEND PROVIDED_INTERFACES ${to_be_appended})
82
+ endmacro()
83
+
84
+ macro(spl_add_required_interface component)
85
+ _spl_slash_to_underscore(component_name ${component})
86
+ list(APPEND REQUIRED_INTERFACES ${component_name})
87
+ endmacro()
88
+
79
89
  macro(_spl_get_google_test)
80
90
  # GoogleTest requires at least C++14
81
91
  set(CMAKE_CXX_STANDARD 14)
@@ -182,14 +192,6 @@ macro(spl_create_component)
182
192
  \"has_reports\": \"\",
183
193
  \"reports_output_dir\": \"\"
184
194
  }")
185
-
186
- list(APPEND target_include_directories__INCLUDES ${CMAKE_CURRENT_LIST_DIR}/src)
187
- list(APPEND target_include_directories__INCLUDES ${CMAKE_CURRENT_BINARY_DIR})
188
-
189
- list(APPEND target_include_directories__INCLUDES ${INCLUDES})
190
- list(REMOVE_DUPLICATES target_include_directories__INCLUDES)
191
- set(target_include_directories__INCLUDES ${target_include_directories__INCLUDES} PARENT_SCOPE)
192
-
193
195
  if(BUILD_KIT STREQUAL prod)
194
196
  if(SOURCES)
195
197
  # Create the component library
@@ -355,6 +357,31 @@ Code Coverage
355
357
  endif(EXISTS ${_component_doc_file})
356
358
  endif(BUILD_KIT STREQUAL prod)
357
359
 
360
+ # Implicitly add default include directories to provided interfaces
361
+ list(APPEND PROVIDED_INTERFACES ${CMAKE_CURRENT_LIST_DIR}/src)
362
+ list(APPEND PROVIDED_INTERFACES ${CMAKE_CURRENT_BINARY_DIR})
363
+ # Get rid of duplicates, in case the default directories where explicitly defined
364
+ list(REMOVE_DUPLICATES PROVIDED_INTERFACES)
365
+
366
+ # Make sure the component provided interfaces are added to the global include directories. Required for backward compatibility.
367
+ foreach(interfaceDir IN LISTS PROVIDED_INTERFACES)
368
+ spl_add_include(${interfaceDir})
369
+ endforeach()
370
+
371
+ list(APPEND target_include_directories__INCLUDES ${INCLUDES})
372
+ list(REMOVE_DUPLICATES target_include_directories__INCLUDES)
373
+ set(target_include_directories__INCLUDES ${target_include_directories__INCLUDES} PARENT_SCOPE)
374
+
375
+ # Define the target public interfaces to be used instead of the global include directories.
376
+ if(TARGET ${component_name})
377
+ foreach(interfaceDir IN LISTS PROVIDED_INTERFACES)
378
+ target_include_directories(${component_name} PUBLIC ${interfaceDir})
379
+ endforeach()
380
+ foreach(component IN LISTS REQUIRED_INTERFACES)
381
+ target_link_libraries(${component_name} PUBLIC ${component})
382
+ endforeach()
383
+ endif()
384
+
358
385
  # Collect all component info for later usage (e.g., in an extension)
359
386
  list(APPEND COMPONENTS_INFO ${_component_info})
360
387
  set(COMPONENTS_INFO ${COMPONENTS_INFO} PARENT_SCOPE)
@@ -1,2 +1,3 @@
1
1
  spl_add_source(src/main.c)
2
+ spl_add_required_interface(src/greeter)
2
3
  spl_create_component(LONG_NAME "Main")
@@ -1,11 +1,11 @@
1
1
  [
2
2
  {
3
3
  "name": "prod",
4
- "environmentSetupScript": "${workspaceFolder}/.venv/Scripts/activate"
4
+ "environmentSetupScript": "${workspaceFolder}/build/env_setup.bat"
5
5
  },
6
6
  {
7
7
  "name": "test",
8
8
  "toolchainFile": "tools/toolchains/gcc/toolchain.cmake",
9
- "environmentSetupScript": "${workspaceFolder}/.venv/Scripts/activate"
9
+ "environmentSetupScript": "${workspaceFolder}/build/env_setup.bat"
10
10
  }
11
11
  ]
@@ -2,7 +2,6 @@
2
2
  "recommendations": [
3
3
  "mhutchie.git-graph",
4
4
  "ms-vscode.cmake-tools",
5
- "twxs.cmake",
6
5
  "ms-vscode.cpptools",
7
6
  "ms-vscode.cpptools-themes",
8
7
  "visualstudioexptteam.intellicode-api-usage-examples",
@@ -15,6 +14,8 @@
15
14
  "felipecaputo.git-project-manager",
16
15
  "ms-vscode.powershell",
17
16
  "waderyan.gitblame",
18
- "sandcastle.vscode-open"
17
+ "sandcastle.vscode-open",
18
+ "josetr.cmake-language-support-vscode",
19
+ "ibm.output-colorizer"
19
20
  ]
20
21
  }
@@ -1,17 +1,22 @@
1
1
  {
2
2
  "python.testing.pytestEnabled": true,
3
- "python.testing.pytestArgs": [
4
- "test"
5
- ],
6
3
  "python.testing.unittestEnabled": false,
7
- "python.analysis.extraPaths": [
8
- "test"
4
+ "python.analysis.include": [
5
+ "test",
6
+ "build/modules/spl-core-src"
9
7
  ],
8
+ "[python]": {
9
+ "editor.defaultFormatter": "charliermarsh.ruff"
10
+ },
11
+ "[cmake]": {
12
+ "editor.defaultFormatter": "josetr.cmake-language-support-vscode"
13
+ },
10
14
  "cmake.configureOnOpen": false,
11
- "cmake.buildDirectory": "${workspaceFolder}/build/${variant:variant}/${buildKit}",
15
+ "cmake.buildDirectory": "${workspaceFolder}/build/${variant:variant}/${buildKit}/${buildType}",
12
16
  "cmake.configureSettings": {
13
17
  "BUILD_KIT": "${buildKit}",
14
- "CMAKE_MESSAGE_LOG_LEVEL": "STATUS"
18
+ "CMAKE_MESSAGE_LOG_LEVEL": "STATUS",
19
+ "BUILD_TYPE": "${buildType}",
15
20
  },
16
21
  "cmake.generator": "Ninja",
17
22
  "cmake.debugConfig": {
@@ -21,25 +26,90 @@
21
26
  },
22
27
  "cmake.configureOnEdit": false,
23
28
  "cmake.buildBeforeRun": false,
24
- "cmake.environment": {
25
- "PIPENV_VERBOSITY": "-1",
26
- "PIPENV_VENV_IN_PROJECT": "1"
27
- },
29
+ "cmake.options.statusBarVisibility": "compact",
28
30
  "cmake.buildToolArgs": [],
29
31
  "git.ignoreLimitWarning": true,
30
32
  "C_Cpp.errorSquiggles": "enabled",
31
33
  "C_Cpp.default.cStandard": "gnu17",
32
34
  "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
33
- "C_Cpp.formatting": "vcFormat",
35
+ "C_Cpp.formatting": "clangFormat",
36
+ "editor.formatOnSave": true,
37
+ "files.insertFinalNewline": true,
38
+ "files.trimTrailingWhitespace": true,
34
39
  "files.associations": {
35
40
  "*.h": "c",
36
41
  "*.c": "c",
37
42
  "Jenkinsfile": "groovy",
38
- "*.py": "python"
43
+ "*.py": "python",
44
+ "array": "cpp",
45
+ "string_view": "cpp",
46
+ "initializer_list": "cpp",
47
+ "span": "cpp",
48
+ "any": "cpp",
49
+ "atomic": "cpp",
50
+ "bit": "cpp",
51
+ "*.tcc": "cpp",
52
+ "cctype": "cpp",
53
+ "charconv": "cpp",
54
+ "chrono": "cpp",
55
+ "clocale": "cpp",
56
+ "cmath": "cpp",
57
+ "compare": "cpp",
58
+ "concepts": "cpp",
59
+ "condition_variable": "cpp",
60
+ "cstdarg": "cpp",
61
+ "cstddef": "cpp",
62
+ "cstdint": "cpp",
63
+ "cstdio": "cpp",
64
+ "cstdlib": "cpp",
65
+ "cstring": "cpp",
66
+ "ctime": "cpp",
67
+ "cwchar": "cpp",
68
+ "cwctype": "cpp",
69
+ "deque": "cpp",
70
+ "forward_list": "cpp",
71
+ "list": "cpp",
72
+ "map": "cpp",
73
+ "set": "cpp",
74
+ "string": "cpp",
75
+ "unordered_map": "cpp",
76
+ "unordered_set": "cpp",
77
+ "vector": "cpp",
78
+ "exception": "cpp",
79
+ "algorithm": "cpp",
80
+ "functional": "cpp",
81
+ "iterator": "cpp",
82
+ "memory": "cpp",
83
+ "memory_resource": "cpp",
84
+ "numeric": "cpp",
85
+ "optional": "cpp",
86
+ "random": "cpp",
87
+ "ratio": "cpp",
88
+ "system_error": "cpp",
89
+ "tuple": "cpp",
90
+ "type_traits": "cpp",
91
+ "utility": "cpp",
92
+ "format": "cpp",
93
+ "fstream": "cpp",
94
+ "iomanip": "cpp",
95
+ "iosfwd": "cpp",
96
+ "iostream": "cpp",
97
+ "istream": "cpp",
98
+ "limits": "cpp",
99
+ "mutex": "cpp",
100
+ "new": "cpp",
101
+ "numbers": "cpp",
102
+ "ostream": "cpp",
103
+ "semaphore": "cpp",
104
+ "sstream": "cpp",
105
+ "stdexcept": "cpp",
106
+ "stop_token": "cpp",
107
+ "streambuf": "cpp",
108
+ "thread": "cpp",
109
+ "typeinfo": "cpp",
110
+ "variant": "cpp"
39
111
  },
40
112
  "git.repositoryScanMaxDepth": 3,
41
113
  "git-graph.maxDepthOfRepoSearch": 3,
42
- "[python]": {
43
- "editor.defaultFormatter": "charliermarsh.ruff"
44
- }
114
+ "editor.tabSize": 4,
45
115
  }
@@ -9,77 +9,101 @@
9
9
  "problemMatcher": []
10
10
  },
11
11
  {
12
- "label": "Update all tools",
13
- "detail": "Update of all installed scoop packages",
12
+ "label": "Environment",
13
+ "detail": "Print all environment variables for debugging purposes",
14
14
  "type": "shell",
15
- "command": ".\\build.ps1 -command 'scoop update --all'",
15
+ "command": "dir env:",
16
16
  "problemMatcher": []
17
17
  },
18
18
  {
19
- "label": "Environment",
20
- "detail": "Print all environment variables for debugging purposes",
19
+ "label": "Configure variant",
20
+ "detail": "Feature configuration using KConfig",
21
21
  "type": "shell",
22
- "command": "dir env:",
22
+ "command": ".venv/Scripts/poetry run guiconfig",
23
+ "options": {
24
+ "env": {
25
+ "KCONFIG_CONFIG": "variants/${input:variant}/config.txt"
26
+ }
27
+ },
23
28
  "problemMatcher": []
24
29
  },
25
30
  {
26
- "type": "cmake",
27
- "label": "Build with CMake",
28
- "detail": "Build target 'all' of selected variant",
29
- "command": "build",
30
- "targets": [
31
- "all"
32
- ],
31
+ "label": "Open variant test report",
32
+ "detail": "Open the variant's overall test report in your web browser",
33
+ "command": "${workspaceFolder}/build/${input:variant}/test/Debug/reports/html/index.html",
34
+ "type": "shell",
35
+ "presentation": {
36
+ "reveal": "always"
37
+ },
33
38
  "group": {
34
39
  "kind": "build",
35
- "isDefault": true
40
+ "isDefault": false
41
+ }
42
+ },
43
+ {
44
+ "label": "Open variant coverage report",
45
+ "detail": "Open the variant's overall coverage report in your web browser",
46
+ "command": "${workspaceFolder}/build/${input:variant}/test/Debug/reports/coverage/index.html",
47
+ "type": "shell",
48
+ "presentation": {
49
+ "reveal": "always"
36
50
  },
37
- "problemMatcher": [
38
- {
39
- "owner": "c/cpp",
40
- "fileLocation": [
41
- "absolute"
42
- ],
43
- "pattern": {
44
- "regexp": "^ctc (I|W|E)(\\d+): \\[\"(.*)\" (\\d+)/(\\d+)\\] (.*)",
45
- "file": 3,
46
- "line": 4,
47
- "column": 5,
48
- "severity": 1,
49
- "message": 6
50
- }
51
- }
52
- ]
51
+ "group": {
52
+ "kind": "build",
53
+ "isDefault": false
54
+ }
53
55
  },
54
56
  {
55
- "type": "cmake",
56
- "label": "Clean with CMake",
57
- "command": "clean",
58
- "problemMatcher": [],
59
- "detail": "Clean build artifacts of selected variant"
57
+ "label": "Open component test report",
58
+ "detail": "Open the component's test report in your web browser",
59
+ "command": "${workspaceFolder}/build/${input:variant}/test/Debug/${input:component}/reports/html/index.html",
60
+ "type": "shell",
61
+ "presentation": {
62
+ "reveal": "always"
63
+ },
64
+ "group": {
65
+ "kind": "build",
66
+ "isDefault": false
67
+ }
60
68
  },
61
69
  {
62
- "type": "cmake",
63
- "label": "Configure with CMake",
64
- "command": "configure",
65
- "problemMatcher": [],
66
- "detail": "Configure selected variant"
70
+ "label": "Open component coverage report",
71
+ "detail": "Open the component's coverage report in your web browser",
72
+ "command": "${workspaceFolder}/build/${input:variant}/test/Debug/${input:component}/reports/coverage/index.html",
73
+ "type": "shell",
74
+ "presentation": {
75
+ "reveal": "always"
76
+ },
77
+ "group": {
78
+ "kind": "build",
79
+ "isDefault": false
80
+ }
67
81
  },
68
82
  {
69
- "label": "Configure variant",
70
- "detail": "Feature configuration using KConfig",
83
+ "label": "Generate PAYC options file",
84
+ "detail": "Generate Polyspace-As-You-Code options file for the selected variant",
85
+ "command": "./build.ps1",
86
+ "args": [
87
+ "-command",
88
+ "sple_static_analysis.exe generate-ps-options-file --project-root-dir ${workspaceFolder} --variant ${input:variant} --build-kit prod --build-type ${input:buildType} --payc --output-folder ./build"
89
+ ],
71
90
  "type": "shell",
72
- "command": ".venv/Scripts/poetry run guiconfig",
73
- "options": {
74
- "env": {
75
- "KCONFIG_CONFIG": "variants/${input:variant}/config.txt"
76
- }
91
+ "presentation": {
92
+ "reveal": "always"
77
93
  },
78
- "problemMatcher": []
94
+ "group": {
95
+ "kind": "build",
96
+ "isDefault": false
97
+ }
79
98
  },
80
99
  {
81
- "label": "open report html",
82
- "command": "${workspaceFolder}/build/${input:variant}/test/src/${input:component}/reports/html/index.html",
100
+ "label": "Generate Polyspace BF options file",
101
+ "detail": "Generate Polyspace Bug Finder options file for the selected variant",
102
+ "command": "./build.ps1",
103
+ "args": [
104
+ "-command",
105
+ "sple_static_analysis.exe generate-ps-options-file --project-root-dir ${workspaceFolder} --variant ${input:variant} --build-kit prod --build-type Debug --output-folder ./variants/${input:variant}"
106
+ ],
83
107
  "type": "shell",
84
108
  "presentation": {
85
109
  "reveal": "always"
@@ -105,8 +129,17 @@
105
129
  "id": "component",
106
130
  "description": "Which component do you want to select?",
107
131
  "options": [
108
- "greeter",
109
- "main"
132
+ "src/greeter",
133
+ "src/main"
134
+ ]
135
+ },
136
+ {
137
+ "type": "pickString",
138
+ "id": "buildType",
139
+ "description": "Which build type do you want to use?",
140
+ "options": [
141
+ "Debug",
142
+ "Release"
110
143
  ]
111
144
  }
112
145
  ]
@@ -10,7 +10,7 @@ include(${CMAKE_SOURCE_DIR}/variants/${VARIANT}/config.cmake)
10
10
  if(BUILD_KIT STREQUAL prod)
11
11
  project(${VARIANT} C ASM)
12
12
  else()
13
- # In case of test the project is a C++ project due to GTest usage
13
+ # C++ project due to GTest usage
14
14
  project(${VARIANT} C ASM CXX)
15
15
  endif()
16
16
 
@@ -24,23 +24,7 @@ if(DEFINED ENV{SPLCORE_PATH})
24
24
  message(WARNING "SPLCORE_PATH defined! Use fixed SPL-CORE version from: $ENV{SPLCORE_PATH}")
25
25
  include($ENV{SPLCORE_PATH}/spl.cmake)
26
26
  else()
27
- # Fetch spl-core
28
- FetchContent_Declare(
29
- spl-core
30
- GIT_REPOSITORY https://github.com/avengineers/spl-core.git
31
- GIT_TAG develop
32
- )
33
- FetchContent_MakeAvailable(spl-core)
34
-
35
- # Include spl-core
36
- include(${spl-core_SOURCE_DIR}/src/spl_core/spl.cmake)
27
+ include(".venv/Lib/site-packages/spl_core/spl.cmake")
37
28
  endif()
38
29
 
39
30
  include(${CMAKE_SOURCE_DIR}/variants/${VARIANT}/parts.cmake)
40
-
41
- # add all components' include directories to the include paths of each component
42
- foreach(component_name ${COMPONENT_NAMES})
43
- if(TARGET ${component_name})
44
- target_include_directories(${component_name} PUBLIC ${target_include_directories__INCLUDES})
45
- endif()
46
- endforeach()
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "python_version": "3.11",
3
- "python_package_manager": "pipenv>=2024.0.3"
3
+ "python_package_manager": "poetry>=2.0",
4
+ "scoop_ignore_scoopfile": true
4
5
  }
@@ -1 +1 @@
1
- powershell -ExecutionPolicy Bypass -File %~dp0build.ps1 %* || exit /b 1
1
+ powershell -ExecutionPolicy Bypass -File %~dp0build.ps1 -waitForKey %* || exit /b 1
@@ -6,71 +6,42 @@
6
6
  param(
7
7
  [Parameter(Mandatory = $false, HelpMessage = 'Install all dependencies required to build. (Switch, default: false)')]
8
8
  [switch]$install = $false,
9
+ [Parameter(Mandatory = $false, HelpMessage = 'Install optional dependencies. (Switch, default: false)')]
10
+ [switch]$installOptional = $false,
9
11
  [Parameter(Mandatory = $false, HelpMessage = 'Install Visual Studio Code. (Switch, default: false)')]
10
12
  [switch]$installVSCode = $false,
13
+ [Parameter(Mandatory = $false, HelpMessage = 'Run all CI tests (python tests with pytest) (Switch, default: false)')]
14
+ [switch]$selftests = $false,
11
15
  [Parameter(Mandatory = $false, HelpMessage = 'Build the target.')]
12
16
  [switch]$build = $false,
17
+ [Parameter(Mandatory = $false, HelpMessage = 'Start Visual Studio Code. (Switch, default: false)')]
18
+ [switch]$startVSCode = $false,
13
19
  [Parameter(Mandatory = $false, HelpMessage = 'Command to be executed (String)')]
14
20
  [string]$command = "",
15
21
  [Parameter(Mandatory = $false, HelpMessage = 'Clean build, wipe out all build artifacts. (Switch, default: false)')]
16
22
  [switch]$clean = $false,
17
23
  [Parameter(Mandatory = $false, HelpMessage = 'Build kit to be used. (String: "prod" or "test", default: "prod")')]
18
24
  [string]$buildKit = "prod",
25
+ [Parameter(Mandatory = $false, HelpMessage = 'Type of build. (String, default: "Debug")')]
26
+ [string]$buildType = "Debug",
19
27
  [Parameter(Mandatory = $false, HelpMessage = 'Target to be built. (String, default: "all")')]
20
28
  [string]$target = "all",
21
29
  [Parameter(Mandatory = $false, HelpMessage = 'Variants (of the product) to be built. (List of strings, leave empty to be asked or "all" for automatic build of all variants)')]
22
30
  [string[]]$variants = $null,
23
31
  [Parameter(Mandatory = $false, HelpMessage = 'filter for self tests, e.g. "Disco or test_Disco.py" (see https://docs.pytest.org/en/stable/usage.html).')]
24
32
  [string]$filter = "",
33
+ [Parameter(Mandatory = $false, HelpMessage = 'Marker for self tests, e.g. "static_analysis" (see https://docs.pytest.org/en/stable/how-to/mark.html).')]
34
+ [string]$marker = "",
25
35
  [Parameter(Mandatory = $false, HelpMessage = 'Additional build arguments for Ninja (e.g., "-d explain -d keepdepfile" for debugging purposes)')]
26
36
  [string]$ninjaArgs = "",
27
37
  [Parameter(Mandatory = $false, HelpMessage = 'Delete CMake cache and reconfigure. (Switch, default: false)')]
28
- [switch]$reconfigure = $false
38
+ [switch]$reconfigure = $false,
39
+ [Parameter(Mandatory = $false, HelpMessage = 'Just configure the build and fetch all dependencies. (Switch, default: false)')]
40
+ [switch]$configureOnly = $false,
41
+ [Parameter(Mandatory = $false, HelpMessage = 'Wait for a key press before exiting. (Switch, default: false)')]
42
+ [switch]$waitForKey = $false
29
43
  )
30
44
 
31
- # Call a command and handle its exit code
32
- Function Invoke-CommandLine {
33
- [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingInvokeExpression', '', Justification = 'Usually this statement must be avoided (https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/avoid-using-invoke-expression?view=powershell-7.3), here it is OK as it does not execute unknown code.')]
34
- param (
35
- [Parameter(Mandatory = $true, Position = 0)]
36
- [string]$CommandLine,
37
- [Parameter(Mandatory = $false, Position = 1)]
38
- [bool]$StopAtError = $true,
39
- [Parameter(Mandatory = $false, Position = 2)]
40
- [bool]$Silent = $false
41
- )
42
- if (-Not $Silent) {
43
- Write-Output "Executing: $CommandLine"
44
- }
45
- $global:LASTEXITCODE = 0
46
- Invoke-Expression $CommandLine
47
- if ($global:LASTEXITCODE -ne 0) {
48
- if ($StopAtError) {
49
- Write-Error "Command line call '$CommandLine' failed with exit code $global:LASTEXITCODE"
50
- }
51
- else {
52
- if (-Not $Silent) {
53
- Write-Output "Command line call '$CommandLine' failed with exit code $global:LASTEXITCODE, continuing ..."
54
- }
55
- }
56
- }
57
- }
58
-
59
- # Update/Reload current environment variable PATH with settings from registry
60
- Function Initialize-EnvPath {
61
- # workaround for system-wide installations
62
- if ($Env:USER_PATH_FIRST) {
63
- $Env:Path = [System.Environment]::GetEnvironmentVariable("Path", "User") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "Machine")
64
- }
65
- else {
66
- $Env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
67
- }
68
- }
69
-
70
- function Test-RunningInCIorTestEnvironment {
71
- return [Boolean]($Env:JENKINS_URL -or $Env:PYTEST_CURRENT_TEST -or $Env:GITHUB_ACTIONS)
72
- }
73
-
74
45
  # Consider CI environment variables (e.g. on Jenkins BRANCH_NAME and CHANGE_TARGET) to filter tests in release branch builds
75
46
  function Get-ReleaseBranchPytestFilter {
76
47
  $ChangeId = $env:CHANGE_ID
@@ -95,138 +66,204 @@ function Get-ReleaseBranchPytestFilter {
95
66
  return $filter
96
67
  }
97
68
 
98
- # Build with given parameters
99
- Function Invoke-Build {
69
+ # Call build system with given parameters
70
+ function Invoke-Build-System {
100
71
  param (
101
72
  [Parameter(Mandatory = $false)]
102
73
  [bool]$clean = $false,
103
74
  [Parameter(Mandatory = $false)]
75
+ [bool]$build = $false,
76
+ [Parameter(Mandatory = $false)]
104
77
  [string]$buildKit = "prod",
78
+ [Parameter(Mandatory = $false)]
79
+ [string]$buildType = "Debug",
105
80
  [Parameter(Mandatory = $true)]
106
81
  [string]$target = "all",
107
82
  [Parameter(Mandatory = $false)]
108
83
  [string[]]$variants = $null,
109
84
  [Parameter(Mandatory = $false)]
110
- [string]$filter = "",
111
- [Parameter(Mandatory = $false)]
112
85
  [string]$ninjaArgs = "",
113
86
  [Parameter(Mandatory = $false)]
114
- [bool]$reconfigure = $false
87
+ [bool]$reconfigure = $false,
88
+ [Parameter(Mandatory = $false)]
89
+ [bool]$configureOnly = $false
115
90
  )
116
- if ("selftests" -eq $target) {
117
- # Run python tests to test all relevant variants and platforms (build kits)
118
- # (normally run in CI environment/Jenkins)
119
- Write-Output "Running all selfstests ..."
120
-
121
- # Build folder for CMake builds
122
- $buildFolder = "build"
123
-
124
- # fresh and clean CMake builds
125
- if ($clean) {
126
- if (Test-Path -Path $buildFolder) {
127
- Write-Output "Removing build folder '$buildFolder' ..."
128
- Remove-Item $buildFolder -Force -Recurse
129
- }
130
- }
131
-
132
- # Filter pytest test cases
133
- $filterCmd = ''
134
- $releaseBranchFilter = Get-ReleaseBranchPytestFilter
135
- if ($releaseBranchFilter) {
136
- $filterCmd = "-k '$releaseBranchFilter'"
91
+ # Determine variants to be built
92
+ $defaultVariantsFolder = ".\variants\"
93
+ if ((-Not $variants) -or ($variants -eq 'all')) {
94
+ $variantConfigs = Get-Childitem -Include config.cmake -Path $defaultVariantsFolder -Recurse | Resolve-Path -Relative
95
+ $variantsList = @()
96
+ Foreach ($variantConfig in $variantConfigs) {
97
+ $variant = ((Get-Item $variantConfig).Directory | Resolve-Path -Relative).Replace($defaultVariantsFolder, "").Replace("\", "/")
98
+ $variantsList += $variant
137
99
  }
138
- # otherwise consider command line option '-filter' if given
139
- elseif ($filter) {
140
- $filterCmd = "-k '$filter'"
141
- }
142
-
143
- # Test result of pytest
144
- $pytestJunitXml = "test/output/test-report.xml"
145
-
146
- # Delete any old pytest result
147
- if (Test-Path -Path $pytestJunitXml) {
148
- Remove-Item $pytestJunitXml -Force
149
- }
150
-
151
- # Finally run pytest
152
- Invoke-CommandLine -CommandLine ".venv\Scripts\pipenv run python -m pytest test --junitxml=$pytestJunitXml $filterCmd"
153
- }
154
- else {
155
- if ((-Not $variants) -or ($variants -eq 'all')) {
156
- $dirs = Get-Childitem -Include config.cmake -Path variants -Recurse | Resolve-Path -Relative
157
- $variantsList = @()
158
- Foreach ($dir in $dirs) {
159
- $variant = (get-item $dir).Directory.BaseName
160
- $variantsList += $variant
100
+ $variantsSelected = @()
101
+ if (-Not $variants) {
102
+ # variant selection by user if not specified
103
+ Write-Information -Tags "Info:" -MessageData "no '--variant <variant>' was given, please select from list:"
104
+ Write-Information -Tags "Info:" -MessageData ("(0) all variants")
105
+ Foreach ($variant in $variantsList) {
106
+ Write-Information -Tags "Info:" -MessageData ("(" + ([array]::IndexOf($variantsList, $variant) + 1) + ") " + $variant)
161
107
  }
162
- $variantsSelected = @()
163
- if (-Not $variants) {
164
- # variant selection by user if not specified
165
- Write-Information -Tags "Info:" -MessageData "no '--variant <variant>' was given, please select from list:"
166
- Foreach ($variant in $variantsList) {
167
- Write-Information -Tags "Info:" -MessageData ("(" + [array]::IndexOf($variantsList, $variant) + ") " + $variant)
168
- }
169
- $variantsSelected += $variantsList[[int](Read-Host "Please enter selected variant number")]
170
- Write-Information -Tags "Info:" -MessageData "Selected variant is: $variantsSelected"
108
+ $selection = [int](Read-Host "Please enter selected variant number")
109
+ if ($selection -eq 0) {
110
+ # build all variants
111
+ $variantsSelected = $variantsList
171
112
  }
172
113
  else {
173
- # otherwise build all variants
174
- $variantsSelected = $variantsList
114
+ # build selected variant
115
+ $variantsSelected += $variantsList[$selection - 1]
175
116
  }
117
+ Write-Information -Tags "Info:" -MessageData "Selected variants: $variantsSelected"
176
118
  }
177
119
  else {
178
- $variantsSelected = $Variants.Replace('\', '/').Replace('./variant/', '').Replace('./variants/', '').Split(',')
120
+ # otherwise build all variants
121
+ $variantsSelected = $variantsList
179
122
  }
123
+ }
124
+ else {
125
+ $variantsSelected = $Variants.Replace($defaultVariantsFolder, "").Replace("\", "/").Split(',') | ForEach-Object { $_.TrimEnd('/') }
126
+ }
180
127
 
181
- # Select 'test' build kit based on target
182
- if ($target.Contains("unittests") -or $target.Contains("reports") -or $target.Contains("docs")) {
183
- $buildKit = "test"
184
- }
128
+ # Select 'test' build kit based on target
129
+ if ($target.Contains("unittests") -or $target.Contains("reports")) {
130
+ $buildKit = "test"
131
+ }
132
+ # If buildKit is 'test' then buildType is 'Debug'
133
+ if ($buildKit -eq "test") {
134
+ $buildType = "Debug"
135
+ }
185
136
 
186
- Foreach ($variant in $variantsSelected) {
187
- Write-Output "Building target '$target' with build kit '$buildKit' for variant '$variant' ..."
137
+ Foreach ($variant in $variantsSelected) {
138
+ $buildFolder = "build\$variant\$buildKit\$buildType".Replace("/", "\")
139
+ # fresh and clean build
140
+ if ($clean) {
141
+ Remove-Path $buildFolder
142
+ }
143
+ New-Directory $buildFolder
188
144
 
189
- $buildFolder = "build/$variant/$buildKit"
190
- # fresh and clean build
191
- if ($clean) {
192
- if (Test-Path -Path $buildFolder) {
193
- Write-Output "Removing build folder '$buildFolder' ..."
194
- Remove-Item $buildFolder -Force -Recurse
195
- }
196
- }
145
+ # delete CMake cache and reconfigure
146
+ if ($reconfigure -or $configureOnly) {
147
+ Remove-Path "$buildFolder\CMakeCache.txt"
148
+ Remove-Path "$buildFolder\CMakeFiles"
149
+ }
197
150
 
198
- # delete CMake cache and reconfigure
199
- if ($reconfigure) {
200
- if (Test-Path -Path "$buildFolder/CMakeCache.txt") {
201
- Remove-Item "$buildFolder/CMakeCache.txt" -Force
202
- }
203
- if (Test-Path -Path "$buildFolder/CMakeFiles") {
204
- Remove-Item "$buildFolder/CMakeFiles" -Force -Recurse
205
- }
206
- }
151
+ if ($build) {
152
+ Write-Output "Building target '$target' with build kit '$buildKit' and build type '$buildType' for variant '$variant' ..."
207
153
 
208
154
  # CMake configure
209
155
  $additionalConfig = "-DBUILD_KIT='$buildKit'"
156
+ $additionalConfig += " -DBUILD_TYPE='$buildType'"
210
157
  if ($buildKit -eq "test") {
211
158
  $additionalConfig += " -DCMAKE_TOOLCHAIN_FILE='tools/toolchains/gcc/toolchain.cmake'"
212
159
  }
213
- Invoke-CommandLine -CommandLine ".venv\Scripts\pipenv run cmake -B '$buildFolder' -G Ninja -DVARIANT='$variant' $additionalConfig"
214
160
 
215
- # CMake clean all dead artifacts. Required when running incremented builds to delete obsolete artifacts.
216
- Invoke-CommandLine -CommandLine ".venv\Scripts\pipenv run cmake --build '$buildFolder' --target $target -- -t cleandead"
217
- # CMake build
218
- Invoke-CommandLine -CommandLine ".venv\Scripts\pipenv run cmake --build '$buildFolder' --target $target -- $ninjaArgs"
161
+ Invoke-CommandLine -CommandLine "cmake -B '$buildFolder' -G Ninja -DVARIANT='$variant' $additionalConfig"
162
+
163
+ if (-Not $configureOnly) {
164
+ $cmd = "cmake --build '$buildFolder' --config '$buildType' --target $target"
165
+
166
+ # CMake clean all dead artifacts. Required when running incremented builds to delete obsolete artifacts.
167
+ Invoke-CommandLine -CommandLine "$cmd -- -t cleandead"
168
+ # CMake build
169
+ Invoke-CommandLine -CommandLine "$cmd -- $ninjaArgs"
170
+ }
219
171
  }
220
172
  }
221
173
  }
222
174
 
175
+ function Invoke-Self-Tests {
176
+ param (
177
+ [Parameter(Mandatory = $false)]
178
+ [bool]$clean = $false,
179
+ [Parameter(Mandatory = $false)]
180
+ [string]$filter = "",
181
+ [Parameter(Mandatory = $false)]
182
+ [string]$marker = ""
183
+ )
184
+
185
+ # Run python tests to test all relevant variants and platforms (build kits)
186
+ # (normally run in CI environment/Jenkins)
187
+ Write-Output "Running all self tests ..."
188
+
189
+ if ($clean) {
190
+ # Remove all build outputs in one step, this will remove obsolete variants, too.
191
+ Remove-Path "build"
192
+ }
193
+
194
+ # Test result of pytest
195
+ $pytestJunitXml = "test/output/test-report.xml"
196
+
197
+ # Delete any old pytest result
198
+ Remove-Path $pytestJunitXml
199
+
200
+ $pytestArgs = @(
201
+ "--junitxml=$pytestJunitXml"
202
+ )
203
+
204
+ # Filter pytest test cases
205
+ $releaseBranchFilter = Get-ReleaseBranchPytestFilter
206
+ if ($releaseBranchFilter) {
207
+ $pytestArgs += "-k '$releaseBranchFilter'"
208
+ }
209
+ # otherwise consider command line option '-filter' if given
210
+ elseif ($filter) {
211
+ $pytestArgs += "-k '$filter'"
212
+ }
213
+
214
+ # Execute marker tests
215
+ if ($marker) {
216
+ $pytestArgs += "-m '$marker'"
217
+ }
218
+
219
+ # Finally run pytest and ignore return value. Content of test-report.xml will be evaluated by CI system.
220
+ $commandLine = "pytest " + ($pytestArgs -join " ")
221
+ Invoke-CommandLine -CommandLine $commandLine -StopAtError $false
222
+ }
223
+
224
+ function Remove-Path {
225
+ param (
226
+ [Parameter(Mandatory = $true, Position = 0)]
227
+ [string]$path
228
+ )
229
+ if (Test-Path -Path $path -PathType Container) {
230
+ Write-Output "Deleting directory '$path' ..."
231
+ Remove-Item $path -Force -Recurse
232
+ }
233
+ elseif (Test-Path -Path $path -PathType Leaf) {
234
+ Write-Output "Deleting file '$path' ..."
235
+ Remove-Item $path -Force
236
+ }
237
+ }
238
+
239
+ function New-Directory {
240
+ param (
241
+ [Parameter(Mandatory = $true, Position = 0)]
242
+ [string]$dir
243
+ )
244
+ if (-Not (Test-Path -Path $dir)) {
245
+ Write-Output "Creating directory '$dir' ..."
246
+ New-Item -ItemType Directory $dir
247
+ }
248
+ }
249
+
250
+ function Get-User-Menu-Selection {
251
+ Clear-Host
252
+ Write-Information -Tags "Info:" -MessageData "None of the following command line options was given:"
253
+ Write-Information -Tags "Info:" -MessageData ("(1) -install: installation of mandatory dependencies")
254
+ Write-Information -Tags "Info:" -MessageData ("(2) -installOptional: installation of optional dependencies")
255
+ Write-Information -Tags "Info:" -MessageData ("(3) -installVSCode: installation of Visual Studio Code")
256
+ Write-Information -Tags "Info:" -MessageData ("(4) -build: execute CMake build")
257
+ Write-Information -Tags "Info:" -MessageData ("(5) -startVSCode: start Visual Studio Code")
258
+ Write-Information -Tags "Info:" -MessageData ("(6) quit: exit script")
259
+ return(Read-Host "Please make a selection")
260
+ }
261
+
223
262
  function Invoke-Bootstrap {
224
263
  # Download bootstrap scripts from external repository
225
264
  Invoke-RestMethod -Uri https://raw.githubusercontent.com/avengineers/bootstrap-installer/v1.17.0/install.ps1 | Invoke-Expression
226
265
  # Execute bootstrap script
227
266
  . .\.bootstrap\bootstrap.ps1
228
- # For incremental build: clean up virtual environment from old dependencies
229
- Invoke-CommandLine ".venv\Scripts\pipenv clean"
230
267
  }
231
268
 
232
269
  ## start of script
@@ -241,30 +278,96 @@ Push-Location $PSScriptRoot
241
278
  Write-Output "Running in ${pwd}"
242
279
 
243
280
  try {
244
- if (Test-RunningInCIorTestEnvironment -or $Env:USER_PATH_FIRST) {
245
- Initialize-EnvPath
281
+ if ((-Not $install) -and (-Not $installOptional) -and (-Not $installVSCode) -and (-Not $build) -and (-Not $startVSCode) -and (-Not $command) -and (-Not $selftests)) {
282
+ $selectedOption = Get-User-Menu-Selection
283
+
284
+ switch ($selectedOption) {
285
+ '1' {
286
+ Write-Information -Tags "Info:" -MessageData "Installing mandatory dependencies ..."
287
+ $install = $true
288
+ }
289
+ '2' {
290
+ Write-Information -Tags "Info:" -MessageData "Installing optional dependencies ..."
291
+ $installOptional = $true
292
+ }
293
+ '3' {
294
+ Write-Information -Tags "Info:" -MessageData "Installing Visual Studio Code ..."
295
+ $installVSCode = $true
296
+ }
297
+ '4' {
298
+ Write-Information -Tags "Info:" -MessageData "Building ..."
299
+ $build = $true
300
+ }
301
+ '5' {
302
+ Write-Information -Tags "Info:" -MessageData "Starting VS Code ..."
303
+ $startVSCode = $true
304
+ }
305
+ default {
306
+ Write-Information -Tags "Info:" -MessageData "Nothing selected."
307
+ exit
308
+ }
309
+ }
246
310
  }
247
311
 
248
312
  if ($install) {
313
+ if ($clean) {
314
+ Remove-Path ".venv"
315
+ }
316
+
249
317
  # bootstrap environment
250
318
  Invoke-Bootstrap
319
+
320
+ Write-Host -ForegroundColor Black -BackgroundColor Blue "For installation changes to take effect, please close and re-open your current terminal."
321
+ }
322
+
323
+ # Load bootstrap's utility functions
324
+ . .\.bootstrap\utils.ps1
325
+
326
+ Invoke-CommandLine ".venv\Scripts\pypeline run --step GenerateEnvSetupScript"
327
+
328
+ # Load environment setup script
329
+ . .\build\env_setup.ps1
330
+
331
+ if ($installOptional) {
332
+ Import-ScoopFile "scoopfile-optional.json"
333
+ }
334
+
335
+ if ($installVSCode) {
336
+ Invoke-CommandLine "scoop bucket add extras" -StopAtError $false
337
+ Invoke-CommandLine "scoop install vscode"
338
+ Invoke-CommandLine "scoop update vscode" -StopAtError $false
339
+ }
340
+
341
+ if ($startVSCode) {
342
+ Write-Output "Starting Visual Studio Code..."
343
+ Invoke-CommandLine "code ." -StopAtError $false
251
344
  }
252
345
 
253
346
  if ($build) {
254
- # Call build system
255
- Invoke-Build `
347
+ # Call build system to build variant(s)
348
+ Invoke-Build-System `
349
+ -clean $clean `
350
+ -build $build `
256
351
  -target $target `
257
352
  -buildKit $buildKit `
353
+ -buildType $buildType `
258
354
  -variants $variants `
259
- -clean $clean `
260
355
  -reconfigure $reconfigure `
261
- -ninjaArgs $ninjaArgs `
262
- -filter $filter
356
+ -configureOnly $configureOnly `
357
+ -ninjaArgs $ninjaArgs
358
+ }
359
+
360
+ if ($selftests) {
361
+ Invoke-Self-Tests -clean $clean -filter $filter -marker $marker
362
+ }
363
+
364
+ if ($command -ne '') {
365
+ Invoke-Expression "$command"
263
366
  }
264
367
  }
265
368
  finally {
266
369
  Pop-Location
267
- if (-Not (Test-RunningInCIorTestEnvironment)) {
370
+ if (-Not (Test-RunningInCIorTestEnvironment) -and $waitForKey) {
268
371
  Read-Host -Prompt "Press Enter to continue ..."
269
372
  }
270
373
  }
@@ -1,8 +1,9 @@
1
- """ Configuration """
1
+ # -*- coding: utf-8 -*-
2
+ """Configuration"""
2
3
 
3
- import datetime
4
4
  import json
5
5
  import os
6
+ import datetime
6
7
  import re
7
8
 
8
9
  day = datetime.date.today()
@@ -43,12 +44,12 @@ html_title = f"{project} {release}"
43
44
 
44
45
  html_theme = "sphinx_rtd_theme"
45
46
 
46
- # Hide hyper link which leeds to the source of page displayed
47
+ # Show hyper link which leeds to the source of page displayed
47
48
  html_show_sourcelink = True
48
49
 
49
50
  html_theme_options = {
50
51
  "canonical_url": "",
51
- "analytics_id": "", # Provided by Google in your dashboard
52
+ "analytics_id": "", # Provided by Google in your dashboard
52
53
  "display_version": True,
53
54
  "prev_next_buttons_location": "bottom",
54
55
  "style_external_links": True,
@@ -70,13 +71,10 @@ extensions = []
70
71
  extensions.append("sphinx_rtd_size")
71
72
  sphinx_rtd_size_width = "90%"
72
73
 
73
- # mermaid config - @see https://pypi.org/project/sphinxcontrib-mermaid/ #####
74
74
  extensions.append("sphinxcontrib.mermaid")
75
75
 
76
- # sphinx_needs ###############################################################
77
76
  extensions.append("sphinx_needs")
78
77
 
79
- # test_reports ###############################################################
80
78
  extensions.append("sphinxcontrib.test_reports")
81
79
  tr_report_template = "doc/test_report_template.txt"
82
80
 
@@ -143,14 +141,14 @@ needs_types = [
143
141
  ),
144
142
  ]
145
143
 
146
-
147
144
  # Define own options
148
- needs_extra_options = ["integrity", "assignee", "version"]
149
-
145
+ needs_extra_options = ["integrity"]
150
146
 
151
147
  # Define own link types
152
148
  needs_extra_links = [
153
149
  # SWE.3 BP.5: link from Implementation (Software unit) to Specification (Software detailed design)
150
+ # AND
151
+ # SWE.2 BP.7: link from Requirements (Software Requirement) to Architecture (Software Architecture)
154
152
  {"option": "implements", "incoming": "is implemented by", "outgoing": "implements"},
155
153
  # SWE.4 BP.5: link from Test Case (Unit test specification) to Specification (Software detailed design)
156
154
  {"option": "tests", "incoming": "is tested by", "outgoing": "tests"},
@@ -169,19 +167,20 @@ html_context = {
169
167
  "config": {},
170
168
  }
171
169
 
172
- # Check if the SPHINX_BUILD_CONFIGURATION_FILE environment variable exists
173
- # and if so, load the JSON file and set the 'html_context' variable
170
+ # pass build configuration to jinja
174
171
  if "SPHINX_BUILD_CONFIGURATION_FILE" in os.environ:
175
- with open(os.environ["SPHINX_BUILD_CONFIGURATION_FILE"]) as file:
172
+ with open(os.environ["SPHINX_BUILD_CONFIGURATION_FILE"], "r") as file:
176
173
  html_context["build_config"] = json.load(file)
177
- include_patterns.extend(html_context["build_config"].get("include_patterns", []))
174
+ include_patterns.extend(
175
+ html_context["build_config"].get("include_patterns", [])
176
+ )
178
177
 
179
- # Check if the SPHINX_BUILD_CONFIGURATION_FILE environment variable exists
180
- # and if so, load the JSON file and set the 'html_context' variable
178
+ # pass feature configuration to jinja
181
179
  if "AUTOCONF_JSON_FILE" in os.environ:
182
- with open(os.environ["AUTOCONF_JSON_FILE"]) as file:
180
+ with open(os.environ["AUTOCONF_JSON_FILE"], "r") as file:
183
181
  html_context["config"] = json.load(file)["features"]
184
182
 
183
+ # we almost forgot the variant :o)
185
184
  if "VARIANT" in os.environ:
186
185
  html_context["build_config"]["variant"] = os.environ["VARIANT"]
187
186
 
@@ -0,0 +1,9 @@
1
+ pipeline:
2
+ - step: CreateVEnv
3
+ module: pypeline.steps.create_venv
4
+ config:
5
+ bootstrap_script: .bootstrap/bootstrap.py
6
+ - step: ScoopInstall
7
+ module: pypeline.steps.scoop_install
8
+ - step: GenerateEnvSetupScript
9
+ module: pypeline.steps.env_setup_script
@@ -0,0 +1,18 @@
1
+ [project]
2
+ name = "spled"
3
+ version = "0.0.1"
4
+ description = "SPL demo project"
5
+ authors = [
6
+ {name = "Avengineers"},
7
+ ]
8
+ requires-python = "<3.12,>=3.10"
9
+
10
+ dependencies = [
11
+ "spl-core>=7,<8",
12
+ "pypeline-runner>=1,<2",
13
+ "pytest>=8,<9",
14
+ "pip_system_certs>=4.0,<5",
15
+ ]
16
+
17
+ [tool.poetry]
18
+ package-mode = false
@@ -1,10 +1,15 @@
1
1
  [pytest]
2
2
  pythonpath =
3
- test
3
+ "test"
4
4
  testpaths =
5
- test
5
+ "test"
6
6
  junit_logging = all
7
7
  addopts =
8
- -vv
9
8
  --capture=tee-sys
10
- --junitxml=build/test-report.xml
9
+ --verbose
10
+ markers =
11
+ just_a_try: mark a test as a try
12
+ unittests: tests of individual units of code
13
+ reports: tests of the report generation
14
+ build: tests of the target builds
15
+ static_analysis: tests of static code analysis
@@ -1,14 +1,23 @@
1
1
  {
2
- "buckets": [
3
- {
4
- "Name": "versions",
5
- "Source": "https://github.com/ScoopInstaller/Versions"
6
- }
7
- ],
8
- "apps": [
9
- {
10
- "Source": "versions",
11
- "Name": "mingw-winlibs-llvm-ucrt"
12
- }
13
- ]
2
+ "buckets": [
3
+ {
4
+ "Name": "spl",
5
+ "Source": "https://github.com/avengineers/spl-bucket"
6
+ },
7
+ {
8
+ "Name": "main",
9
+ "Source": "https://github.com/ScoopInstaller/Main"
10
+ }
11
+ ],
12
+ "apps": [
13
+ {
14
+ "Source": "main",
15
+ "Name": "graphviz"
16
+ },
17
+ {
18
+ "Source": "spl",
19
+ "Name": "mingw-winlibs-llvm-ucrt",
20
+ "Version": "14.2.0-19.1.1-12.0.0-r2"
21
+ }
22
+ ]
14
23
  }
@@ -1,8 +1,3 @@
1
- # TODO: caching required due to cmake tools extension issue: https://github.com/microsoft/vscode-cmake-tools/issues/1188
2
- # TODO: get debugging running (lldb-mi not found in any current package, switching back to gcc)
3
1
  set(CMAKE_C_COMPILER clang CACHE STRING "C Compiler")
4
- # TODO: clarify why llvm-cov produces invalid gcov files (contain blank lines), related GCOVR issue: https://github.com/gcovr/gcovr/issues/331
5
- set(GCOVR_ADDITIONAL_OPTIONS --gcov-executable \"llvm-cov gcov\" --gcov-ignore-parse-errors --html-title \"Code Coverage Report \(tool suite: LLVM Clang\)\")
6
-
7
2
  set(CMAKE_CXX_COMPILER clang++ CACHE STRING "CXX Compiler")
8
3
  set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} CACHE STRING "ASM Compiler")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: spl-core
3
- Version: 7.2.6
3
+ Version: 7.3.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=cu_bGjWGueXcuQtuac4L0Cd2TITUBMzYwTFAm67Tk0I,22
1
+ spl_core/__init__.py,sha256=sdpc-9h8PmmRVaqNA9R2vvMOVXFYIKW9zf9YS8np6ig,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=lDIC7HtsGwyd84nlctFyJVJ62B6gxUCx9cLRR--D7wk,33339
6
+ spl_core/common.cmake,sha256=_rm2T7SIUSOncjR4VDUmRJwBhz2wxnPVruUGr3hnjhI,34545
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
@@ -21,7 +21,7 @@ spl_core/kickstart/templates/application/src/greeter/doc/index.rst,sha256=60b9ga
21
21
  spl_core/kickstart/templates/application/src/greeter/src/greeter.c,sha256=ikOfwUoSZekDHjVb9nnh_99cOQBmB8nNxgshl12cGc0,431
22
22
  spl_core/kickstart/templates/application/src/greeter/src/greeter.h,sha256=CFvhZ41kcD9XC3T6sJtWntkRYxR6HI8xY5xGpvAy9Jk,99
23
23
  spl_core/kickstart/templates/application/src/greeter/test/test_greeter.cc,sha256=Vg6u4Cn1Q6ntsdc3JlK1VTiPT3tDejvHD-280QKuAhc,482
24
- spl_core/kickstart/templates/application/src/main/CMakeLists.txt,sha256=9gu3ydUv1cT3WjXw944lAvVK0MzJaCD1zKqvRZmTt_o,68
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
27
  spl_core/kickstart/templates/application/test/EnglishVariant/test__EnglishVariant.py,sha256=P66U-6oCKTwLQ_tFFVPEyRbTvfQjKoREnqqWXou4OOc,437
@@ -32,17 +32,17 @@ spl_core/kickstart/templates/application/variants/GermanVariant/config.cmake,sha
32
32
  spl_core/kickstart/templates/application/variants/GermanVariant/config.txt,sha256=6gfkKIlqKPOK2pI4TIGN58FG7VCRfgcFLzR9HPog4dg,188
33
33
  spl_core/kickstart/templates/application/variants/GermanVariant/parts.cmake,sha256=CnNxm2Cf2X_0vkS52xj5WNTLffVQP9CflkEaDEtlxXs,61
34
34
  spl_core/kickstart/templates/project/.gitignore,sha256=Ibd6YbqO2UPfauJzrdgY7z4ar0aPmEwYQ-ncDKzZrlg,638
35
- spl_core/kickstart/templates/project/.vscode/cmake-kits.json,sha256=oLn_-InkXE3Th6OL5hlSxBZsx2dBaKShrHZVcyAcfFU,269
36
- spl_core/kickstart/templates/project/.vscode/extensions.json,sha256=49RYati_P9i3zdiKuaTIkNQnA1uH1eIUd6DusIa9TT0,624
35
+ spl_core/kickstart/templates/project/.vscode/cmake-kits.json,sha256=4Fh_eWtbxvr3XH4sK1wRrtTlDF6LF7_G-Ip939NWw5s,263
36
+ spl_core/kickstart/templates/project/.vscode/extensions.json,sha256=zkdXRx-HcI33dm9dAJEE-8bFNpTVeojHiaQexIvvr0M,682
37
37
  spl_core/kickstart/templates/project/.vscode/launch.json,sha256=30-tsNapUNNIvVDohdIf4SEnHrHh8qbWuTjLJjsMcEY,1103
38
- spl_core/kickstart/templates/project/.vscode/settings.json,sha256=84PASkysrQEcl9NZNJrYvWH-KqOd9HnAbTj0Hpa1SQM,1319
39
- spl_core/kickstart/templates/project/.vscode/tasks.json,sha256=fPaiY-vpI-3wMK0dpc3LZma4-YYyaI_xc6uQrEUf6sw,3434
40
- spl_core/kickstart/templates/project/CMakeLists.txt,sha256=oBGnsNqfmMuXy69SdoGEfYzw5iLkqEhsK47UgJ0ycxA,1507
38
+ spl_core/kickstart/templates/project/.vscode/settings.json,sha256=nQYEXcUz8NUhTKShudXgLX7lYjPRD8ZQdXtb7T0HsEE,3302
39
+ spl_core/kickstart/templates/project/.vscode/tasks.json,sha256=KkzTsF5REi2dmetv4nOzdSnRcaP-r8D_RMCE-M-IN7k,5031
40
+ spl_core/kickstart/templates/project/CMakeLists.txt,sha256=le-VTB-TWz6dEisvypxom0O-5CV8Zq8C5MLFTXOT-mk,947
41
41
  spl_core/kickstart/templates/project/README.md,sha256=k-P_SycFIRnRmjjUoAiDrRF8Gg1Te-qErAX-pgtYuqg,310
42
- spl_core/kickstart/templates/project/bootstrap.json,sha256=JPci9W9ezE6A_hK5hjCa5ymwM80wKM1IxM0jDan49sM,87
43
- spl_core/kickstart/templates/project/build.bat,sha256=HlOqePYRoHTrp7v6oQ551dXI-qCymGCG0gQ9Au6bpos,73
44
- spl_core/kickstart/templates/project/build.ps1,sha256=TVYSKt7hIEE99kxVQAavbQZZiRu80dTEec9Jk_JgkXI,10906
45
- spl_core/kickstart/templates/project/conf.py,sha256=wGhSzSyUx5otw3kPeOzIEKFIxA-Z70K-foUuQWYBY64,6775
42
+ spl_core/kickstart/templates/project/bootstrap.json,sha256=FqVp5PmTRZvO0FR_jeA9g2TvIMPPQ5-ozlZNs5YZTmE,119
43
+ spl_core/kickstart/templates/project/build.bat,sha256=RaFszwOtD27hhmInBV0K2vNRwgcmUBx0ihCKa0LIY6I,85
44
+ spl_core/kickstart/templates/project/build.ps1,sha256=ICL0JLGWbVxNaQzv38OQ0ai4JDGjB0m-N_LOMyY5ZXE,14350
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
48
48
  spl_core/kickstart/templates/project/doc/components/index.rst,sha256=1n4qdJD38Q-sRaiqW3rF2rQK9ag3OchslA8uTzmarkM,590
@@ -52,17 +52,18 @@ spl_core/kickstart/templates/project/doc/software_architecture/index.rst,sha256=
52
52
  spl_core/kickstart/templates/project/doc/software_requirements/index.rst,sha256=FmnMsx1Ih2qulGuLcch7vBW5Gxkv42P3BeAeih7c3Ro,95
53
53
  spl_core/kickstart/templates/project/doc/test_report_template.txt,sha256=Pj9npGI1sVMDBrDQJ1jS_T_ysLgwvBzNO8T5FMjYsIE,1213
54
54
  spl_core/kickstart/templates/project/index.rst,sha256=7HHmhxme_djB5iostqFc_7U8liKmTCNQZraC9nopEfg,1044
55
- spl_core/kickstart/templates/project/pipfile,sha256=cvi_3jKcbj6cRaJLPbZpJh4FXMMpshZ6DJWsXhtqHLw,136
56
- spl_core/kickstart/templates/project/pytest.ini,sha256=TB-kMa5upQAA6NgiPrTxVWCFaDTIoZN04ZnQL6byzjQ,159
57
- spl_core/kickstart/templates/project/scoopfile.json,sha256=DcfZ8jYf9hmPHM-AWwnPKQJCzRG3fCuYtMeoY01nkag,219
58
- spl_core/kickstart/templates/project/tools/toolchains/clang/toolchain.cmake,sha256=fDD-eb6DeqmAYkCbILL2V5PLnCPRdTu1Tpg0WfDC_dE,713
55
+ spl_core/kickstart/templates/project/pypeline.yaml,sha256=9Kz3D0-I5mVJ6UdG92BuQSFC7JKomelwF8FeNqqyOm0,271
56
+ spl_core/kickstart/templates/project/pyproject.toml,sha256=FicwBOwVlGi_0pwTC0_LTaKMgWoaXfMayjYTp4Qb48I,310
57
+ spl_core/kickstart/templates/project/pytest.ini,sha256=Zh3jeEjZV_BqQoX7LB0cv6EtqDDogRCHsQdKHRQnq18,366
58
+ spl_core/kickstart/templates/project/scoopfile.json,sha256=7qDThZwB1jBtiQl1uOZQ21-zKITBpQzt1S-uUfW1JFE,500
59
+ spl_core/kickstart/templates/project/tools/toolchains/clang/toolchain.cmake,sha256=824enlZDMkJOZf77iHtbFIpUMi-AelLnTYLQWok5XtI,189
59
60
  spl_core/kickstart/templates/project/tools/toolchains/gcc/toolchain.cmake,sha256=AmLzPyhTgfc_Dsre4AlsvSOkVGW6VswWvrEnUL8JLhA,183
60
61
  spl_core/main.py,sha256=_hL4j155WZMXog_755bgAH1PeUwvTdJZvVdVw9EWhvo,1225
61
62
  spl_core/spl.cmake,sha256=W8h-Zj-N302qxMrRG8MhoEkJ0io92bWGp4Y5r8LBQnc,4535
62
63
  spl_core/test_utils/base_variant_test_runner.py,sha256=E5EtAX5qTLQbofIZ9eZoCx2SNd1CTm1HtEKqEn014fA,3493
63
64
  spl_core/test_utils/spl_build.py,sha256=OO7rIZpBb7EP87D39NeTK4XH17x3xNfwRI5YHPBvGgY,6041
64
- spl_core-7.2.6.dist-info/LICENSE,sha256=UjjA0o8f5tT3wVm7qodTLAhPWLl6kgVyn9FPAd1VeYY,1099
65
- spl_core-7.2.6.dist-info/METADATA,sha256=DemDUiemFzMZpCkqczY9GI1qJVEI5UZPvI195vj_Dw4,5156
66
- spl_core-7.2.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
67
- spl_core-7.2.6.dist-info/entry_points.txt,sha256=18_sdVY93N1GVBiAHxQ_F9ZM-bBvOmVMOMn7PNe2EqU,45
68
- spl_core-7.2.6.dist-info/RECORD,,
65
+ spl_core-7.3.0.dist-info/LICENSE,sha256=UjjA0o8f5tT3wVm7qodTLAhPWLl6kgVyn9FPAd1VeYY,1099
66
+ spl_core-7.3.0.dist-info/METADATA,sha256=0ahm5GfzUw1e8ktpDIbiWxbaLv35tGh6Nx9vVUAUHQ8,5156
67
+ spl_core-7.3.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
68
+ spl_core-7.3.0.dist-info/entry_points.txt,sha256=18_sdVY93N1GVBiAHxQ_F9ZM-bBvOmVMOMn7PNe2EqU,45
69
+ spl_core-7.3.0.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- [packages]
2
- pytest = ">=8.3"
3
- pipenv = ">=2024.0.3"
4
- pip-system-certs = ">=4.0"
5
- spl-core = "*"
6
-
7
- [requires]
8
- python_version = "3.11"