from mkosi.installer import PackageManager
from mkosi.installer.pacman import Pacman
from mkosi.log import die
+from mkosi.util import listify
class Installer(DistributionInstaller):
Pacman.invoke(context, "--remove", ["--nosave", "--recursive"], packages)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[Pacman.Repository]:
if context.config.local_mirror:
yield Pacman.Repository("core", context.config.local_mirror)
from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
from mkosi.log import complete_step, die
from mkosi.tree import rmtree
+from mkosi.util import listify
from mkosi.versioncomp import GenericVersion
)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
if context.config.local_mirror:
yield from cls.repository_variants(context, "AppStream")
from mkosi.installer.apt import Apt
from mkosi.log import die
from mkosi.run import run
-from mkosi.util import umask
+from mkosi.util import listify, umask
class Installer(DistributionInstaller):
return Apt
@staticmethod
+ @listify
def repositories(context: Context, local: bool = True) -> Iterable[Apt.Repository]:
types = ("deb", "deb-src")
components = ("main", *context.config.repositories)
return
mirror = context.config.mirror or "http://deb.debian.org/debian"
- signedby = "/usr/share/keyrings/debian-archive-keyring.gpg"
+ signedby = Path("/usr/share/keyrings/debian-archive-keyring.gpg")
yield Apt.Repository(
types=types,
from mkosi.installer.dnf import Dnf
from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
from mkosi.log import die
+from mkosi.util import listify
class Installer(DistributionInstaller):
Dnf.invoke(context, "remove", packages)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
gpgurls = (
find_rpm_gpgkey(
from mkosi.distributions import Distribution, fedora, join_mirror
from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
from mkosi.log import die
+from mkosi.util import listify
class Installer(fedora.Installer):
shutil.copy2(d, vmlinuz)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
gpgurls = (
find_rpm_gpgkey(
from mkosi.distributions import Distribution, fedora, join_mirror
from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
from mkosi.log import die
+from mkosi.util import listify
class Installer(fedora.Installer):
shutil.copy2(d, vmlinuz)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
mirror = context.config.mirror or "http://mirror.openmandriva.org"
from mkosi.log import die
from mkosi.run import find_binary, run
from mkosi.sandbox import finalize_crypto_mounts
+from mkosi.util import listify
class Installer(DistributionInstaller):
Dnf.invoke(context, "remove", packages)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
zypper = find_binary("zypper", root=context.config.tools())
from mkosi.distributions import centos, join_mirror
from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
from mkosi.log import die
+from mkosi.util import listify
class Installer(centos.Installer):
)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
yield from cls.repository_variants(context, "baseos")
yield from cls.repository_variants(context, "appstream")
from mkosi.context import Context
from mkosi.distributions import centos, join_mirror
from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
+from mkosi.util import listify
class Installer(centos.Installer):
)
@classmethod
+ @listify
def repositories(cls, context: Context) -> Iterable[RpmRepository]:
yield from cls.repository_variants(context, "baseos")
yield from cls.repository_variants(context, "appstream")
# SPDX-License-Identifier: LGPL-2.1+
from collections.abc import Iterable
+from pathlib import Path
from mkosi.config import Architecture
from mkosi.context import Context
from mkosi.distributions import debian
from mkosi.installer.apt import Apt
+from mkosi.util import listify
class Installer(debian.Installer):
return "lunar"
@staticmethod
+ @listify
def repositories(context: Context, local: bool = True) -> Iterable[Apt.Repository]:
types = ("deb", "deb-src")
else:
mirror = context.config.mirror or "http://ports.ubuntu.com"
- signedby = "/usr/share/keyrings/ubuntu-archive-keyring.gpg"
+ signedby = Path("/usr/share/keyrings/ubuntu-archive-keyring.gpg")
yield Apt.Repository(
types=types,
from mkosi.config import Config
from mkosi.context import Context
from mkosi.installer import PackageManager
+from mkosi.log import die
from mkosi.mounts import finalize_ephemeral_source_mounts
from mkosi.run import find_binary, run
from mkosi.sandbox import apivfs_cmd
url: str
suite: str
components: tuple[str, ...]
- signedby: Optional[str]
+ signedby: Optional[Path]
def __str__(self) -> str:
return textwrap.dedent(
sources = context.pkgmngr / "etc/apt/sources.list.d/mkosi.sources"
if not sources.exists():
+ for repo in repos:
+ if repo.signedby and not repo.signedby.exists():
+ die(
+ f"Keyring for repo {repo.url} not found at {repo.signedby}",
+ hint="Make sure the right keyring package (e.g. debian-archive-keyring or ubuntu-keyring) is "
+ "installed",
+ )
+
with sources.open("w") as f:
for repo in repos:
f.write(str(repo))
return functools.update_wrapper(wrapper, f)
+def listify(f: Callable[..., Iterable[T]]) -> Callable[..., list[T]]:
+ def wrapper(*args: Any, **kwargs: Any) -> list[T]:
+ return list(f(*args, **kwargs))
+
+ return functools.update_wrapper(wrapper, f)
+
+
@dictify
def read_env_file(path: Path) -> Iterator[tuple[str, str]]:
with path.open() as f: