Properly support `build-snaps` with differing versions for independent parts.
Metadata
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 | — | — | — |