From: Daan De Meyer Date: Sun, 10 Dec 2023 10:20:56 +0000 (+0100) Subject: arch: Move arch specific configuration out of setup_pacman() X-Git-Tag: v20~88^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9349236b6f91d032f09008af9a629ab9f2fbf1e5;p=thirdparty%2Fmkosi.git arch: Move arch specific configuration out of setup_pacman() Let's make setup_pacman() about pacman and not about Arch. --- diff --git a/mkosi/distributions/arch.py b/mkosi/distributions/arch.py index 7f9877284..3c54a9e91 100644 --- a/mkosi/distributions/arch.py +++ b/mkosi/distributions/arch.py @@ -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: diff --git a/mkosi/installer/pacman.py b/mkosi/installer/pacman.py index 5f63d5fcc..a4d4d77b1 100644 --- a/mkosi/installer/pacman.py +++ b/mkosi/installer/pacman.py @@ -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} """ ) )