snapcraft
snapcraft copied to clipboard
Snapcraft --use-lxd for core20 breaks when a deb822 source with inline signing block is on the host
Bug Description
Modern apt (unsure since when) supports inline Signed-By, which is the default way to add PPAs in mantic. However, when using LXD (at least for a core20 charm), this breaks snapcraft.
WORKAROUND: use the (default) multipass backend.
To Reproduce
- Put the following file in
/etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-mantic.sources
Types: deb
URIs: https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/
Suites: jammy
Components: main
Signed-By:
-----BEGIN PGP PUBLIC KEY BLOCK-----
.
mQINBFl8fYEBEADQmGZ6pDrwY9iH9DVlwNwTOvOZ7q7lHXPl/TLfMs1tckMc/D9a
hsdBN9VWtMmo+RySvhkIe8X15r65TFs2HE8ft6j2e/4K472pObM1hB+ajiU/wYX2
Syq7DBlNm6YMP5/SyQzRxqis4Ja1uUjW4Q5/Csdf5In8uMzXj5D1P7qOiP2aNa0E
r3w6PXWRTuTihWZOsHv8npyVYDBRR6gEZbd3r86snI/7o8Bfmad3KjbxL7aOdNMw
AqQFaNKl7Y+UJpv1CNFIf+twcOoC0se1SrsVJlAH9HNHM7XGQsPUwpNvQlcmvr+t
1vVS2m72lk3gyShDuJpi1TifGw+DoTqu54U0k+0sZm4pnQVeiizNkefU2UqOoGlt
4oiG9nIhSX04xRlGes3Ya0OjNI5b1xbcYoR+r0c3odI+UCw3VSZtKDX/xlH1o/82
b8ouXeE7LA1i4DvGNj4VSvoxv4ggIznxMf+PkWXWKwRGsbAAXF52rr4FUaeaKoIU
DkJqHXAxrB3PQslZ+ZgBEukkQZF76NkqRqP1E7FXzZZMo2eEL7vtnhSzUlanOf42
ECBoWHVoZQaRFMNbGpqlg9aWedHGyetMStS3nH1sqanr+i4I8VR/UH+ilarPTW3T
E0apWlsH8+N3IKbRx2wgrRZNoQEuyVtvyewDFYShJB3Zxt7VCy67vKAl1QARAQAB
tBxMYXVuY2hwYWQgUFBBIGZvciBkZWFkc25ha2VziQI4BBMBAgAiBQJZfH2BAhsD
BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRC6aTI2anVXdvwhD/4oI3yckeKn
9aJNNTJsyw4ydMkIAOdG+jbZsYv/rN73UVQF1RA8HC71SDmbd0Nu80koBOX+USuL
vvhoMIsARlD5dLx5f/zaQcYWJm/BtsMF/eZ4s1xsenwW6PpXd8FpaTn1qtg/8+O9
99R4uSetAhhyf1vSRb/8U0sgSQd38mpZZFq352UuVisXnmCThj621loQubYJ3lwU
LSLs8wmgo4XIYH7UgdavV9dfplPh0M19RHQL3wTyQP2KRNRq1rG7/n1XzUwDyqY6
eMVhdVhvnxAGztvdFCySVzBRr/rCw6quhcYQwBqdqaXhz63np+4mlUNfd8Eu+Vas
b/tbteF/pDu0yeFMpK4X09Cwn2kYYCpq4XujijW+iRWb4MO3G8LLi8oBAHP/k0CM
/QvSRbbG8JDQkQDH37Efm8iE/EttJTixjKAIfyugmvEHfcrnxaMoBioa6h6McQrM
vI8bJirxorJzOVF4kY7xXvMYwjzaDC8G0fTA8SzQRaShksR3USXZjz8vS6tZ+YNa
mRHPoZ3Ua0bz4t2aCcu/fknVGsXcNBazNIK9WF2665Ut/b7lDbojXsUZ3PpuqOoe
GQL9LRj7nmCI6ugoKkNp8ZXcGJ8BGw37Wep2ztyzDohXp6f/4mGgy2KYV9R4S8D5
yBDUU6BS7Su5nhQMStfdfr4FffLmnvFC9w==
=7hFk
-----END PGP PUBLIC KEY BLOCK-----
- Get a core20 snap (e.g.
git clone [email protected]:canonical/charmcraft.git) snapcraft --use-lxd
Environment
Kubuntu Mantic plus the sources file above (yes I know I shouldn't be pointing to a jammy source...)
snapcraft.yaml
N/A
Relevant log output
$ snapcraft --verbose --use-lxd
Starting Snapcraft 7.5.3
Logging execution to '/home/lengau/.local/state/snapcraft/log/snapcraft-20231018-125641.121134.log'
Sorry, an error occurred in Snapcraft:
E:Invalid value set for option Signed-By regarding source https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/ jammy (not a fingerprint), E:The list of sources could not be read.
We would appreciate it if you anonymously reported this issue.
No other data than the traceback and the version of snapcraft in use will be sent.
Would you like to send this error data? (Yes/No/Always/View) [no]: n
You can find the traceback in file '/tmp/tmp3m36qgt8/trace.txt'.
trace:
Traceback (most recent call last):
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/cli.py", line 255, in run
_run_dispatcher(dispatcher, global_args)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/cli.py", line 228, in _run_dispatcher
dispatcher.run()
File "/snap/snapcraft/9726/lib/python3.8/site-packages/craft_cli/dispatcher.py", line 448, in run
return self._loaded_command.run(self._parsed_command_args)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/commands/lifecycle.py", line 265, in run
super().run(parsed_args)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/commands/lifecycle.py", line 138, in run
parts_lifecycle.run(self.name, parsed_args)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/parts/lifecycle.py", line 179, in run
yaml_data = process_yaml(snap_project.project_file)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/parts/lifecycle.py", line 142, in process_yaml
yaml_data = yaml_utils.load(yaml_file)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft/parts/yaml_utils.py", line 94, in load
raise errors.LegacyFallback(f"base is {build_base}")
snapcraft.errors.LegacyFallback: base is core20
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/cli/legacy.py", line 27, in legacy_run
run()
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 1635, in invoke
rv = super().invoke(ctx)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/cli/_runner.py", line 139, in run
snap_command.invoke(ctx)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/cli/lifecycle.py", line 405, in snap
_execute(steps.PRIME, parts=tuple(), pack_project=True, output=output, **kwargs)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/cli/lifecycle.py", line 141, in _execute
build_provider_class.ensure_provider()
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/internal/build_providers/_lxd/_lxd.py", line 90, in ensure_provider
if repo.Repo.is_package_installed("lxd") or repo.Repo.is_package_installed(
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/internal/repo/_deb.py", line 535, in is_package_installed
with AptCache() as apt_cache:
File "/snap/snapcraft/9726/lib/python3.8/site-packages/snapcraft_legacy/internal/repo/apt_cache.py", line 58, in __enter__
self.cache = apt.Cache()
File "/snap/snapcraft/9726/lib/python3.8/site-packages/apt/cache.py", line 170, in __init__
self.open(progress)
File "/snap/snapcraft/9726/lib/python3.8/site-packages/apt/cache.py", line 232, in open
self._cache = apt_pkg.Cache(progress)
apt_pkg.Error: E:Invalid value set for option Signed-By regarding source https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/ jammy (not a fingerprint), E:The list of sources could not be read.
Additional context
This will probably be fixed with the core22 move, but it's strange that snapcraft would be checking the repositories on the host at all (unless in destructive mode).