Open-CMSIS-Pack / devtools

Open-CMSIS-Pack development tools - C++
Apache License 2.0
70 stars 51 forks source link

UX Issues: How to distribute toolchain agnostic examples in packs #1450

Open ReinhardKeil opened 3 months ago

ReinhardKeil commented 3 months ago

Problem We need an aligned process to distribute examples that work across multiple toolchains.

Current Problems:

  1. Tool Agnostic Project It is agreed not to use target-type or build-type for toolchain selection. But replacement of cdefault.yml is not accepted. Recommendation: use --toolchain to select toolchains. Add a feature in IDEs that adds this command-line option.

  2. *.cbuild-pack.yml records a pack that is officially not released: For reproduceable builds, it is recommend to store the file *.cbuild-pack.yml along with the project. A pack that is under development is recorded with release quality added, making it impossible to store examples that use components in this pack (there is not easy process for that). Recommendation: by default do not store pack quality information in *.cbuild-pack.yml; potentially add an option to enable it. Revised Recommendation: #1484

  3. Examples should not use long descriptive text as it makes it hard to select it in tools. See #1324 Recommendation: offer a search capability in tools that select examples.

  4. For starting a blank example, some devices need a template project. Currently there is no way to store such a project template in a DFP or BSP. Recommendation: add a way to store project templates in PDSC files. (https://github.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec/issues/306)

  5. Some DFPs (or tools) use assembly startup code; making it toolchain dependent. Recommendation: use C startup code. See https://arm-software.github.io/CMSIS_6/latest/Core/cmsis_core_files.html

FIXED 6. Examples that just use the CMSIS pack and upgrade to CMSIS 6.0.0 may face a breaking change - often because CoreDebug is no longer defined. Recommendation: add CoreDebug to CMSIS 6.1.0 to minimize disruption -> ARM::CMSIS@6.1.0 released readding CoreDebug symbols by default.

  1. Some examples define device at *.cproject.yml level. This feature will be deprecated in CMSIS-Toolbox 3.0 Recommendation: output a warning in the CMSIS-Toolbox to notify users. (see #1538)

  2. Some tools require changes in linker templates, see CubeMX - Linker Script. Recommendation: please make proposals

iomint commented 2 months ago

Reinhard, The point 2 is an issue on ST side, we need to have reproduceable build for version in development meaning using packs with the "full identifiers" defined by the semver spec (i.e with the pre-release field : alpha, rc, ...). I do not understand the rational to have a different behavior between development state and release state, we need to be able to have reproduceable project build capability enabling the possibility to exchange projects (whatever you are still in a development phase or not)

ReinhardKeil commented 2 months ago

@iomint For point 2 there is already a better proposal under https://github.com/Open-CMSIS-Pack/devtools/issues/1339#issuecomment-2008936265. I would recommend that we review and plan the implementation of the cbuild release feature.

See now #1484

jkrech commented 1 month ago

regarding 8. above:

iomint commented 1 month ago

@iomint For point 2 there is already a better proposal under #1339 (comment). I would recommend that we review and plan the implementation of the cbuild release feature.

See now #1484

Reinhard, I do not think #1484 addresses the concern of a having a different behavior between development state and release state but I can have overlook something.