canonical / charmcraft

Collaborate, build and publish charmed operators for Kubernetes, Linux and Windows.
Apache License 2.0
66 stars 72 forks source link

Allow changing the charm entrypoint with the `python` and `poetry` plugins #1994

Open carlcsaposs-canonical opened 3 days ago

carlcsaposs-canonical commented 3 days ago

Bug Description

dispatch file missing from *.charm file when using poetry plugin

To Reproduce

git clone https://github.com/canonical/mysql-router-k8s-operator
cd mysql-router-k8s-operator
git checkout 1940ada229f9d873b7b07f6c3af66493c37cb15a
charmcraft pack -v
mkdir foo
cd foo
unzip ../mysql-router-k8s_ubuntu-22.04-amd64.charm
ls foo

dispatch file missing in foo

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

# 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-101114.717652.log

syncronize-issues-to-jira[bot] commented 14 hours ago

Thank you for reporting us your feedback!

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

This message was autogenerated

lengau commented 14 hours ago

Thanks for the report! This is intentional, though we should probably put a better warning on it. I've renamed the issue though, as the primary concern appears to be the name of the entrypoint.