Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

charmcraft clean does not clean all platforms for charm #2078

Open
carlcsaposs-canonical opened this issue Jan 14, 2025 · 1 comment
Open
Assignees
Labels
Bug Something isn't working triaged

Comments

@carlcsaposs-canonical
Copy link
Contributor

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 [email protected]: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

# Copyright 2022 Canonical Ltd.
# See LICENSE file for licensing details.

type: charm
platforms:
  [email protected]:amd64:
  [email protected]:arm64:
  [email protected]:amd64:
  [email protected]: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" == [email protected]:* || "$CRAFT_PLATFORM" == [email protected]:* ]]
      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

N/A
@carlcsaposs-canonical carlcsaposs-canonical added the Bug Something isn't working label Jan 14, 2025
@lengau lengau added the triaged label Jan 15, 2025
@lengau lengau self-assigned this Jan 15, 2025
Copy link

Thank you for reporting your feedback to us!

The internal ticket has been created: https://warthogs.atlassian.net/browse/CRAFT-3898.

This message was autogenerated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working triaged
Projects
None yet
Development

No branches or pull requests

2 participants