← Back to issue list

Unable to set components version using craftctl set version

View original Github issue

Metadata

Project
snapcraft
Number
#5102
Type
issue
State
open
Author
stephensp
Labels
Status: Triaged Type: Enhancement
Created
Updated
Closed

Current evaluation

Request to allow dynamically setting component versions via craftctl during override-build (currently errors with 'variable version can be set only once'). Triaged as enhancement; spec'd and prototyped in 2025 but unscheduled. Feature now implemented in snapcraft 8.13 via craftctl set components.<name>.version.

Suggested action: close stale

Reason: The requested capability has been implemented: snapcraft 8.13 release notes state 'Parts can now set a component versions dynamically... the part can call craftctl to set the version', and spread tests (tests/spread/_common/components/snapcraft.yaml) exercise exactly the proposed syntax `craftctl set components.share.version="2.0-updated"` (lengau's suggestion from the issue). The issue is 692 days old with last activity 494 days ago and was explicitly noted as unscheduled, so the original problem is no longer reproducible on current versions.

Impact: 55 Quick Win: 22.0 Staleness: 55 Complexity: 60 Confidence: 80 Support Request: 10

Issue body

### What needs to get done component versions need to be settable during override-build , just like a snap. Currently it fails with the following error RuntimeError: 'override-build' in part 'nvidia-550-ko-comp' executed an invalid control API call: variable 'version' can be set only once. ### Why it needs to get done components need to be able to dynamically set their version based on revision numbers and other system settings. This is not possible if the version has to be hardcoded into the version field.

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.8-27b
Impact: 55
Quick Win: 22.0
Staleness: 55
Complexity: 60
Confidence: 80
Support Request: 10
close stale Request to allow dynamically setting component versions via craftctl during override-build (currently errors with 'variable version can be set only once'). Triaged as enhancement; spec'd and prototyped in 2025 but unscheduled. Feature now implemented in snapcraft 8.13 via craftctl set components.<name>.version.
qwen/qwen3.6-35b-a3b
Staleness: 75
Complexity: 75
Confidence: 85
Support Request: 5
keep open Enhancement to allow dynamic component version setting via craftctl during override-build. Spec'd and prototyped but unscheduled, awaiting next cycle planning.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 80
Confidence: 85
Support Request: 10
keep open Enhancement to allow dynamic component version setting via craftctl. Triaged, discussed, and prototyped by maintainers, but implementation is unscheduled and pending future cycle planning.
qwen3.6-35b-a3b-mtp-q6
Staleness: 60
Complexity: 65
Confidence: 85
Support Request: 0
keep open Allow dynamic component version setting via craftctl during build. Specified and prototyped across snapcraft, craft-application, and craft-parts. Implementation is unscheduled and awaiting assignment for the next development cycle.

Update history

No update history recorded yet.

Related work

  • Related To: canonical/snapcraft#5240 (confidence 90%)

    Explicitly cross-referenced in the issue as 'Related: #5240' (adopt-info analogue for components), which was closed as accepted/scheduled and is the prerequisite for this feature.

  • Likely Fixed By: canonical/snapcraft#5757 (confidence 85%)

    Commit ffb793a0e 'docs: add docs for setting component versions' documents the dynamic component version setting feature shipped in 8.13.

Related issues

No related issues found above the similarity threshold.