]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
arch: Move arch specific configuration out of setup_pacman()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 10 Dec 2023 10:20:56 +0000 (11:20 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 10 Dec 2023 10:20:56 +0000 (11:20 +0100)
Let's make setup_pacman() about pacman and not about Arch.

mkosi/distributions/arch.py
mkosi/installer/pacman.py

index 7f9877284293b06eca5885a4d529d483379174b0..3c54a9e91bc3a1e1bf548be8edc726f724b0f078 100644 (file)
@@ -5,7 +5,7 @@ from collections.abc import Sequence
 from mkosi.architecture import Architecture
 from mkosi.config import ConfigFeature
 from mkosi.distributions import Distribution, DistributionInstaller, PackageType
-from mkosi.installer.pacman import invoke_pacman, setup_pacman
+from mkosi.installer.pacman import PacmanRepository, invoke_pacman, setup_pacman
 from mkosi.log import die
 from mkosi.state import MkosiState
 
@@ -75,7 +75,32 @@ class Installer(DistributionInstaller):
 
     @classmethod
     def setup(cls, state: MkosiState) -> None:
-        setup_pacman(state)
+        if state.config.local_mirror:
+            repos = [PacmanRepository("core", state.config.local_mirror)]
+        else:
+            repos = []
+
+            if state.config.architecture == Architecture.arm64:
+                url = f"{state.config.mirror or 'http://mirror.archlinuxarm.org'}/$arch/$repo"
+            else:
+                url = f"{state.config.mirror or 'https://geo.mirror.pkgbuild.com'}/$repo/os/$arch"
+
+            # Testing repositories have to go before regular ones to to take precedence.
+            for id in (
+                "core-testing",
+                "core-testing-debug",
+                "extra-testing",
+                "extra-testing-debug",
+                "core-debug",
+                "extra-debug",
+            ):
+                if id in state.config.repositories:
+                    repos += [PacmanRepository(id, url)]
+
+            for id in ("core", "extra"):
+                repos += [PacmanRepository(id, url)]
+
+        setup_pacman(state, repos)
 
     @classmethod
     def install(cls, state: MkosiState) -> None:
index 5f63d5fccb6a33eb2dbea93a26373ea4977122c1..a4d4d77b1ba474d46cc15ab589cd0ff4fbe21117 100644 (file)
@@ -1,24 +1,21 @@
 # SPDX-License-Identifier: LGPL-2.1+
 import textwrap
-from collections.abc import Sequence
+from collections.abc import Iterable, Sequence
 from pathlib import Path
+from typing import NamedTuple
 
-from mkosi.architecture import Architecture
 from mkosi.run import apivfs_cmd, bwrap
 from mkosi.state import MkosiState
 from mkosi.types import PathString
 from mkosi.util import sort_packages, umask
 
 
-def setup_pacman(state: MkosiState) -> None:
-    if state.config.local_mirror:
-        server = f"Server = {state.config.local_mirror}"
-    else:
-        if state.config.architecture == Architecture.arm64:
-            server = f"Server = {state.config.mirror or 'http://mirror.archlinuxarm.org'}/$arch/$repo"
-        else:
-            server = f"Server = {state.config.mirror or 'https://geo.mirror.pkgbuild.com'}/$repo/os/$arch"
+class PacmanRepository(NamedTuple):
+    id: str
+    url: str
+
 
+def setup_pacman(state: MkosiState, repositories: Iterable[PacmanRepository]) -> None:
     if state.config.repository_key_check:
         sig_level = "Required DatabaseOptional"
     else:
@@ -36,25 +33,6 @@ def setup_pacman(state: MkosiState) -> None:
 
     config.parent.mkdir(exist_ok=True, parents=True)
 
-    repos = []
-
-    # Testing repositories have to go before regular ones to to take precedence.
-    if not state.config.local_mirror:
-        for repo in (
-            "core-testing",
-            "core-testing-debug",
-            "extra-testing",
-            "extra-testing-debug",
-            "core-debug",
-            "extra-debug",
-        ):
-            if repo in state.config.repositories:
-                repos += [repo]
-
-    repos += ["core"]
-    if not state.config.local_mirror:
-        repos += ["extra"]
-
     with config.open("w") as f:
         f.write(
             textwrap.dedent(
@@ -67,13 +45,13 @@ def setup_pacman(state: MkosiState) -> None:
             )
         )
 
-        for repo in repos:
+        for repo in repositories:
             f.write(
                 textwrap.dedent(
                     f"""\
 
-                    [{repo}]
-                    {server}
+                    [{repo.id}]
+                    Server = {repo.url}
                     """
                 )
             )