Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: handle existing ubuntu deb822 sources #136

Merged
merged 4 commits into from
Oct 18, 2024

Conversation

tigarmo
Copy link
Collaborator

@tigarmo tigarmo commented Oct 17, 2024

The problem is this: since Noble, the default Ubuntu archives are listed as deb822 sources in /etc/apt/sources.lists.d/ubuntu.sources as signed by a key in /usr/share/keyrings. Trying to declare a package-repository with the url of an official archive (e.g. to add an architecture) would then fail because apt complained that a given suite under archive.ubuntu.com/ubuntu was being declared as Signed-By two keyrings (the official one and the craft-added one).

This commit updates the handling of sources for the specific case of those sources that are also declared in ubuntu.sources:

  • IF a package-repository has an url that matches an official repo,
  • AND IF this repo is already declared in a deb822-format sources file,
  • AND IF the requested key-id is present in the existing sources' declared keyring,

... then the new sources file will point to the existing keyring, instead of the usual CRAFT-xxx keyring. This commit updates a lot of code, but most of of it is moving existing code around, and the new code specifically only applies to the ubuntu.sources file. This is to minimize the blast-radius of this change and allow this to be a 'fix' rather than a 'feat'.

Fixes #129

  • Have you followed the guidelines for contributing?
  • Have you signed the CLA?
  • Have you successfully run tox?

@tigarmo tigarmo force-pushed the work/CRAFT-3538-noble-key-conflict branch from 9c3e44d to ed2af43 Compare October 17, 2024 21:40
The problem is this: since Noble, the default Ubuntu archives are listed as
deb822 sources in /etc/apt/sources.lists.d/ubuntu.sources as signed by a key in
/usr/share/keyrings. Trying to declare a package-repository with the url
of an official archive (e.g. to add an architecture) would then fail because
apt complained that a given suite under archive.ubuntu.com/ubuntu was being
declared as Signed-By two keyrings (the official one and the craft-added one).

This commit updates the handling of sources for the specific case of those
sources that are also declared in ubuntu.sources:
- IF a package-repository has an url that matches an official repo,
- AND IF this repo is already declared in a deb822-format sources file,
- AND IF the requested key-id is present in the existing sources' declared
  keyring,

... then the new sources file will point to the existing keyring, instead
of the usual CRAFT-xxx keyring. This commit updates a lot of code, but most of
of it is moving existing code around, and the new code specifically only
applies to the 'ubuntu.sources' file. This is to minimize the blast-radius of
this change and allow this to be a 'fix' rather than a 'feat'.

Fixes #129
@tigarmo tigarmo force-pushed the work/CRAFT-3538-noble-key-conflict branch from ed2af43 to 0feea5b Compare October 17, 2024 21:43
@tigarmo tigarmo marked this pull request as ready for review October 17, 2024 21:45
@tigarmo tigarmo requested review from lengau and mr-cal October 17, 2024 21:45
@tigarmo tigarmo added the squash label Oct 17, 2024
Copy link
Collaborator

@lengau lengau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thanks!

craft_archives/repo/gpg.py Outdated Show resolved Hide resolved
docs/changelog.rst Show resolved Hide resolved
pyproject.toml Show resolved Hide resolved
Copy link
Contributor

@mr-cal mr-cal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks excellent, thanks!

docs/changelog.rst Outdated Show resolved Hide resolved
tigarmo and others added 2 commits October 18, 2024 12:10
Co-authored-by: Callahan <callahan.kovacs@canonical.com>
@tigarmo tigarmo merged commit 572a665 into main Oct 18, 2024
9 checks passed
@tigarmo tigarmo deleted the work/CRAFT-3538-noble-key-conflict branch October 18, 2024 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Key conflicts when using the official (or ports) archives in Noble
3 participants