Skip to content

After updating the Arm CMSIS Solution extension to version 1.64.x, the Software Components (RTE) view became partially broken. #456

@DrGebb

Description

@DrGebb

OS and Version: Windows 10
VS Code Version: 1.107.1
Extension Version: Arm CMSIS Solution v1.64.0 / v1.64.1
Target Device: STM32F401RCTx
Other extensions: ARM Keil Studio Pack (Keil v6 stack).

Description:
After updating the Arm CMSIS Solution extension to version 1.64.x, the Software Components (RTE) view became partially broken. There are two main issues:
Identifier Mismatch: The extension adds components to the *.cproject.yml using shorthand identifiers (e.g., CMSIS:RTOS2:Keil RTX5&Source), but the bundled csolution (v2.12.0) fails to resolve them, throwing a no component was found error. It appears the backend now strictly requires the vendor prefix (e.g., ARM::CMSIS...), which the UI fails to provide.
UI/YAML Desync: When checking a component in the Software Components view, the entry is correctly added to the *.cproject.yml file. However, unchecking the component does not remove the entry from the YAML file. This leads to "zombie" dependencies that must be manually deleted from the code.

To Reproduce
Steps to reproduce the behavior:
Create or open a project for STM32F401RCTx using Arm CMSIS Solution v1.64.1.
Open the Software Components (RTE) view.
Select any component (e.g., CMSIS:RTOS2:Keil RTX5).
Observe the output log: 🟥 RPC: ConvertSolution failed with error csolution error: no component was found with identifier 'CMSIS:RTOS2:Keil RTX5&Source'.
Try to uncheck the same component in the RTE view.
Check the *.cproject.yml file -> The component entry remains in the file despite being unchecked in the UI.

Expected behavior
The extension should generate component identifiers that are compatible with the bundled csolution version (including vendor prefixes if necessary).
The UI should maintain two-way synchronization with the YAML file: unchecking a box in RTE should immediately remove the corresponding line from the *.cproject.yml.
ConvertSolution should complete successfully for standard CMSIS components that worked in v1.62.1.
Code sample and logs
code
Text
⚙️ Converting solution...
☑️ RPC: ListMissingPacks { solution: ...\f401USB.csolution.yml, activeTarget: STM32F401RCTx }
🟥 RPC: ConvertSolution { solution: ...\f401USB.csolution.yml, activeTarget: STM32F401RCTx, updateRte: true }
☑️ RPC: GetLogMessages
csolution error: no component was found with identifier 'CMSIS:RTOS2:Keil RTX5&Source'
csolution error: unresolved components:
CMSIS:RTOS2:Keil RTX5&Source
csolution warning: f401USB.cproject.yml - dependency validation failed: MISSING CMSIS:RTOS2:Keil RTX5
🟥 Convert solution failed
Additional context
The project worked perfectly in version 1.62.1. The issue started immediately after the auto-update to v1.64.0/1.64.1. Downgrading the extension back to v1.62.1 restores correct RTE behavior and successful solution conversion.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions