from mkosi.context import Context
from mkosi.distributions import Distribution, DistributionInstaller, PackageType
from mkosi.installer import PackageManager
-from mkosi.installer.pacman import Pacman
+from mkosi.installer.pacman import Pacman, PacmanRepository
from mkosi.log import die
from mkosi.util import listify, sort_packages
@classmethod
@listify
- def repositories(cls, context: Context) -> Iterable[Pacman.Repository]:
+ def repositories(cls, context: Context) -> Iterable[PacmanRepository]:
if context.config.local_mirror:
- yield Pacman.Repository("core", context.config.local_mirror)
+ yield PacmanRepository("core", context.config.local_mirror)
else:
if context.config.architecture.is_arm_variant():
url = f"{context.config.mirror or 'http://mirror.archlinuxarm.org'}/$arch/$repo"
] + ["core", "extra"]
for repo in repos:
- yield Pacman.Repository(repo, url)
+ yield PacmanRepository(repo, url)
@classmethod
def architecture(cls, arch: Architecture) -> str:
# SPDX-License-Identifier: LGPL-2.1+
+
+import dataclasses
import os
import shutil
import textwrap
from collections.abc import Iterable, Sequence
from pathlib import Path
-from typing import NamedTuple
from mkosi.config import Cacheonly, Config
from mkosi.context import Context
from mkosi.versioncomp import GenericVersion
-class Pacman(PackageManager):
- class Repository(NamedTuple):
- id: str
- url: str
+@dataclasses.dataclass(frozen=True)
+class PacmanRepository:
+ id: str
+ url: str
+
+class Pacman(PackageManager):
@classmethod
def executable(cls, config: Config) -> str:
return "pacman"
return mounts
@classmethod
- def setup(cls, context: Context, repositories: Iterable[Repository]) -> None:
+ def setup(cls, context: Context, repositories: Iterable[PacmanRepository]) -> None:
if context.config.repository_key_check:
sig_level = "Required DatabaseOptional"
else: