No way to express different build dependencies on different architectures without repetition of the list of dependencies
Metadata
Current evaluation
Feature request: snapcraft YAML grammar lacks support for architecture-specific build dependencies without repetition. No maintainer response after 671 days.
Suggested action: needs triage
Reason: This issue has no labels, no assignee, and zero maintainer comments after 671 days. It describes a grammar limitation in snapcraft's YAML parsing for architecture-specific build dependencies, which is a feature request rather than a support question. Per guidelines, issues without maintainer assessment should be triaged first before any closure decision.
Impact:
50
Quick Win:
20.0
Staleness:
85
Complexity:
60
Confidence:
70
Support Request:
20
Issue body
The snapcraft advanced grammar [0] does unfortunately not allow us to express different build dependencies on different architectures without repetition of the list of dependencies.
Making use of composition at the YAML level is also not possible because merging sequences is just not supported [1].
While our current use case fortunately [2] do not contain a lot of dependencies this may quickly become an issue for us.
Previously I'm sure it was possible to list dependencies relevant for all architectures and at the same time have a few blocks for architecture specific dependencies, but this appears to no longer work.
The interesting thing is that if I use `to` or `on` with a single selector, combining lists appear to work, but if I add a list of selectors it appear to not work, e.g:
build-snaps:
- go/1.22/stable
- on amd64:
- golangci-lint
vs:
build-snaps:
- go/1.22/stable
- on amd64,arm64,ppc64el,s390x:
- golangci-lint
The latter matches the documented behavior [0], but only the former appear to (insufficiently) work.
What does work is [2], but it's not great.
0: https://snapcraft.io/docs/snapcraft-advanced-grammar
1: https://github.com/yaml/yaml/issues/35#issuecomment-496184265
2: https://github.com/canonical/microovn/commit/837a2617770c8b6400d624d1eba34e4cb97472ff
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen3.6-35b-a3b-mtp-q6 |
Impact:
50
Quick Win:
20.0
Staleness:
85
Complexity:
60
Confidence:
70
Support Request:
20
|
needs triage | Feature request: snapcraft YAML grammar lacks support for architecture-specific build dependencies without repetition. No maintainer response after 671 days. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
95
Complexity:
50
Confidence:
85
Support Request:
10
|
needs triage | Snapcraft YAML grammar lacks support for architecture-specific build dependencies without repetition. Unlabelled, no maintainer response, inactive for ~1.7 years. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
95
Complexity:
60
Confidence:
85
Support Request:
10
|
needs triage | Snapcraft YAML grammar lacks support for architecture-specific build dependencies without repetition. Currently unlabelled, zero maintainer comments, and inactive for over 1.7 years. | |
| qwen3.6-35b-a3b-mtp-q6 |
Staleness:
95
Complexity:
65
Confidence:
85
Support Request:
20
|
needs triage | Unlabelled feature request reporting Snapcraft's YAML grammar lacks support for architecture-specific build dependencies without repetition. No maintainer response in 615 days. | |
| qwen3.6-35b-a3b-mtp-q6 |
Staleness:
95
Complexity:
65
Confidence:
85
Support Request:
15
|
close stale | Snapcraft YAML grammar lacks native support for merging architecture-specific build dependencies. The feature request has received zero maintainer engagement and remains unaddressed after 1.5 years. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2020138 Exclude architectures | snapcraft (launchpad) | open | Feature request to add 'build-not-on' or architecture exclusion support in snapcraft YAML. Currently only whitelist (build-on/build-for) is available. Issue is 3+ years old with no maintainer response or activity. | |
| #1885150 Cannot use --build-on, architecture list is already set in snapcraft.yaml. | snapcraft (launchpad) | closed | Closed without fix due to inactivity. The --build-on CLI flag remains ignored when architectures is defined in snapcraft.yaml, requiring manual YAML edits for architecture-specific builds. | |
| #1677974 snap build dependencies | snapcraft (launchpad) | closed | Closed without resolution. The request to specify snap packages as build dependencies in snapcraft.yaml appears abandoned or superseded by upstream Snapcraft updates that later added native build dependency support. | |
| #1685 Implement support for architecture in snapcraft.yaml | snapcraft | closed | Implemented architecture support in snapcraft.yaml after initial redesign delays. The feature landed in the core tool, though integration with build.snapcraft.io and a Python 2-compatible parser require follow-up work. |