From: Zbigniew Jędrzejewski-Szmek Date: Fri, 16 Feb 2024 16:07:04 +0000 (+0100) Subject: fedora: also look for secondary GPG keys X-Git-Tag: v21~48^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a37590de32f7ec58c39c546fe654d210bd230c68;p=thirdparty%2Fmkosi.git fedora: also look for secondary GPG keys Older Fedora versions distributed and used those. No recent versions do that, but I think they are still generated "just in case". So let's check for them, in case Fedora decides to use them again, and so that checking for the very old versions works too. --- diff --git a/mkosi/distributions/fedora.py b/mkosi/distributions/fedora.py index 8fa6a5ddd..d4d3a666a 100644 --- a/mkosi/distributions/fedora.py +++ b/mkosi/distributions/fedora.py @@ -14,7 +14,20 @@ from mkosi.installer import PackageManager from mkosi.installer.dnf import Dnf from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm from mkosi.log import die -from mkosi.util import listify +from mkosi.util import listify, tuplify + + +@tuplify +def find_fedora_rpm_gpgkeys(context: Context) -> Iterable[str]: + key1 = find_rpm_gpgkey(context, key=f"RPM-GPG-KEY-fedora-{context.config.release}-primary") + key2 = find_rpm_gpgkey(context, key=f"RPM-GPG-KEY-fedora-{context.config.release}-secondary") + + if key1: + yield key1 + if key2: + yield key2 + if not key1 and not key2: + yield "https://fedoraproject.org/fedora.gpg" class Installer(DistributionInstaller): @@ -74,12 +87,7 @@ class Installer(DistributionInstaller): @classmethod @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: - gpgurls = ( - find_rpm_gpgkey( - context, - key=f"RPM-GPG-KEY-fedora-{context.config.release}-primary", - ) or "https://fedoraproject.org/fedora.gpg", - ) + gpgurls = find_fedora_rpm_gpgkeys(context) if context.config.local_mirror: yield RpmRepository("fedora", f"baseurl={context.config.local_mirror}", gpgurls) diff --git a/mkosi/util.py b/mkosi/util.py index ba7c27255..a375dd805 100644 --- a/mkosi/util.py +++ b/mkosi/util.py @@ -40,6 +40,13 @@ def listify(f: Callable[..., Iterable[T]]) -> Callable[..., list[T]]: return functools.update_wrapper(wrapper, f) +def tuplify(f: Callable[..., Iterable[T]]) -> Callable[..., tuple[T, ...]]: + def wrapper(*args: Any, **kwargs: Any) -> tuple[T, ...]: + return tuple(f(*args, **kwargs)) + + return functools.update_wrapper(wrapper, f) + + @dictify def read_env_file(path: Path) -> Iterator[tuple[str, str]]: with path.open() as f: