← Back to issue list

charmcraft should complain if the charm contains a bundle

View original Github issue

Metadata

Project
charmcraft
Number
#2233
Type
issue
State
open
Author
PietroPasotti
Labels
Created
Updated
Closed

Current evaluation

Request for charmcraft pack to warn or fail when a charm root contains a bundle.yaml, since juju then deploys the bundle instead of the charm. No labels, no maintainer response; validation still absent from current pack code.

Suggested action: needs triage

Reason: The issue has zero comments, no labels, and no maintainer acknowledgement in 524 days, so it has never been triaged. It is not a candidate for close_stale because the requested validation is still missing: PackCommand in charmcraft/application/commands/lifecycle.py contains no bundle.yaml check, and the only bundle.yaml handling in the repo is in store.py's get_name_from_zip for uploads. The fix itself is small (a check in the pack path), so it needs a maintainer decision on warning vs. erroring rather than closure.

Impact: 35 Quick Win: 26.25 Staleness: 75 Complexity: 25 Confidence: 80 Support Request: 10

Issue body

### Bug Description see: https://github.com/juju/juju/issues/19207#issuecomment-2750556513 TLDR: if you (accidentally) pack a 'bundle.yaml' file with your charm, juju will attempt to deploy the bundle instead of the charm when doing `juju deploy ./mycharm.charm` Juju seems to think this is a feature and won't fix it, but I think at least charmcraft should validate that there is no 'bundle.yaml' file in your charm root, as I can guarantee you in 101% of the cases it will lead to unwanted and unexpected and hilariously confusing results. ### To Reproduce charmcraft init create a bundle.yaml in your charm root, put there any bundle. charmcraft pack juju deploy mycharm.charm - bundle gets deployed, not your charm. ### Environment all ### charmcraft.yaml ```yaml n/a ``` ### Relevant log output ```shell n/a ```

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.8-27b
Impact: 35
Quick Win: 26.25
Staleness: 75
Complexity: 25
Confidence: 80
Support Request: 10
needs triage Request for charmcraft pack to warn or fail when a charm root contains a bundle.yaml, since juju then deploys the bundle instead of the charm. No labels, no maintainer response; validation still absent from current pack code.
qwen/qwen3.6-35b-a3b
Staleness: 85
Complexity: 20
Confidence: 80
Support Request: 10
needs triage Request to add build-time validation in charmcraft to reject charms containing a bundle.yaml file, preventing accidental bundle deployment. Currently untriaged and inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 15
Confidence: 80
Support Request: 5
needs triage Request to add validation in charmcraft to error if bundle.yaml is present in the charm root, preventing accidental bundle deployment. Untriaged, zero comments, inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 85
Complexity: 30
Confidence: 85
Support Request: 10
needs triage Feature request to add validation in charmcraft that rejects charms containing a bundle.yaml file to prevent accidental bundle deployment. Untriaged, zero comments, inactive for over a year.
qwen3.6-35b-a3b-mtp-q6
Staleness: 65
Complexity: 20
Confidence: 70
Support Request: 10
needs triage Requests adding validation to charmcraft to reject charms containing a bundle.yaml file, preventing accidental bundle deployment. The issue remains open with no comments or labels, indicating it is untriaged and awaiting review.

Update history

No update history recorded yet.

Related work

  • Related To: juju/juju#19207 (confidence 90%)

    Explicitly linked in the issue body; explains why juju deploys the bundle from a charm zip and why juju will not change its behavior, motivating the charmcraft-side validation.

Related issues

Issue Project State Summary Similarity
#2341 Packing a bundle produces a zip that is rejected by charmhub charmcraft open charmcraft 3.x pack produces a bundle zip with metadata.yaml instead of bundle.yaml, so charmcraft upload is rejected by charmhub. A maintainer asked for the charmcraft.yaml on 2025-06-27; no further activity since.
75%
#1931 Successfully pack charm with incorrect charm.py file permission charmcraft open charmcraft pack succeeds even when src/charm.py lacks the execute bit, producing a charm that fails at deploy with 'Permission denied'. Requested a warning/error or auto-fix at pack time. No maintainer activity; an entrypoint linter now exists but only runs via charmcraft analyze, not pack.
72%