backend.py is a horrible name, let's use util.py instead.
from textwrap import dedent
from typing import Callable, ContextManager, Optional, TextIO, TypeVar, Union, cast
-from mkosi.backend import (
- Compression,
- Distribution,
- ManifestFormat,
- MkosiConfig,
- MkosiState,
- OutputFormat,
- Verb,
- current_user,
- flatten,
- format_rlimit,
- is_dnf_distribution,
- patch_file,
- set_umask,
- tmp_dir,
-)
from mkosi.install import add_dropin_config_from_resource, copy_path, flock
from mkosi.log import ARG_DEBUG, Style, color_error, complete_step, die, log_step
from mkosi.manifest import GenericVersion, Manifest
spawn,
)
from mkosi.types import PathString
+from mkosi.util import (
+ Compression,
+ Distribution,
+ ManifestFormat,
+ MkosiConfig,
+ MkosiState,
+ OutputFormat,
+ Verb,
+ current_user,
+ flatten,
+ format_rlimit,
+ is_dnf_distribution,
+ patch_file,
+ set_umask,
+ tmp_dir,
+)
MKOSI_COMMANDS_NEED_BUILD = (Verb.shell, Verb.boot, Verb.qemu, Verb.serve)
MKOSI_COMMANDS_SUDO = (Verb.shell, Verb.boot)
from pathlib import Path
from typing import Any, Callable, Optional, Type, Union, cast
-from mkosi.backend import (
+from mkosi.log import Style, die
+from mkosi.pager import page
+from mkosi.util import (
Compression,
Distribution,
ManifestFormat,
detect_distribution,
flatten,
)
-from mkosi.log import Style, die
-from mkosi.pager import page
__version__ = "14"
from typing import TYPE_CHECKING
if TYPE_CHECKING:
- from mkosi.backend import MkosiState
+ from mkosi.util import MkosiState
class DistributionInstaller:
from collections.abc import Sequence
from textwrap import dedent
-from mkosi.backend import MkosiState, sort_packages
from mkosi.distributions import DistributionInstaller
from mkosi.run import run_with_apivfs
from mkosi.types import PathString
+from mkosi.util import MkosiState, sort_packages
class ArchInstaller(DistributionInstaller):
from collections.abc import Sequence
from pathlib import Path
-from mkosi.backend import Distribution, MkosiConfig, MkosiState
from mkosi.distributions import DistributionInstaller
from mkosi.distributions.fedora import Repo, invoke_dnf, setup_dnf
from mkosi.log import complete_step, die
from mkosi.remove import unlink_try_hard
+from mkosi.util import Distribution, MkosiConfig, MkosiState
def move_rpm_db(root: Path) -> None:
from pathlib import Path
from textwrap import dedent
-from mkosi.backend import MkosiState
from mkosi.distributions import DistributionInstaller
from mkosi.run import run, run_with_apivfs
from mkosi.types import CompletedProcess, PathString
+from mkosi.util import MkosiState
class DebianInstaller(DistributionInstaller):
from textwrap import dedent
from typing import Any, NamedTuple, Optional
-from mkosi.backend import Distribution, MkosiState, detect_distribution, sort_packages
from mkosi.distributions import DistributionInstaller
from mkosi.remove import unlink_try_hard
from mkosi.run import run_with_apivfs
+from mkosi.util import Distribution, MkosiState, detect_distribution, sort_packages
class FedoraInstaller(DistributionInstaller):
from pathlib import Path
from textwrap import dedent
-from mkosi.backend import MkosiState, safe_tar_extract
from mkosi.distributions import DistributionInstaller
from mkosi.install import copy_path, flock
from mkosi.log import ARG_DEBUG, complete_step, die, log_step
from mkosi.remove import unlink_try_hard
from mkosi.run import run_workspace_command
+from mkosi.util import MkosiState, safe_tar_extract
ARCHITECTURES = {
"x86_64": ("amd64", "arch/x86/boot/bzImage"),
from collections.abc import Sequence
from pathlib import Path
-from mkosi.backend import MkosiState
from mkosi.distributions import DistributionInstaller
from mkosi.distributions.fedora import Repo, invoke_dnf, setup_dnf
+from mkosi.util import MkosiState
class MageiaInstaller(DistributionInstaller):
from collections.abc import Sequence
from pathlib import Path
-from mkosi.backend import MkosiState
from mkosi.distributions import DistributionInstaller
from mkosi.distributions.fedora import Repo, invoke_dnf, setup_dnf
+from mkosi.util import MkosiState
class OpenmandrivaInstaller(DistributionInstaller):
from pathlib import Path
from textwrap import dedent
-from mkosi.backend import MkosiState
from mkosi.distributions import DistributionInstaller
from mkosi.run import run_with_apivfs
from mkosi.types import PathString
+from mkosi.util import MkosiState
class OpensuseInstaller(DistributionInstaller):
# SPDX-License-Identifier: LGPL-2.1+
-from mkosi.backend import MkosiState
from mkosi.distributions.debian import DebianInstaller
+from mkosi.util import MkosiState
class UbuntuInstaller(DebianInstaller):
from textwrap import dedent
from typing import IO, Any, Optional
-from mkosi.backend import Distribution, ManifestFormat, MkosiConfig, PackageType
from mkosi.run import run
+from mkosi.util import Distribution, ManifestFormat, MkosiConfig, PackageType
@dataclasses.dataclass
from types import TracebackType
from typing import Any, Callable, Mapping, Optional, Sequence, Type, TypeVar
-from mkosi.backend import MkosiState, current_user
from mkosi.log import ARG_DEBUG, die
from mkosi.types import _FILE, CompletedProcess, PathString, Popen
+from mkosi.util import MkosiState, current_user
CLONE_NEWNS = 0x00020000
CLONE_NEWUSER = 0x10000000
import pytest
import mkosi
-from mkosi.backend import Compression, Distribution, MkosiConfig, Verb
+from mkosi.util import Compression, Distribution, MkosiConfig, Verb
from mkosi.config import MkosiConfigParser
import pytest
-from mkosi.backend import (
+from mkosi.util import (
Distribution,
PackageType,
safe_tar_extract,