)
from mkosi.installer import PackageManager
from mkosi.installer.dnf import Dnf
-from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
+from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, fixup_rpmdb_location
from mkosi.log import complete_step, die
from mkosi.tree import rmtree
from mkosi.util import listify
def install(cls, context: Context) -> None:
# Make sure glibc-minimal-langpack is installed instead of glibc-all-langpacks.
cls.install_packages(context, ["filesystem", "glibc-minimal-langpack"], apivfs=False)
+ fixup_rpmdb_location(context)
# On Fedora, the default rpmdb has moved to /usr/lib/sysimage/rpm so if that's the case we
# need to move it back to /var/lib/rpm on CentOS.
)
from mkosi.installer import PackageManager
from mkosi.installer.dnf import Dnf
-from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
+from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, fixup_rpmdb_location
from mkosi.log import die
from mkosi.util import listify
@classmethod
def install(cls, context: Context) -> None:
cls.install_packages(context, ["filesystem"], apivfs=False)
+ fixup_rpmdb_location(context)
@classmethod
def install_packages(cls, context: Context, packages: Sequence[str], apivfs: bool = True) -> None:
from mkosi.distributions import Distribution, DistributionInstaller, PackageType
from mkosi.installer import PackageManager
from mkosi.installer.dnf import Dnf
-from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey
+from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, fixup_rpmdb_location
from mkosi.installer.zypper import Zypper
from mkosi.log import die
from mkosi.run import find_binary, run
@classmethod
def install(cls, context: Context) -> None:
cls.install_packages(context, ["filesystem", "distribution-release"], apivfs=False)
+ fixup_rpmdb_location(context)
@classmethod
def install_packages(cls, context: Context, packages: Sequence[str], apivfs: bool = True) -> None:
from mkosi.mounts import finalize_ephemeral_source_mounts
from mkosi.run import find_binary, run
from mkosi.sandbox import apivfs_cmd
-from mkosi.types import PathString
+from mkosi.types import CompletedProcess, PathString
from mkosi.util import sort_packages, umask
options: Sequence[str] = (),
apivfs: bool = True,
mounts: Sequence[PathString] = (),
- ) -> None:
+ ) -> CompletedProcess:
with finalize_ephemeral_source_mounts(context.config) as sources:
- run(
+ return run(
cls.cmd(context, "apt-get") + [operation, *options, *sort_packages(packages)],
sandbox=(
context.sandbox(
from mkosi.config import Cacheonly, Config
from mkosi.context import Context
from mkosi.installer import PackageManager
-from mkosi.installer.rpm import RpmRepository, fixup_rpmdb_location, rpm_cmd, setup_rpm
+from mkosi.installer.rpm import RpmRepository, rpm_cmd, setup_rpm
from mkosi.log import ARG_DEBUG
from mkosi.mounts import finalize_ephemeral_source_mounts
from mkosi.run import find_binary, run
from mkosi.sandbox import apivfs_cmd
-from mkosi.types import PathString
+from mkosi.types import CompletedProcess, PathString
from mkosi.util import sort_packages
packages: Iterable[str] = (),
options: Sequence[str] = (),
apivfs: bool = True,
- ) -> None:
- with finalize_ephemeral_source_mounts(context.config) as sources:
- run(
- cls.cmd(context) + [operation, *options, *sort_packages(packages)],
- sandbox=(
- context.sandbox(
- network=True,
- options=[
- "--bind", context.root, context.root,
- *cls.mounts(context),
- *sources,
- "--chdir", "/work/src",
- ],
- ) + (apivfs_cmd(context.root) if apivfs else [])
- ),
- env=context.config.environment,
- )
-
- fixup_rpmdb_location(context)
-
- # dnf interprets the log directory relative to the install root so there's nothing we can do but to remove the
- # log files from the install root afterwards.
- if (context.root / "var/log").exists():
- for p in (context.root / "var/log").iterdir():
- if any(p.name.startswith(prefix) for prefix in ("dnf", "hawkey", "yum")):
- p.unlink()
+ ) -> CompletedProcess:
+ try:
+ with finalize_ephemeral_source_mounts(context.config) as sources:
+ return run(
+ cls.cmd(context) + [operation, *options, *sort_packages(packages)],
+ sandbox=(
+ context.sandbox(
+ network=True,
+ options=[
+ "--bind", context.root, context.root,
+ *cls.mounts(context),
+ *sources,
+ "--chdir", "/work/src",
+ ],
+ ) + (apivfs_cmd(context.root) if apivfs else [])
+ ),
+ env=context.config.environment,
+ )
+ finally:
+ # dnf interprets the log directory relative to the install root so there's nothing we can do but to remove
+ # the log files from the install root afterwards.
+ if (context.root / "var/log").exists():
+ for p in (context.root / "var/log").iterdir():
+ if any(p.name.startswith(prefix) for prefix in ("dnf", "hawkey", "yum")):
+ p.unlink()
@classmethod
def sync(cls, context: Context, options: Sequence[str] = ()) -> None:
from mkosi.mounts import finalize_ephemeral_source_mounts
from mkosi.run import run
from mkosi.sandbox import apivfs_cmd
-from mkosi.types import PathString
+from mkosi.types import CompletedProcess, PathString
from mkosi.util import sort_packages, umask
from mkosi.versioncomp import GenericVersion
options: Sequence[str] = (),
packages: Sequence[str] = (),
apivfs: bool = True,
- ) -> None:
+ ) -> CompletedProcess:
with finalize_ephemeral_source_mounts(context.config) as sources:
- run(
+ return run(
cls.cmd(context) + [operation, *options, *sort_packages(packages)],
sandbox=(
context.sandbox(
from mkosi.config import Config, yes_no
from mkosi.context import Context
from mkosi.installer import PackageManager
-from mkosi.installer.rpm import RpmRepository, fixup_rpmdb_location, rpm_cmd, setup_rpm
+from mkosi.installer.rpm import RpmRepository, rpm_cmd, setup_rpm
from mkosi.mounts import finalize_ephemeral_source_mounts
from mkosi.run import run
from mkosi.sandbox import apivfs_cmd
-from mkosi.types import PathString
+from mkosi.types import CompletedProcess, PathString
from mkosi.util import sort_packages
*,
options: Sequence[str] = (),
apivfs: bool = True,
- ) -> None:
+ ) -> CompletedProcess:
with finalize_ephemeral_source_mounts(context.config) as sources:
- run(
+ return run(
cls.cmd(context) + [operation, *options, *sort_packages(packages)],
sandbox=(
context.sandbox(
env=context.config.environment,
)
- fixup_rpmdb_location(context)
-
@classmethod
def sync(cls, context: Context) -> None:
cls.invoke(context, "refresh", apivfs=False)