charmcraft snap doesn't work with snap parallel installs
Metadata
Current evaluation
Charmcraft fails with parallel snap installs due to hardcoded snap names ignoring instance keys. Root cause identified in craft-providers, tracked as CRAFT-3351. Closed as blocked by craft-providers#622 pending upstream fix.
Suggested action: —
No scores available.
Issue body
### Bug Description
Now that charms are beginning to be upgraded to use charmcraft 3, I want to have charmcraft v2 and v3 installed so I can work with all the charms I need to. I tried to do this for the snap using the "parallel installs" feature:
```
sudo snap install charmcraft --channel latest/stable --classic
sudo snap install charmcraft_3 --channel 3.x/beta --classic
```
But this failed (see logs section). It appears that charmcraft is trying to access a hardcoded path that doesn't exist on the parallel install?
### To Reproduce
1. install charmcraft 2 and 3 snaps with the parallel install feature (note the underscore postfix):
```
sudo snap install charmcraft --channel latest/stable --classic
sudo snap install charmcraft_3 --channel 3.x/beta --classic
```
2. try to use `charmcraft_3` to build a charm.
### Environment
Ubuntu 24.04 LTS
### charmcraft.yaml
```shell
type: charm
parts:
charm:
plugin: dump
source: .
base: ubuntu@24.04
platforms:
amd64:
build-on: amd64
build-for: amd64
arm64:
build-on: arm64
build-for: arm64
ppc64el:
build-on: ppc64el
build-for: ppc64el
s390x:
build-on: s390x
build-for: s390x
```
### Relevant log output
```shell
# here I already have charmcraft 2.7 installed:
$ sudo snap install charmcraft --channel latest/stable --classic
---
$ sudo snap install charmcraft_3 --channel 3.x/beta --classic
charmcraft_3 (3.x/candidate) 3.1.1 from Canonical✓ installed
Channel 3.x/beta for charmcraft_3 is closed; temporarily forwarding to 3.x/candidate.
$ charmcraft_3 -v pack
Starting charmcraft, version 3.1.1
Logging execution to '/home/ubuntu/.local/state/charmcraft/log/charmcraft-20240730-111057.635886.log'
Launching managed ubuntu 24.04 instance...
Creating new instance from remote
Creating new base instance from remote
Creating new instance from base instance
Starting instance
Starting charmcraft version 2.7.1
Logging execution to '/tmp/charmcraft.log'
Bad charmcraft.yaml content:
- extra field 'base' not permitted in top-level configuration
- extra field 'platforms' not permitted in top-level configuration
Failed to execute charmcraft in instance.
Full execution log: '/home/ubuntu/.local/state/charmcraft/log/charmcraft-20240730-111057.635886.log'
$ sudo snap remove charmcraft
charmcraft removed
$ charmcraft_3 -v pack
Starting charmcraft, version 3.1.1
Logging execution to '/home/ubuntu/.local/state/charmcraft/log/charmcraft-20240730-112715.840030.log'
Launching managed ubuntu 24.04 instance...
Creating new instance from remote
Creating new base instance from remote
charmcraft internal error: HTTPError('404 Client Error: Not Found for url: http+unix://%2Frun%2Fsnapd.socket/v2/snaps/charmcraft')
Full execution log: '/home/ubuntu/.local/state/charmcraft/log/charmcraft-20240730-112715.840030.log'
$ sudo snap remove charmcraft_3
charmcraft_3 removed
$ sudo snap install charmcraft --channel 3.x/beta --classic
charmcraft (3.x/candidate) 3.1.1 from Canonical✓ installed
Channel 3.x/beta for charmcraft is closed; temporarily forwarding to 3.x/candidate.
$ charmcraft clean
$ charmcraft -v pack
Starting charmcraft, version 3.1.1
Logging execution to '/home/ubuntu/.local/state/charmcraft/log/charmcraft-20240730-114924.278890.log'
Launching managed ubuntu 24.04 instance...
Creating new instance from remote
Creating new base instance from remote
Creating new instance from base instance
Starting instance
Starting charmcraft, version 3.1.1
Logging execution to '/tmp/charmcraft.log'
Starting charmcraft, version 3.1.1
Logging execution to '/tmp/charmcraft.log'
Initialising lifecycle
Installing build-packages
Pulling charm
Building charm
:: + cp --archive --link --no-dereference . /root/parts/charm/install
Staging charm
Priming charm
Packing...
Packing charm ceph-osd_amd64.charm
Packed ceph-osd_amd64.charm
```
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen3.6-35b-a3b-mtp-q6 | — | — | Charmcraft fails with parallel snap installs due to hardcoded snap names ignoring instance keys. Root cause identified in craft-providers, tracked as CRAFT-3351. Closed as blocked by craft-providers#622 pending upstream fix. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed as blocked by upstream craft-providers#622. Root cause: snapd endpoints ignore instance keys. Resolution requires craft-application to dynamically append instance keys to snapd URLs. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed as blocked by craft-providers#622. Parallel installs fail due to hardcoded snap names in snapd calls. Fix requires craft-application or craft-providers to dynamically append SNAP_INSTANCE_KEY to prevent path conflicts. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed as blocked by craft-providers#622. Parallel installs fail because snapd API calls ignore instance keys. Fix identified in craft-application; internal ticket CRAFT-3351 created. Awaiting blocking dependency. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed and deferred to craft-providers issue #622. Parallel snap installs fail because snapd API calls ignore instance keys. Resolution requires dynamically appending the instance key via SNAP_INSTANCE environment variables. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #411 Support snap parallel installs | craft-application | closed | Closed. The initial fix was merged into craft-application, but full parallel snap support requires a follow-up update in craft-providers to correctly parse snap names with underscores. | |
| #4683 Cannot use parallel installations of snapcraft if a non-aliased version is not installed | snapcraft | closed | Parallel snapcraft installations failed when injecting non-aliased versions due to malformed assertion headers. The bug was fixed by correcting snap name parsing in craft-providers, with the solution merged via PRs #5085 and #5087. | |
| #1950 fix: make charmcraft work with snap parallel installs | charmcraft | merged | Merged to resolve issue #1770, enabling charmcraft to operate with snap parallel installs. Approved by two reviewers, the update modifies five files with 55 additions and 15 deletions. | |
| #1202 `charmcraft` installs newer version in LXC container & doesn't respect pinned snap revision | charmcraft | closed | Closed. A fix is planned to switch craft-providers to the newer snap refresh --hold=forever syntax, preventing automatic container updates. A regression test will be added. |