← Back to issue list

virtual (build) packages are resolved by first match

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1758895
Type
issue
State
open
Author
~minagalic
Labels
—
Created
Updated
Closed
—

Current evaluation

Apt virtual-package first-match resolution (tcl:386 vs tcl:amd64) — fixed by snapcraft#3035/#3084; the entire snapcraft/internal/repo deb layer was later removed in the snapcraft_legacy cleanup. No such code path remains at HEAD.

Suggested action: close stale

Reason: The exact line cited in the report no longer exists: the whole snapcraft/internal/ tree is absent at HEAD, and greps for is_virtual_package, get_providing_packages and apt_cache return no matches. The reporter's multi-arch first-match concern was separately addressed by commit 9e9290554 'repo: fix resolution of virtual build packages (#3035)' and caf0e0ca5 'repo: fix for multi-arch virtual-packages (#3084)'. The subsystem was subsequently removed entirely by ffb164b7a 'chore: remove snapcraft_legacy', so there is no remaining code path to fix. Docking some confidence because I could not inspect the #3035/#3084 diffs directly (read_file rejected those non-pinned SHAs) and the deb logic now lives in craft-parts/craft-deps, outside this repo.

Evaluated by: mr-cal-bot

Impact: 12 Quick Win: 10 Complexity: 10 Confidence: 88 Actionability: 95

Issue body

this can lead to problems when a package such as `tclsh` is provided by `tcl:386` or `tcl:amd64` and the amd64 package is already installed. for inexplicable reasons, those two packages conflict, so rather than the [following line](https://github.com/snapcore/snapcraft/blob/master/snapcraft/internal/repo/_deb.py#L248) if apt_cache.is_virtual_package(name): name = apt_cache.get_providing_packages(name)[0].name a better safer approach might be to first filter by `architecture`.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 12
Quick Win: 10
Complexity: 10
Confidence: 88
Actionability: 95
close stale Apt virtual-package first-match resolution (tcl:386 vs tcl:amd64) — fixed by snapcraft#3035/#3084; the entire snapcraft/internal/repo deb layer was later removed in the snapcraft_legacy cleanup. No such code path remains at HEAD.
stealth/space-bunny-alpha
Impact: 48
Quick Win: 26
Complexity: 42
Confidence: 99
Actionability: 93
close resolved Multi-architecture virtual build packages were resolved to the first provider, potentially selecting an incompatible architecture. This was fixed by Snapcraft PR #3084 (caf0e0ca5).
qwen/qwen3.6-35b-a3b
Impact: 60
Quick Win: 29
Complexity: 40
Confidence: 90
Actionability: 80
close resolved Virtual packages resolved by first match without architecture consideration, causing multi-arch conflicts. Fixed by PR #3084.
qwen/qwen3.8-27b
Impact: 40
Quick Win: 22
Staleness: 95
Complexity: 45
Confidence: 60
Support Request: 10
close stale Bug report that virtual build packages (e.g. tclsh) are resolved by first apt match, possibly picking the wrong architecture. Filed 8+ years ago against snapcraft/internal/repo/_deb.py, which no longer exists in the current codebase; no maintainer interaction.
qwen/qwen3.6-35b-a3b
Staleness: 98
Complexity: 20
Confidence: 75
Support Request: 5
needs triage Virtual build packages resolve by first match regardless of architecture, causing conflicts. Untriaged with no maintainer interaction or comments in over 8 years.
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 45
Confidence: 90
Support Request: 10
close stale Virtual build packages are resolved by first match without architecture filtering, causing conflicts when multiple architectures provide the same virtual package. Issue is extremely old with no maintainer response.
qwen3.6-35b-a3b-mtp-q6
Staleness: 98
Complexity: 35
Confidence: 90
Support Request: 5
close stale Virtual build packages are resolved by first match without architecture filtering, causing conflicts when multiple architectures provide the same package. Open for over 8 years with no maintainer response.

Update history

Date Change
created

Related work

  • Likely Fixed By: canonical/snapcraft#3084 (confidence 85%)

    Commit caf0e0ca5 'repo: fix for multi-arch virtual-packages' directly matches the reported tcl:386 vs tcl:amd64 conflict.

  • Likely Fixed By: canonical/snapcraft#3035 (confidence 82%)

    Commit 9e9290554 'repo: fix resolution of virtual build packages' targets the same first-match virtual package resolution.

  • Related To: lxd-pkg-snap#10 (confidence 60%)

    Author cross-referenced it in the only comment; not present in the tracked corpus so I could not verify its content.

Related issues

No related issues found above the similarity threshold.