From: Daan De Meyer Date: Wed, 3 May 2023 11:33:14 +0000 (+0200) Subject: Allow passing multiple GPG urls X-Git-Tag: v15~183^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87d22d0d475cc3361fffcd31527d6cc0af080db2;p=thirdparty%2Fmkosi.git Allow passing multiple GPG urls --- diff --git a/mkosi/distributions/centos.py b/mkosi/distributions/centos.py index 4a0a3a172..c9b3e6a3e 100644 --- a/mkosi/distributions/centos.py +++ b/mkosi/distributions/centos.py @@ -144,8 +144,8 @@ class CentosInstaller(DistributionInstaller): epel_testing_url = "metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-epel$releasever&arch=$basearch" return [ - Repo("epel", epel_url, epel_gpgurl, enabled=False), - Repo("epel-testing", epel_testing_url, epel_gpgurl, enabled=False), + Repo("epel", epel_url, [epel_gpgurl], enabled=False), + Repo("epel-testing", epel_testing_url, [epel_gpgurl], enabled=False), ] @classmethod @@ -179,15 +179,15 @@ class CentosInstaller(DistributionInstaller): crb_url = None powertools_url = f"mirrorlist={cls._mirror_repo_url('PowerTools')}" - repos = [Repo("appstream", appstream_url, gpgurl)] + repos = [Repo("appstream", appstream_url, [gpgurl])] if baseos_url is not None: - repos += [Repo("baseos", baseos_url, gpgurl)] + repos += [Repo("baseos", baseos_url, [gpgurl])] if extras_url is not None: - repos += [Repo("extras", extras_url, gpgurl)] + repos += [Repo("extras", extras_url, [gpgurl])] if crb_url is not None: - repos += [Repo("crb", crb_url, gpgurl)] + repos += [Repo("crb", crb_url, [gpgurl])] if powertools_url is not None: - repos += [Repo("powertools", powertools_url, gpgurl)] + repos += [Repo("powertools", powertools_url, [gpgurl])] repos += cls._epel_repos(config) return repos @@ -213,13 +213,13 @@ class CentosInstaller(DistributionInstaller): extras_url = "metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-$stream&arch=$basearch&protocol=https,http" crb_url = "metalink=https://mirrors.centos.org/metalink?repo=centos-crb-$stream&arch=$basearch&protocol=https,http" - repos = [Repo("appstream", appstream_url, gpgurl)] + repos = [Repo("appstream", appstream_url, [gpgurl])] if baseos_url is not None: - repos += [Repo("baseos", baseos_url, gpgurl)] + repos += [Repo("baseos", baseos_url, [gpgurl])] if extras_url is not None: - repos += [Repo("extras", extras_url, extras_gpgurl)] + repos += [Repo("extras", extras_url, [extras_gpgurl])] if crb_url is not None: - repos += [Repo("crb", crb_url, gpgurl)] + repos += [Repo("crb", crb_url, [gpgurl])] repos += cls._epel_repos(config) return repos diff --git a/mkosi/distributions/fedora.py b/mkosi/distributions/fedora.py index 522f9d757..12a6e5379 100644 --- a/mkosi/distributions/fedora.py +++ b/mkosi/distributions/fedora.py @@ -55,9 +55,9 @@ class FedoraInstaller(DistributionInstaller): # See: https://fedoraproject.org/security/ gpgurl = "https://fedoraproject.org/fedora.gpg" - repos = [Repo("fedora", release_url, gpgurl)] + repos = [Repo("fedora", release_url, [gpgurl])] if updates_url is not None: - repos += [Repo("updates", updates_url, gpgurl)] + repos += [Repo("updates", updates_url, [gpgurl])] setup_dnf(state, repos) invoke_dnf(state, "install", packages, apivfs=apivfs) @@ -89,11 +89,11 @@ def url_exists(url: str) -> bool: class Repo(NamedTuple): id: str url: str - gpgurl: str + gpgurls: list[str] enabled: bool = True -def setup_dnf(state: MkosiState, repos: Sequence[Repo] = ()) -> None: +def setup_dnf(state: MkosiState, repos: Sequence[Repo]) -> None: with state.workspace.joinpath("dnf.conf").open("w") as f: for repo in repos: f.write( @@ -102,13 +102,16 @@ def setup_dnf(state: MkosiState, repos: Sequence[Repo] = ()) -> None: [{repo.id}] name={repo.id} {repo.url} - gpgkey={repo.gpgurl} gpgcheck=1 enabled={int(repo.enabled)} """ ) ) + for i, url in enumerate(repo.gpgurls): + f.write("gpgkey=" if i == 0 else len("gpgkey=") * " ") + f.write(f"{url}\n") + def invoke_dnf( state: MkosiState, diff --git a/mkosi/distributions/mageia.py b/mkosi/distributions/mageia.py index c9e09b17f..73432bdb9 100644 --- a/mkosi/distributions/mageia.py +++ b/mkosi/distributions/mageia.py @@ -40,9 +40,9 @@ class MageiaInstaller(DistributionInstaller): gpgurl = f"https://mirrors.kernel.org/mageia/distrib/{release}/{state.config.architecture}/media/core/release/media_info/pubkey" - repos = [Repo(f"mageia-{release}", release_url, gpgurl)] + repos = [Repo(f"mageia-{release}", release_url, [gpgurl])] if updates_url is not None: - repos += [Repo(f"mageia-{release}-updates", updates_url, gpgurl)] + repos += [Repo(f"mageia-{release}-updates", updates_url, [gpgurl])] setup_dnf(state, repos) invoke_dnf(state, "install", packages, apivfs=apivfs) diff --git a/mkosi/distributions/openmandriva.py b/mkosi/distributions/openmandriva.py index 6954af173..dd7f9f42c 100644 --- a/mkosi/distributions/openmandriva.py +++ b/mkosi/distributions/openmandriva.py @@ -41,9 +41,9 @@ class OpenmandrivaInstaller(DistributionInstaller): gpgurl = "https://raw.githubusercontent.com/OpenMandrivaAssociation/openmandriva-repos/master/RPM-GPG-KEY-OpenMandriva" - repos = [Repo("openmandriva", release_url, gpgurl)] + repos = [Repo("openmandriva", release_url, [gpgurl])] if updates_url is not None: - repos += [Repo("updates", updates_url, gpgurl)] + repos += [Repo("updates", updates_url, [gpgurl])] setup_dnf(state, repos) invoke_dnf(state, "install", packages, apivfs=apivfs)