]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Allow passing multiple GPG urls
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 3 May 2023 11:33:14 +0000 (13:33 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 3 May 2023 17:33:28 +0000 (19:33 +0200)
mkosi/distributions/centos.py
mkosi/distributions/fedora.py
mkosi/distributions/mageia.py
mkosi/distributions/openmandriva.py

index 4a0a3a172bf3065401751d20de466961fcfeecc7..c9b3e6a3e322ccf215a6e204ffcd8588d48b14ad 100644 (file)
@@ -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
index 522f9d757a6d4f833e090b26d0f53469685d02fe..12a6e537976fdf7577150b9120978e5514324a12 100644 (file)
@@ -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,
index c9e09b17fec0a1dc5c3f469eb79e959e1920bf4a..73432bdb92d564c2172d724dfa54f935e538565f 100644 (file)
@@ -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)
index 6954af173143e285cbc10bcff66df8b1ccd7748a..dd7f9f42c986b075abafd2f064f74bc63316cbfb 100644 (file)
@@ -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)