← Back to issue list

feat: handle snap components in stage-snaps

View original Github issue

Metadata

Project
craft-parts
Number
#1604
Type
pull request
State
open
Author
bepri
Labels
—
Created
Updated
Closed
—

Current evaluation

Adds snap component support to stage-snaps (unpacking component trees, SNAP_COMPONENTS). Marked draft by mr-cal pending snapd UX decisions; 3 unresolved review threads and 5 CI jobs still failing.

Suggested action: keep open

Reason: mr-cal explicitly parked this work: "Marking as a draft so we don't accidentally merge while we reconsider how to organize components" and later "We should wait to see how that progresses before this PR continues", citing canonical/snapd#17435 ($SNAP_COMPONENTS support) and Jira PF-6858 for remaining UX gaps. This is an intentional hold on external upstream decisions, not abandonment — only 38 days since the last comment — so close_stale does not apply, and the author (bepri) plus two approvals show the work is still live. Merging now is not advisable: 3 review comments remain unresolved and 5 CI jobs fail (test-common on both min-deps and ubuntu-22.04-arm, two s390x/edge suites, and Security scan / OSV-scanner), so actionability is low despite the approved status. The change itself (+627/-60, 13 files) touches the core SnapSource provisioning path in craft_parts/sources/snap_source.py and the executor's _unpack_stage_snaps, so it carries moderate architectural and filesystem-layout review weight.

Evaluated by: mr-cal-bot

Impact: 45 Quick Win: 5 Complexity: 55 Confidence: 86 Actionability: 25

Issue body

- [ ] Have you followed the guidelines for contributing? - [ ] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)? - [ ] Have you successfully run `make lint && make test`? - [ ] Have you added an entry to the changelog (`docs/reference/changelog.rst`)? --- When used with Snapcraft, this parts entry: ```yaml parts: my-part: plugin: nil stage-snaps: - test-snap-with-component+comp1+comp2/beta ``` Produced these contents in the unpacked snap: ``` unsquashfs-root ├── hello-app ├── load-comp1 ├── load-comp2 ├── meta │   ├── gui │   └── snap.yaml ├── meta.test-snap-with-component │   ├── gui │   └── snap.yaml └── snap └── test-snap-with-component └── components └── mnt ├── comp1 │   └── 3 │   ├── hello-comp1 │   └── meta │   └── component.yaml └── comp2 └── 3 ├── hello-comp2 └── meta └── component.yaml ``` SNAPCRAFT-1345

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 45
Quick Win: 5
Complexity: 55
Confidence: 86
Actionability: 25
keep open Adds snap component support to stage-snaps (unpacking component trees, SNAP_COMPONENTS). Marked draft by mr-cal pending snapd UX decisions; 3 unresolved review threads and 5 CI jobs still failing.
stealth/space-bunny-alpha
Impact: 40
Quick Win: 4
Complexity: 65
Confidence: 94
Actionability: 30
keep open Adds component support to stage-snaps, but is now a draft awaiting snapd UX work; three review threads remain unresolved and five CI checks are failing.
qwen3.6-35b-a3b-mtp-q6
Impact: 45
Quick Win: 11
Staleness: 65
Complexity: 75
Confidence: 75
keep open Handles snap components in stage-snaps. Marked as draft with 2 approvals but 3 unresolved comments. Blocked by pending snapd changes per maintainer feedback.
qwen/qwen3.6-35b-a3b
Staleness: 10
Complexity: 65
Confidence: 90
keep open Implements snap component handling in stage-snaps, reorganizing directory structure and introducing $SNAP_COMPONENTS usage. Currently marked as draft and blocked by upstream snapd changes pending UX improvements.
qwen/qwen3.6-35b-a3b
Staleness: 40
Complexity: 60
Confidence: 85
keep open Adds support for snap components in stage-snaps by restructuring unpacked snap directories. Currently drafted and paused pending upstream snapd integration and architectural review on component layout.
qwen/qwen3.6-35b-a3b
Staleness: 45
Complexity: 65
Confidence: 90
keep open Adds support for snap components in stage-snaps, restructuring unpacked snap contents. Currently marked as draft by a maintainer pausing for architectural reconsideration and feedback collection. CI has failing tests and 20 unresolved comments.
qwen3.6-35b-a3b-mtp-q6
Staleness: 45
Complexity: 65
Confidence: 85
keep open Draft PR adding support for snap components in stage-snaps. Maintainer marked it draft to reconsider component directory organization and gather more feedback from snapd and developers.

Update history

Date Change
updated
updated

Related work

  • Related To: snapcraft#6095 (confidence 88%)

    Feature request 'Allow staging snap components'; tracked as implemented by this craft-parts PR and currently on hold pending snapd UX decisions.

  • Blocked By: snapd#17435 (confidence 80%)

    mr-cal states this snapd PR 'is going to give us a good path forward' — it introduces $SNAP_COMPONENTS so staged snap content can find its components.

Related issues

Issue Project State Summary Similarity
#6095 Allow staging snap components snapcraft open Feature request to support snap components in stage-snaps (snap+component syntax). Triaged as feasible; implementation lives upstream in craft-parts PR #1604, currently on hold pending snapd UX decisions on component access/management.
80%
#1805214 stage-snaps snapcraft (launchpad) closed Feature request for a stage-snaps keyword (unpack a snap's content into the snap being built, like stage-packages) was implemented and merged in canonical/snapcraft#2468 (commit 0983e4063), then shipped in the 3.2 release; follow-up fixes in #2525 and #3211.
72%