charmcraft 3.2 not accepting non-vectorised build-on and build-for
Metadata
Current evaluation
Closed without a code fix; reported a breaking change in charmcraft 3.2 requiring list syntax for build-on/build-for fields. Logged to internal Jira ticket CRAFT-3318.
Suggested action: —
No scores available.
Issue body
### Bug Description
See: https://matrix.to/#/!LhFxJIPEcCacgdMghH:ubuntu.com/$h_KICbWryOMQQcmQ6FPZzXro0aFp-Qiyk8tbz_obrRg
@wolsen: hmm, I noticed a difference between charmcraft 3.1.2 and charmcraft 3.2.0 which is a bit confusing to me. This charmcraft.yaml file (https://opendev.org/openstack/charm-cinder-backup/src/branch/master/charmcraft.yaml) works fine for 3.1.2, but fails on 3.2.0 as its expecting that the build-on and build-for stanzas to contain lists of architectures
### To Reproduce
n/a
### Environment
n/a
### charmcraft.yaml
```yaml
type: charm
parts:
charm:
plugin: dump
source: .
prime:
- actions/*
- files/*
- hooks/*
- lib/*
- templates/*
- config.yaml
- copyright
- icon.svg
- LICENSE
- Makefile
- metadata.yaml
- README.md
base: ubuntu@24.04
platforms:
amd64:
build-on: amd64
build-for: amd64
arm64:
build-on: arm64
build-for: arm64
ppc64el:
build-on: ppc64el
build-for: ppc64el
s390x:
build-on: s390x
build-for: s390x
```
### Relevant log output
```shell
Logging execution to '/root/.local/state/charmcraft/log/charmcraft-20240904-124944.844686.log'
Bad charmcraft.yaml content:
- input should be a valid list (in field 'platforms.amd64.build-on')
- input should be a valid list (in field 'platforms.amd64.build-for')
- input should be a valid list (in field 'platforms.arm64.build-on')
- input should be a valid list (in field 'platforms.arm64.build-for')
- input should be a valid list (in field 'platforms.ppc64el.build-on')
- input should be a valid list (in field 'platforms.ppc64el.build-for')
- input should be a valid list (in field 'platforms.s390x.build-on')
- input should be a valid list (in field 'platforms.s390x.build-for')
Build failed
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/lpbuildd/target/build_charm.py", line 119, in run
self.build()
File "/usr/lib/python3/dist-packages/lpbuildd/target/build_charm.py", line 109, in build
self.run_build_command(args, env=env, cwd=build_context_path)
File "/usr/lib/python3/dist-packages/lpbuildd/target/operation.py", line 62, in run_build_command
return self.backend.run(args, cwd=cwd, env=full_env, **kwargs)
File "/usr/lib/python3/dist-packages/lpbuildd/target/lxd.py", line 718, in run
subprocess.check_call(cmd, **kwargs)
File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['lxc', 'exec', 'lp-noble-arm64', '--env', 'LANG=C.UTF-8', '--env', 'SHELL=/bin/sh', '--env', 'http_proxy=http://10.10.10.1:8222/', '--env', 'https_proxy=http://10.10.10.1:8222/', '--env', 'GIT_PROXY_COMMAND=/usr/local/bin/lpbuildd-git-proxy', '--env', 'SNAPPY_STORE_NO_CDN=1', '--', '/bin/sh', '-c', 'cd /home/buildd/cinder-backup/. && linux64 charmcraft pack -v --destructive-mode']' returned non-zero exit status 1.
Revoking proxy token...
RUN: /usr/share/launchpad-buildd/bin/in-target scan-for-processes --backend=lxd --series=noble --arch=arm64 CHARMRECIPEBUILD-27678
Scanning for processes to kill in build CHARMRECIPEBUILD-27678
```
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed without a code fix; reported a breaking change in charmcraft 3.2 requiring list syntax for build-on/build-for fields. Logged to internal Jira ticket CRAFT-3318. | |
| qwen/qwen3.6-35b-a3b | — | — | Reported a regression in charmcraft 3.2 requiring build-on and build-for to be architecture lists instead of single strings. Closed without a direct fix, with the matter tracked internally as CRAFT-3318. No further resolution provided. | |
| qwen/qwen3.6-35b-a3b | — | — | Closed without a public resolution. Automatically synced to internal Jira ticket CRAFT-3318 for tracking, but no code fix or merge was applied. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Abandoned. Reported a regression in charmcraft 3.2 requiring build-on and build-for fields to be lists instead of strings. Only an automated Jira sync comment was posted; no fix or technical response was provided. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Closed without documented resolution. Reports a regression in charmcraft 3.2.0 requiring build-on and build-for fields to be architecture lists instead of single strings, breaking existing charmcraft.yaml files. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1697 Charmcraft 3 breaks charms with multiple run-on architectures | charmcraft | closed | Closed as blocked by an upstream fix in craft-application. Charmcraft 3 incorrectly concatenated multiple run-on architectures into a single invalid string, causing build failures. Resolution awaits the referenced upstream issue. |