`--bases-index` ignored on charmcraft 3
Metadata
Current evaluation
No evaluation has been recorded for this issue yet.
Issue body
### Bug Description
`charmcraft pack` with `--bases-index` packs all bases
For example, using `charmcraft pack --bases-index 1` with a charmcraft.yaml bases that looks like
```yaml
bases:
- name: ubuntu
channel: "20.04"
architectures: [amd64]
- name: ubuntu
channel: "22.04"
architectures: [amd64]
- name: ubuntu
channel: "22.04"
architectures: [arm64]
```
packs base 0 and base 1 instead of just base 1
Only occurs on charmcraft 3, not charmcraft 2
### To Reproduce
```
lxd init --auto
sudo snap install charmcraft --classic
git clone https://github.com/canonical/mysql-router-operator
cd mysql-router-operator/
git checkout 60ad0549c590d48d77d37f83fe8d105f5a182d4a
charmcraft pack -v --bases-index 1
```
Output shows
```
Launching managed ubuntu 20.04 instance...
[...]
Packing charm mysql-router_ubuntu-20.04-amd64.charm
Packed mysql-router_ubuntu-20.04-amd64.charm
Launching managed ubuntu 22.04 instance...
[...]
Packing charm mysql-router_ubuntu-22.04-amd64.charm
Packed mysql-router_ubuntu-22.04-amd64.charm
```
### Environment
Ubuntu 22.04.1 LTS
```
$ snap list
Name Version Rev Tracking Publisher Notes
charmcraft 3.2.1 4914 latest/stable canonical✓ classic
core18 20221027 2620 latest/stable canonical✓ base
core20 20221027 1695 latest/stable canonical✓ base
core22 20241001 1663 latest/stable canonical✓ base
lxd 5.0.1-9dcf35b 23541 5.0/stable/… canonical✓ -
snapd 2.57.5 17576 latest/stable canonical✓ snapd
```
### charmcraft.yaml
```yaml
# Copyright 2022 Canonical Ltd.
# See LICENSE file for licensing details.
type: charm
bases:
# Whenever "bases" is changed:
# - Update tests/conftest.py::pytest_configure()
# - Update .github/workflow/ci.yaml integration-test matrix
- name: ubuntu
channel: "20.04"
architectures: [amd64]
- name: ubuntu
channel: "22.04"
architectures: [amd64]
- name: ubuntu
channel: "22.04"
architectures: [arm64]
parts:
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
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
# TODO: enable after https://github.com/canonical/charmcraft/issues/1456 fixed
charm-strict-dependencies: false
charm-requirements: [requirements.txt]
charm-entrypoint: src/machine_charm.py
```
### Relevant log output
[charmcraft_output.txt](https://github.com/user-attachments/files/17679837/charmcraft_output.txt)
[charmcraft-20241108-113122.844623.log](https://github.com/user-attachments/files/17679838/charmcraft-20241108-113122.844623.log)
Evaluation history
No evaluation history available.