`primed-stage-packages` in `manifest.yaml` loses architecture information
Metadata
Current evaluation
Fixed in craft-parts PR #1558 via commit 0b6a556a, preserving architecture suffixes such as :i386 in primed-stage-packages.
Resolution: closed resolved
Reason: The architecture loss originated in craft-parts package-origin handling rather than Snapcraft's manifest serialization. craft-parts PR #1558, commit 0b6a556a, preserves foreign-architecture suffixes and resolved the reported behavior.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Check existing issues
- [x] I've verified that this bug isn't described by any existing issues.
### Bug description
Look at `/snap/mesa-2404/current/snap/manifest.yaml`:
```
$ cat /snap/mesa-2404/current/snap/manifest.yaml | yq '.parts[] | .stage-packages' | sort -u | wc -l
140
$ cat /snap/mesa-2404/current/snap/manifest.yaml | yq '.primed-stage-packages' | sort -u | wc -l
64
```
Looking closer, the packages are listed without architecture.
### Steps to reproduce
With the attached YAML:
```
$ SNAPCRAFT_BUILD_INFO=1 snapcraft --verbose
$ unsquashfs base-cleanup_0.1_amd64.snap
$ cat squashfs-root/snap/manifest.yaml | yq '.parts[] | .stage-packages' | sort -u
- gcc-14-base:i386=14.2.0-4ubuntu2~24.04
- libc6:i386=2.39-0ubuntu8.6
- libgcc-s1:i386=14.2.0-4ubuntu2~24.04
- xz-utils=5.6.1+really5.4.5-1ubuntu0.2
$ cat squashfs-root/snap/manifest.yaml | yq '.primed-stage-packages' | sort -u
- gcc-14-base=14.2.0-4ubuntu2~24.04
- libc6=2.39-0ubuntu8.6
- libgcc-s1=14.2.0-4ubuntu2~24.04
- xz-utils=5.6.1+really5.4.5-1ubuntu0.2
```
### Environment
Ubuntu 25.10
Snapcraft 8.13.2
### snapcraft.yaml
```yaml
name: base-cleanup
base: core24
version: '0.1'
summary: Cleanup verifier
description: Cleanup verifier
grade: devel
confinement: devmode
package-repositories:
- type: apt
url: http://archive.ubuntu.com/ubuntu
suites: [noble]
components: [main]
architectures: [i386]
key-id: F6ECB3762474EDA9D21B7022871920D1991BC93C
key-server: keyserver.ubuntu.com
parts:
my-part:
plugin: nil
stage-packages:
- xz-utils
- xz-utils:i386
```
### Log output
```shell
<!-- Provide any relevant logging. This field automatically renders as a log, so you don't need to add special formatting. -->
```
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Fixed in craft-parts PR #1558 via commit 0b6a556a, preserving architecture suffixes such as :i386 in primed-stage-packages. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed in craft-parts PR #1558 via commit 0b6a556a, preserving architecture suffixes such as :i386 in primed-stage-packages manifest entries. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed in craft-parts#1558 via commit 0b6a556a, preserving architecture suffixes such as :i386 in primed-stage-packages manifest entries. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed in craft-parts PR #1558 via commit 0b6a556a, preserving foreign-architecture suffixes such as :i386 in primed-stage-packages manifest entries. | |
| qwen/qwen3.8-27b | — | closed resolved | Fixed in craft-parts PR #1558 (commit 0b6a556a) which preserves architecture suffixes (e.g. :i386) in primed-stage-packages entries written to manifest.yaml. | |
| qwen/qwen3.6-35b-a3b |
Impact:
40
Quick Win:
29
Complexity:
20
Confidence:
90
Actionability:
90
|
close resolved | primed-stage-packages in manifest.yaml drops architecture suffixes (e.g., :i386) for foreign-architecture packages. Root cause identified in craft-parts deb metadata extraction. | |
| qwen/qwen3.8-27b |
Impact:
50
Quick Win:
30
Staleness:
35
Complexity:
40
Confidence:
80
Support Request:
5
|
keep open | primed-stage-packages in manifest.yaml drops foreign-arch qualifiers (e.g. :i386) while stage-packages keeps them. Root cause is in craft-parts origin tracking; a craft-parts PR (#1558) has since fixed it. | |
| qwen/qwen3.8-27b |
Impact:
50
Quick Win:
30
Staleness:
45
Complexity:
40
Confidence:
75
Support Request:
10
|
keep open | primed-stage-packages in manifest.yaml drops foreign-arch qualifiers (e.g. :i386). Root cause identified in craft-parts origin tracking; likely fixed by craft-parts PR #1558 (preserve architecture in primed stage packages). | |
| qwen/qwen3.6-35b-a3b |
Staleness:
55
Complexity:
45
Confidence:
85
Support Request:
10
|
needs triage | primed-stage-packages in manifest.yaml drops architecture suffixes compared to stage-packages. Root cause likely in craft-parts dpkg parsing. Issue lacks labels and maintainer response. | |
| qwen3.6-35b-a3b-mtp-q6 |
Staleness:
70
Complexity:
40
Confidence:
80
Support Request:
0
|
needs triage | primed-stage-packages in manifest.yaml strips architecture suffixes compared to stage-packages. Clear reproduction steps exist, but the issue lacks labels and official maintainer triage. |
Update history
| Date | Change |
|---|---|
| closed |
Related work
-
Likely Fixed By:
craft-parts#1558
(confidence 99%)
Commit 0b6a556a updates package-origin handling to retain architecture-qualified package names.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1558 fix(packages/deb): preserve architecture in primed stage packages | craft-parts | merged | Merged in canonical/craft-parts#1558 (commit 0b6a556a), preserving foreign-architecture suffixes such as :i386 in primed stage package names and adding regression coverage. | |
| #1557 fix(deb): preserve architecture in primed stage packages | craft-parts | closed | PR closed unmerged by its author in favour of canonical/craft-parts#1558, which superseded it; #1558 was merged as commit 0b6a556a "packages: preserve architecture in primed stage packages". | |
| #5552 `primed-stage-packages` isn't in manifest.yaml when using override-prime | snapcraft | open | override-prime leaves primed-stage-packages empty in build manifests on core22+ because craft-parts #1122 does not track scriptlet-primed files; still reproduced on Launchpad. |