← Back to issue list

Properly support `build-snaps` with differing versions for independent parts.

View original Github issue

Metadata

Project
rockcraft
Number
#656
Type
issue
State
open
Author
aznashwan
Labels
Created
Updated
Closed

Current evaluation

rockcraft should detect when different parts need different versions of the same build-snap and either snap refresh between parts or warn the user; no maintainer response in ~2 years

Suggested action: needs triage

Reason: The issue has zero comments, no labels, and no maintainer interaction in ~763 days. The underlying craft-parts executor still installs all build-snaps once in prologue with no per-part version conflict detection or refresh logic, so the problem persists. However, the fix would require changes to craft-parts' executor to track snap versions per part and conditionally refresh, making it non-trivial.

Impact: 40 Quick Win: 18.0 Staleness: 85 Complexity: 55 Confidence: 80 Support Request: 10

Issue body

### What needs to get done Make `rockcraft` automatically detect when parts need different versions of the same `build-snaps` and either `snap refresh` said snaps between the parts, or at the very least give the user a clear warning it's not going to work as expected. ### Why it needs to get done Having two separate parts needing differing versions of the same `build-snaps` during the build stage is very reasonable. The `canonical/trivy-adapter` ROCK for example builds both `trivy` and a separate `trivy-adapter-photon` binary [with different Go versions](https://github.com/canonical/harbor-rocks/blob/main/v2.6.3/trivy-adapter-photon/rockcraft.yaml#L55-L77). You can reproduce the issue using this sample file: ```yaml # cat rockcraft.yaml name: go-snap-parts-version-test summary: Test image to showcase snap parts issue. description: Test image to showcase snap parts issue. version: v1.0.0 license: Apache-2.0 base: ubuntu@22.04 build-base: ubuntu@22.04 platforms: amd64: # arm64: services: sleep: command: sleep inf override: replace startup: enabled parts: go118: plugin: go build-snaps: - go/1.18/stable source: https://github.com/canonical/rockcraft source-type: git source-tag: 1.5.3 source-depth: 1 override-build: | go version go121: plugin: go build-snaps: - go/1.21/stable source: https://github.com/canonical/rockcraft source-type: git source-tag: 1.5.3 source-depth: 1 override-build: | go version ``` Running `rockcraft pack` yields the following: ```bash $ rockcraft pack --verbose --debug Starting rockcraft, version 1.5.3 [...] Building go118 :: + go version :: go version go1.18.10 linux/amd64 Building go121 :: + go version :: go version go1.18.10 linux/amd64 [...] ``` The [only current solution available is manually `snap refresh`-ing the packages](https://github.com/aznashwan/harbor-rocks/commit/acfbb171272147f925d338852114d78a8b32eaac) in `override-build`, which is not ideal...

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.8-27b
Impact: 40
Quick Win: 18.0
Staleness: 85
Complexity: 55
Confidence: 80
Support Request: 10
needs triage rockcraft should detect when different parts need different versions of the same build-snap and either snap refresh between parts or warn the user; no maintainer response in ~2 years
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 65
Confidence: 85
Support Request: 10
close stale Feature request to handle differing build-snaps versions across independent parts in rockcraft. Currently, later parts inherit earlier snap versions without warning. Inactive for ~2 years with no maintainer response.
qwen3.6-35b-a3b-mtp-q6
Staleness: 95
Complexity: 60
Confidence: 85
Support Request: 10
close stale Feature request to automatically handle differing build-snap versions across parts. Unlabelled, inactive for ~2 years, zero maintainer interaction, with a documented manual workaround.
qwen3.6-35b-a3b-mtp-q6
Staleness: 95
Complexity: 75
Confidence: 85
Support Request: 10
needs triage Feature request to handle differing build-snaps versions across independent parts in rockcraft. Currently, later parts inherit earlier snap versions. Unaddressed for over two years with no maintainer response.
qwen3.6-35b-a3b-mtp-q6
Staleness: 92
Complexity: 60
Confidence: 65
Support Request: 10
needs triage rockcraft applies the first installed build-snap version to all parts, ignoring version conflicts. Needs auto-detection, snap refresh between parts, or warnings. Open 686 days, zero comments, no labels. Requires triage.

Update history

No update history recorded yet.

Related issues

No related issues found above the similarity threshold.