← 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
2024-07-29 12:00:56+00:00
Updated
2024-07-29 12:00:56+00:00
Closed

Current evaluation

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.

Suggested action: needs triage

Reason: The issue describes a valid architectural limitation with a clear reproduction case but has received zero maintainer interaction or labels in over 18 months. It requires careful consideration of build system design and snap version management, warranting formal triage to assess current relevance and implementation strategy before any action is taken.

Staleness: 92 Complexity: 60 Confidence: 65 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
2026-06-16 10:45:17.260230+00:00 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.
2026-06-16 10:42:05.569447+00:00 pending