Charm `dispatch` fails with poetry plugin
Metadata
Current evaluation
Fixed by follow-up PR canonical/charmcraft#2017 (commit 7f238725), which corrected the Poetry-plugin dispatch script after #1972 proved insufficient.
Resolution: closed resolved
Reason: PR #2017 was merged as commit 7f238725 and fixed the remaining dispatch failure for Poetry-plugin charms after the reporter confirmed the earlier fix in #1972 was insufficient.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Bug Description
`dispatch` file generated by charmcraft with poetry plugin fails all juju events
```
ln: failed to create symbolic link '/var/lib/juju/agents/unit-mysql-router-k8s-0/charm/venv/bin/python': No such file or directory
./dispatch: 16: exec: /var/lib/juju/agents/unit-mysql-router-k8s-0/charm/venv/bin/python: not found
```
Discovered after working around #1994 by renaming kubernetes_charm.py to charm.py
### To Reproduce
```
git clone https://github.com/canonical/mysql-router-k8s-operator
cd mysql-router-k8s-operator
git checkout a0c3fc45b3f1bd71529747103fc6e37403e658d9
charmcraft pack -v
juju deploy ./mysql-router-k8s_ubuntu-22.04-amd64.charm --resource mysql-router-image=ghcr.io/canonical/charmed-mysql@sha256:89b8305613f6ce94f78a7c9b4baedef78f2816fd6bc74c00f6607bc5e57bd8e6
juju status
```
juju status shows error
```
juju debug-hooks mysql-router-k8s/0
```
in other terminal, run `juju resolve mysql-router-k8s/0`
```
# ./dispatch
ln: failed to create symbolic link '/var/lib/juju/agents/unit-mysql-router-k8s-0/charm/venv/bin/python': No such file or directory
./dispatch: 16: exec: /var/lib/juju/agents/unit-mysql-router-k8s-0/charm/venv/bin/python: not found
```
### Environment
Ubuntu 22.04
```
$ snap list
Name Version Rev Tracking Publisher Notes
charmcraft 3.2.2.post75+gff00a899 5394 3.x/edge canonical✓ classic,held
core18 20240920 2846 latest/stable canonical✓ base
core20 20240911 2434 latest/stable canonical✓ base
core22 20241001 1663 latest/stable canonical✓ base
juju 3.5.4 28520 3/stable canonical✓ -
lxd 5.0.3-80aeff7 29351 5.0/stable/… canonical✓ -
microk8s v1.29.9 7227 1.29-strict/stable canonical✓ -
snapd 2.63 21759 latest/stable canonical✓ snapd
```
### charmcraft.yaml
```yaml
# Copyright 2022 Canonical Ltd.
# See LICENSE file for licensing details.
type: charm
bases:
- name: ubuntu
channel: "22.04"
architectures: [amd64]
- name: ubuntu
channel: "22.04"
architectures: [arm64]
parts:
poetry-deps:
plugin: nil
build-packages:
- curl
override-build: |
python3 -m pip install --upgrade pip==24.3.1
curl -sSL https://install.python-poetry.org | python3 - --version 1.8.4
ln -sf $HOME/.local/bin/poetry /usr/local/bin/poetry
foo:
plugin: poetry
source: .
after:
- poetry-deps
poetry-with:
- charm-libs
build-snaps:
- rustup
build-packages:
- libffi-dev
- libssl-dev
- pkg-config
override-build: |
rustup default stable
craftctl default
#
# files:
# plugin: dump
# source: .
# build-packages:
# - git
# override-build: |
# # Workaround to add unique identifier (git hash) to charm version while specification
# # DA053 - Charm versioning
# # (https://docs.google.com/document/d/1Jv1jhWLl8ejK3iJn7Q3VbCIM9GIhp8926bgXpdtx-Sg/edit?pli=1)
# # is pending review.
# python3 -c 'import pathlib; import shutil; import subprocess; git_hash=subprocess.run(["git", "describe", "--always", "--dirty"], capture_output=True, check=True, encoding="utf-8").stdout; file = pathlib.Path("charm_version"); shutil.copy(file, pathlib.Path("charm_version.backup")); version = file.read_text().strip(); file.write_text(f"{version}+{git_hash}")'
#
# craftctl default
# stage:
# # Exclude requirements.txt file during staging
# # Workaround for https://github.com/canonical/charmcraft/issues/1389 on charmcraft 2
# - -requirements.txt
# prime:
# - charm_version
# - workload_version
# - scripts
# charm:
# build-snaps:
# - rustup
# build-packages:
# - libffi-dev
# - libssl-dev
# - pkg-config
# override-build: |
# rustup default stable
#
# # Convert subset of poetry.lock to requirements.txt
# curl -sSL https://install.python-poetry.org | python3 -
# /root/.local/bin/poetry export --only main,charm-libs --output requirements.txt
#
# craftctl default
# stage:
# # Exclude charm_version file during staging
# - -charm_version
# charm-strict-dependencies: true
# charm-requirements: [requirements.txt]
# charm-entrypoint: src/kubernetes_charm.py
```
### Relevant log output
[charmcraft-20241115-112046.686344.log](https://github.com/user-attachments/files/17774740/charmcraft-20241115-112046.686344.log)
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Fixed by follow-up PR canonical/charmcraft#2017 (commit 7f238725), which corrected the Poetry-plugin dispatch script after #1972 proved insufficient. | |
| stealth/space-bunny-alpha | — | closed resolved | Poetry-plugin charm dispatch was fixed by merged PR #2017 (commit 7f238725), following the incomplete fix in PR #1972. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed by follow-up PR #2017 (commit 7f238725); PR #1972’s earlier dispatch fix was incomplete. | |
| stealth/space-bunny-alpha | — | closed stale | Merged PR #1972 addressed the venv dispatch failure, but the reporter later reproduced it; no verified follow-up resolution was recorded. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Claimed fixed in PR #1972, but the reporter confirmed the dispatch file error persists. The issue remains closed without a verified resolution. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed. Reporter noted dispatch script failures with poetry plugin due to missing python symlink. Developer referenced PR #1972 as a fix, but reporter confirmed the issue persists in production. Remains unresolved. | |
| qwen/qwen3.6-35b-a3b | — | — | Claimed fixed in PR #1972, but the reporter disputed the resolution, confirming the dispatch failure persists. The issue was closed without verified resolution. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed as fixed following merge of PR #1972. The reporter later disputed the resolution, reporting the dispatch error persists. |
Update history
No update history recorded yet.
Related work
-
Likely Fixed By:
canonical/charmcraft#2017
(confidence 100%)
Merged as 7f238725 to correct the generated dispatch script.
-
Related To:
canonical/charmcraft#1972
(confidence 100%)
Earlier fix ad438d60 did not resolve the reported failure.
-
Related To:
canonical/charmcraft#1994
(confidence 95%)
The reporter identified this failure while working around the Poetry plugin entrypoint limitation.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2017 fix(dispatch): fix the dispatch script | charmcraft | merged | Merged PR #2017 as commit 7f238725, correcting the dispatch script for Poetry-plugin charms and resolving #1995. |