snapcraft icon indicating copy to clipboard operation
snapcraft copied to clipboard

Snapcraft --use-lxd for core20 breaks when a deb822 source with inline signing block is on the host

Open lengau opened this issue 2 years ago • 0 comments

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

  1. 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-----
  1. Get a core20 snap (e.g. git clone [email protected]:canonical/charmcraft.git)
  2. 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).

lengau avatar Oct 18 '23 16:10 lengau