← Back to issue list

`charmcraft clean` does not clean all platforms for charm

View original Github issue

Metadata

Project
charmcraft
Number
#2078
Type
issue
State
open
Author
carlcsaposs-canonical
Labels
—
Created
Updated
Closed
—

Current evaluation

Open, reproducible cleanup bug: charmcraft clean uses current project platforms to derive build instances, leaving containers for removed platforms; no resolving fix is linked.

Suggested action: keep open

Reason: The report provides a pinned checkout and before/after LXC listings showing that the ubuntu@20.04:amd64 container survives clean. Current craft-application ProviderService.clean_instances() still builds cleanup targets from the project's current platforms, so removed-platform containers are unreachable; @sed-i explicitly linked #1338 and CRAFT-3898 was created.

Evaluated by: mr-cal-bot

Impact: 43 Quick Win: 17 Complexity: 56 Confidence: 96 Actionability: 90

Issue body

### Bug Description Running `charmcraft clean` only cleans LXC containers for platforms in `platforms` ### Expected behavior Running `charmcraft clean` cleans all LXC containers for a charm, regardless of whether they are in `platforms` ### To Reproduce ``` git clone https://github.com/canonical/pgbouncer-operator/ cd pgbouncer-operator git checkout 3c44f02b8474d320c688c22d51773974dd218c02 charmcraft pack -v lxc --project charmcraft ls # Remove ubuntu@20.04:amd64: platform from charmcraft.yaml charmcraft clean -v lxc --project charmcraft ls ``` output of `lxc --project charmcraft ls` before & after clean before ``` +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | base-instance-charmcraft-buildd-base-v7--20d64a5acd5c317c9c8d | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | base-instance-charmcraft-buildd-base-v7--910533fdd664bd2cdbe9 | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | charmcraft-pgbouncer-ubuntu-2004-amd64-4-4ae2411f5977f7237881 | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | charmcraft-pgbouncer-ubuntu-2204-amd64-4-5841bc8b73f9e57f49d3 | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ ``` after ``` +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | base-instance-charmcraft-buildd-base-v7--20d64a5acd5c317c9c8d | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | base-instance-charmcraft-buildd-base-v7--910533fdd664bd2cdbe9 | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ | charmcraft-pgbouncer-ubuntu-2004-amd64-4-4ae2411f5977f7237881 | STOPPED | | | CONTAINER | 0 | +---------------------------------------------------------------+---------+------+------+-----------+-----------+ ``` ### Environment Ubuntu 22.04 ``` $ snap list Name Version Rev Tracking Publisher Notes charmcraft 3.2.2.post144+gf65ecc0e 5761 latest/edge canonical✓ classic core18 20240920 2846 latest/stable canonical✓ base core20 20240911 2434 latest/stable canonical✓ base core22 20241119 1722 latest/stable canonical✓ base core24 20240920 609 latest/stable canonical✓ base juju 3.6.1 29241 3/stable canonical✓ - lxd 5.0.4-497fe1e 31333 5.0/stable/… canonical✓ - microk8s v1.29.11 7435 1.29-strict/stable canonical✓ - rustup 1.27.1 1471 latest/stable canonical✓ classic snapcraft 8.5.1 13181 latest/stable canonical✓ classic snapd 2.67 23545 latest/stable canonical✓ snapd ``` ### charmcraft.yaml ```yaml # Copyright 2022 Canonical Ltd. # See LICENSE file for licensing details. type: charm platforms: ubuntu@20.04:amd64: ubuntu@20.04:arm64: ubuntu@22.04:amd64: ubuntu@22.04:arm64: # Files implicitly created by charmcraft without a part: # - dispatch (https://github.com/canonical/charmcraft/pull/1898) # - manifest.yaml # (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/services/package.py#L259) # Files implicitly copied/"primed" by charmcraft without a part: # - actions.yaml, config.yaml, metadata.yaml # (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/services/package.py#L290-L293 # https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/services/package.py#L156-L157) parts: # "poetry-deps" part name is a magic constant # https://github.com/canonical/craft-parts/pull/901 poetry-deps: plugin: nil build-packages: - curl override-build: | # Use environment variable instead of `--break-system-packages` to avoid failing on older # versions of pip that do not recognize `--break-system-packages` # `--user` needed (in addition to `--break-system-packages`) for Ubuntu >=24.04 PIP_BREAK_SYSTEM_PACKAGES=true python3 -m pip install --user --upgrade pip==24.3.1 # renovate: charmcraft-pip-latest # Use uv to install poetry so that a newer version of Python can be installed if needed by poetry curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.15/uv-installer.sh | sh # renovate: charmcraft-uv-latest # poetry 2.0.0 requires Python >=3.9 if ! "$HOME/.local/bin/uv" python find '>=3.9' then # Use first Python version that is >=3.9 and available in an Ubuntu LTS # (to reduce the number of Python versions we use) "$HOME/.local/bin/uv" python install 3.10.12 # renovate: charmcraft-python-ubuntu-22.04 fi "$HOME/.local/bin/uv" tool install --no-python-downloads --python '>=3.9' poetry==2.0.0 --with poetry-plugin-export==1.8.0 # renovate: charmcraft-poetry-latest ln -sf "$HOME/.local/bin/poetry" /usr/local/bin/poetry # "charm-poetry" part name is arbitrary; use for consistency # Avoid using "charm" part name since that has special meaning to charmcraft charm-poetry: # By default, the `poetry` plugin creates/primes these directories: # - lib, src # (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/parts/plugins/_poetry.py#L76-L78) # - venv # (https://github.com/canonical/charmcraft/blob/9ff19c328e23b50cc06f04e8a5ad4835740badf4/charmcraft/parts/plugins/_poetry.py#L95 # https://github.com/canonical/craft-parts/blob/afb0d652eb330b6aaad4f40fbd6e5357d358de47/craft_parts/plugins/base.py#L270) plugin: poetry source: . after: - poetry-deps poetry-export-extra-args: ['--only', 'main,charm-libs'] build-packages: - libffi-dev # Needed to build Python dependencies with Rust from source - libssl-dev # Needed to build Python dependencies with Rust from source - pkg-config # Needed to build Python dependencies with Rust from source - libpq-dev override-build: | # Workaround for https://github.com/canonical/charmcraft/issues/2068 # rustup used to install rustc and cargo, which are needed to build Python dependencies with Rust from source if [[ "$CRAFT_PLATFORM" == ubuntu@20.04:* || "$CRAFT_PLATFORM" == ubuntu@22.04:* ]] then snap install rustup --classic else apt-get install rustup -y fi # If Ubuntu version < 24.04, rustup was installed from snap instead of from the Ubuntu # archive—which means the rustup version could be updated at any time. Print rustup version # to build log to make changes to the snap's rustup version easier to track rustup --version # rpds-py (Python package) >=0.19.0 requires rustc >=1.76, which is not available in the # Ubuntu 22.04 archive. Install rustc and cargo using rustup instead of the Ubuntu archive rustup set profile minimal rustup default 1.83.0 # renovate: charmcraft-rust-latest craftctl default # Include requirements.txt in *.charm artifact for easier debugging cp requirements.txt "$CRAFT_PART_INSTALL/requirements.txt" # "files" part name is arbitrary; use for consistency files: plugin: dump source: . prime: - LICENSE - templates libpq: build-packages: - libpq-dev plugin: dump source: /usr/lib/ source-type: local prime: - lib/ organize: "*-linux-gnu/libpq.so*": lib/ ``` ### Relevant log output ```shell N/A ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 43
Quick Win: 17
Complexity: 56
Confidence: 96
Actionability: 90
keep open Open, reproducible cleanup bug: charmcraft clean uses current project platforms to derive build instances, leaving containers for removed platforms; no resolving fix is linked.
qwen/qwen3.6-35b-a3b
Impact: 40
Quick Win: 14
Complexity: 50
Confidence: 75
Actionability: 70
keep open charmcraft clean only removes LXC containers for platforms in current charmcraft.yaml, leaving stale containers from removed platforms. Unresolved in both charmcraft and craft-application.
qwen/qwen3.8-27b
Impact: 35
Quick Win: 21
Staleness: 70
Complexity: 40
Confidence: 75
Support Request: 0
needs triage charmcraft clean only removes LXC containers for platforms currently listed in charmcraft.yaml, leaving stale containers for removed platforms. Reported with repro steps; linked to issue #1338 in Jan 2025, no further activity.
qwen/qwen3.6-35b-a3b
Staleness: 85
Complexity: 45
Confidence: 85
Support Request: 10
needs triage charmcraft clean fails to remove LXC containers for platforms removed from charmcraft.yaml. Issue is open, unlabelled, and inactive for over 340 days.
qwen3.6-35b-a3b-mtp-q6
Staleness: 90
Complexity: 45
Confidence: 85
Support Request: 10
needs triage charmcraft clean fails to remove LXC containers for platforms removed from charmcraft.yaml. Unlabelled, inactive for over a year, awaiting triage.
qwen3.6-35b-a3b-mtp-q6
Staleness: 75
Complexity: 45
Confidence: 60
Support Request: 10
needs triage charmcraft clean fails to remove LXC containers for platforms removed from charmcraft.yaml. Unlabelled, awaiting maintainer triage after ~10 months of inactivity.

Update history

No update history recorded yet.

Related work

  • Related To: canonical/charmcraft#1338 (confidence 99%)

    A maintainer explicitly identified #1338 as related; that broader clean failure was closed as unresolved.

  • Related To: canonical/craft-application#425 (confidence 92%)

    The responsible clean_instances implementation is in craft-application; #425 covered insufficient clean scope and was closed without a linked fix.

Related issues

Issue Project State Summary Similarity
#425 `clean` command only cleans `build-for` for the host system craft-application closed Closed without a linked complete fix; commit 07e89deb added clean --platform, but canonical/charmcraft#2078 later reported all-platform cleaning still failed.
77%
#1338 `charmcraft clean` doesn't clean charmcraft closed Closed unresolved: LXD cleanup remained broken in Charmcraft 3, with the changed behavior attributed to craft-application#425, which also closed without a linked fix.
74%
#2631 Multiple `charmcraft pack` fail on mismatching platforms charmcraft open Consecutive charmcraft pack runs with different platform sets fail: second charm (24.04 only) launches a 22.04 instance and errors 'Platform not found'. Regression from 4.0.1, still present in 4.3.1, no maintainer response.
70%