]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Move Architecture enum to config.py
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 17 Dec 2023 17:16:54 +0000 (18:16 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 18 Dec 2023 11:19:13 +0000 (12:19 +0100)
All our other config enums live there as well so let's colocate
the Architecture enum with them. It also makes the next commit
easier.

17 files changed:
mkosi/__init__.py
mkosi/architecture.py [deleted file]
mkosi/config.py
mkosi/distributions/__init__.py
mkosi/distributions/arch.py
mkosi/distributions/centos.py
mkosi/distributions/custom.py
mkosi/distributions/debian.py
mkosi/distributions/fedora.py
mkosi/distributions/gentoo.py
mkosi/distributions/mageia.py
mkosi/distributions/openmandriva.py
mkosi/distributions/opensuse.py
mkosi/distributions/ubuntu.py
mkosi/qemu.py
tests/test_config.py
tests/test_json.py

index 3f150eb08ee3e12b2f89aedb7e22dbc41f938d71..7ec09394eeca4e8dec11646b8d05258c606013f9 100644 (file)
@@ -22,10 +22,10 @@ from pathlib import Path
 from typing import Optional, TextIO, Union, cast
 
 import mkosi.resources
-from mkosi.architecture import Architecture
 from mkosi.archive import extract_tar, make_cpio, make_tar
 from mkosi.burn import run_burn
 from mkosi.config import (
+    Architecture,
     BiosBootloader,
     Bootloader,
     Compression,
diff --git a/mkosi/architecture.py b/mkosi/architecture.py
deleted file mode 100644 (file)
index d020aa4..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1+
-
-import enum
-import platform
-from typing import Optional
-
-from mkosi.log import die
-from mkosi.util import StrEnum
-
-
-class Architecture(StrEnum):
-    alpha       = enum.auto()
-    arc         = enum.auto()
-    arm         = enum.auto()
-    arm64       = enum.auto()
-    ia64        = enum.auto()
-    loongarch64 = enum.auto()
-    mips_le     = enum.auto()
-    mips64_le   = enum.auto()
-    parisc      = enum.auto()
-    ppc         = enum.auto()
-    ppc64       = enum.auto()
-    ppc64_le    = enum.auto()
-    riscv32     = enum.auto()
-    riscv64     = enum.auto()
-    s390        = enum.auto()
-    s390x       = enum.auto()
-    tilegx      = enum.auto()
-    x86         = enum.auto()
-    x86_64      = enum.auto()
-
-    @staticmethod
-    def from_uname(s: str) -> "Architecture":
-        a = {
-            "aarch64"     : Architecture.arm64,
-            "aarch64_be"  : Architecture.arm64,
-            "armv8l"      : Architecture.arm,
-            "armv8b"      : Architecture.arm,
-            "armv7ml"     : Architecture.arm,
-            "armv7mb"     : Architecture.arm,
-            "armv7l"      : Architecture.arm,
-            "armv7b"      : Architecture.arm,
-            "armv6l"      : Architecture.arm,
-            "armv6b"      : Architecture.arm,
-            "armv5tl"     : Architecture.arm,
-            "armv5tel"    : Architecture.arm,
-            "armv5tejl"   : Architecture.arm,
-            "armv5tejb"   : Architecture.arm,
-            "armv5teb"    : Architecture.arm,
-            "armv5tb"     : Architecture.arm,
-            "armv4tl"     : Architecture.arm,
-            "armv4tb"     : Architecture.arm,
-            "armv4l"      : Architecture.arm,
-            "armv4b"      : Architecture.arm,
-            "alpha"       : Architecture.alpha,
-            "arc"         : Architecture.arc,
-            "arceb"       : Architecture.arc,
-            "x86_64"      : Architecture.x86_64,
-            "i686"        : Architecture.x86,
-            "i586"        : Architecture.x86,
-            "i486"        : Architecture.x86,
-            "i386"        : Architecture.x86,
-            "ia64"        : Architecture.ia64,
-            "parisc64"    : Architecture.parisc,
-            "parisc"      : Architecture.parisc,
-            "loongarch64" : Architecture.loongarch64,
-            "mips64"      : Architecture.mips64_le,
-            "mips"        : Architecture.mips_le,
-            "ppc64le"     : Architecture.ppc64_le,
-            "ppc64"       : Architecture.ppc64,
-            "ppc"         : Architecture.ppc,
-            "riscv64"     : Architecture.riscv64,
-            "riscv32"     : Architecture.riscv32,
-            "riscv"       : Architecture.riscv64,
-            "s390x"       : Architecture.s390x,
-            "s390"        : Architecture.s390,
-            "tilegx"      : Architecture.tilegx,
-        }.get(s)
-
-        if not a:
-            die(f"Architecture {a} is not supported")
-
-        return a
-
-    def to_efi(self) -> Optional[str]:
-        return {
-            Architecture.x86_64      : "x64",
-            Architecture.x86         : "ia32",
-            Architecture.arm64       : "aa64",
-            Architecture.arm         : "arm",
-            Architecture.riscv64     : "riscv64",
-            Architecture.loongarch64 : "loongarch64",
-        }.get(self)
-
-
-    def to_qemu(self) -> str:
-        a = {
-            Architecture.alpha       : "alpha",
-            Architecture.arm         : "arm",
-            Architecture.arm64       : "aarch64",
-            Architecture.loongarch64 : "loongarch64",
-            Architecture.mips64_le   : "mips",
-            Architecture.mips_le     : "mips",
-            Architecture.parisc      : "hppa",
-            Architecture.ppc         : "ppc",
-            Architecture.ppc64       : "ppc",
-            Architecture.ppc64_le    : "ppc",
-            Architecture.riscv32     : "riscv32",
-            Architecture.riscv64     : "riscv64",
-            Architecture.s390x       : "s390x",
-            Architecture.x86         : "i386",
-            Architecture.x86_64      : "x86_64",
-        }.get(self)
-
-        if not a:
-            die(f"Architecture {self} not supported by QEMU")
-
-        return a
-
-    def default_serial_tty(self) -> str:
-        return {
-            Architecture.arm   : "ttyAMA0",
-            Architecture.arm64 : "ttyAMA0",
-            Architecture.s390  : "ttysclp0",
-            Architecture.s390x : "ttysclp0",
-        }.get(self, "ttyS0")
-
-    def supports_smbios(self) -> bool:
-        return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64)
-
-    def supports_fw_cfg(self) -> bool:
-        return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64)
-
-    def is_native(self) -> bool:
-        return self == self.native()
-
-    @classmethod
-    def native(cls) -> "Architecture":
-        return cls.from_uname(platform.machine())
-
index a0a1ed6ea07e5e44e972d33e0cd2ccd1ffb3be41..7a01198a864929095066a2105924297d441bbb13 100644 (file)
@@ -27,7 +27,6 @@ from collections.abc import Collection, Iterable, Iterator, Sequence
 from pathlib import Path
 from typing import Any, Callable, Optional, TypeVar, Union, cast
 
-from mkosi.architecture import Architecture
 from mkosi.distributions import Distribution, detect_distribution
 from mkosi.log import ARG_DEBUG, ARG_DEBUG_SHELL, Style, die
 from mkosi.pager import page
@@ -225,6 +224,137 @@ class QemuFirmware(StrEnum):
     bios   = enum.auto()
 
 
+class Architecture(StrEnum):
+    alpha       = enum.auto()
+    arc         = enum.auto()
+    arm         = enum.auto()
+    arm64       = enum.auto()
+    ia64        = enum.auto()
+    loongarch64 = enum.auto()
+    mips_le     = enum.auto()
+    mips64_le   = enum.auto()
+    parisc      = enum.auto()
+    ppc         = enum.auto()
+    ppc64       = enum.auto()
+    ppc64_le    = enum.auto()
+    riscv32     = enum.auto()
+    riscv64     = enum.auto()
+    s390        = enum.auto()
+    s390x       = enum.auto()
+    tilegx      = enum.auto()
+    x86         = enum.auto()
+    x86_64      = enum.auto()
+
+    @staticmethod
+    def from_uname(s: str) -> "Architecture":
+        a = {
+            "aarch64"     : Architecture.arm64,
+            "aarch64_be"  : Architecture.arm64,
+            "armv8l"      : Architecture.arm,
+            "armv8b"      : Architecture.arm,
+            "armv7ml"     : Architecture.arm,
+            "armv7mb"     : Architecture.arm,
+            "armv7l"      : Architecture.arm,
+            "armv7b"      : Architecture.arm,
+            "armv6l"      : Architecture.arm,
+            "armv6b"      : Architecture.arm,
+            "armv5tl"     : Architecture.arm,
+            "armv5tel"    : Architecture.arm,
+            "armv5tejl"   : Architecture.arm,
+            "armv5tejb"   : Architecture.arm,
+            "armv5teb"    : Architecture.arm,
+            "armv5tb"     : Architecture.arm,
+            "armv4tl"     : Architecture.arm,
+            "armv4tb"     : Architecture.arm,
+            "armv4l"      : Architecture.arm,
+            "armv4b"      : Architecture.arm,
+            "alpha"       : Architecture.alpha,
+            "arc"         : Architecture.arc,
+            "arceb"       : Architecture.arc,
+            "x86_64"      : Architecture.x86_64,
+            "i686"        : Architecture.x86,
+            "i586"        : Architecture.x86,
+            "i486"        : Architecture.x86,
+            "i386"        : Architecture.x86,
+            "ia64"        : Architecture.ia64,
+            "parisc64"    : Architecture.parisc,
+            "parisc"      : Architecture.parisc,
+            "loongarch64" : Architecture.loongarch64,
+            "mips64"      : Architecture.mips64_le,
+            "mips"        : Architecture.mips_le,
+            "ppc64le"     : Architecture.ppc64_le,
+            "ppc64"       : Architecture.ppc64,
+            "ppc"         : Architecture.ppc,
+            "riscv64"     : Architecture.riscv64,
+            "riscv32"     : Architecture.riscv32,
+            "riscv"       : Architecture.riscv64,
+            "s390x"       : Architecture.s390x,
+            "s390"        : Architecture.s390,
+            "tilegx"      : Architecture.tilegx,
+        }.get(s)
+
+        if not a:
+            die(f"Architecture {a} is not supported")
+
+        return a
+
+    def to_efi(self) -> Optional[str]:
+        return {
+            Architecture.x86_64      : "x64",
+            Architecture.x86         : "ia32",
+            Architecture.arm64       : "aa64",
+            Architecture.arm         : "arm",
+            Architecture.riscv64     : "riscv64",
+            Architecture.loongarch64 : "loongarch64",
+        }.get(self)
+
+
+    def to_qemu(self) -> str:
+        a = {
+            Architecture.alpha       : "alpha",
+            Architecture.arm         : "arm",
+            Architecture.arm64       : "aarch64",
+            Architecture.loongarch64 : "loongarch64",
+            Architecture.mips64_le   : "mips",
+            Architecture.mips_le     : "mips",
+            Architecture.parisc      : "hppa",
+            Architecture.ppc         : "ppc",
+            Architecture.ppc64       : "ppc",
+            Architecture.ppc64_le    : "ppc",
+            Architecture.riscv32     : "riscv32",
+            Architecture.riscv64     : "riscv64",
+            Architecture.s390x       : "s390x",
+            Architecture.x86         : "i386",
+            Architecture.x86_64      : "x86_64",
+        }.get(self)
+
+        if not a:
+            die(f"Architecture {self} not supported by QEMU")
+
+        return a
+
+    def default_serial_tty(self) -> str:
+        return {
+            Architecture.arm   : "ttyAMA0",
+            Architecture.arm64 : "ttyAMA0",
+            Architecture.s390  : "ttysclp0",
+            Architecture.s390x : "ttysclp0",
+        }.get(self, "ttyS0")
+
+    def supports_smbios(self) -> bool:
+        return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64)
+
+    def supports_fw_cfg(self) -> bool:
+        return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64)
+
+    def is_native(self) -> bool:
+        return self == self.native()
+
+    @classmethod
+    def native(cls) -> "Architecture":
+        return cls.from_uname(platform.machine())
+
+
 def parse_boolean(s: str) -> bool:
     "Parse 1/true/yes/y/t/on as true and 0/false/no/n/f/off/None as false"
     s_l = s.lower()
index 75108f6c73d6cc24d1134e7b91315442b6ef1e7b..9050793c1cf15f940332fed2fa2522740980a065 100644 (file)
@@ -7,10 +7,10 @@ import urllib.parse
 from collections.abc import Sequence
 from typing import TYPE_CHECKING, Optional, cast
 
-from mkosi.architecture import Architecture
 from mkosi.util import StrEnum, read_os_release
 
 if TYPE_CHECKING:
+    from mkosi.config import Architecture
     from mkosi.state import MkosiState
 
 
@@ -48,8 +48,8 @@ class DistributionInstaller:
         return "ext4"
 
     @classmethod
-    def architecture(cls, arch: Architecture) -> str:
-        return str(arch)
+    def architecture(cls, arch: "Architecture") -> str:
+        raise NotImplementedError
 
     @classmethod
     def package_type(cls) -> PackageType:
@@ -129,7 +129,7 @@ class Distribution(StrEnum):
     def filesystem(self) -> str:
         return self.installer().filesystem()
 
-    def architecture(self, arch: Architecture) -> str:
+    def architecture(self, arch: "Architecture") -> str:
         return self.installer().architecture(arch)
 
     def package_type(self) -> PackageType:
index 80af9716fb9478e1a5c36ab01ee352e0b9a39fa6..43743014f6b3a8abbdf7d5eede3e08edb97eb652 100644 (file)
@@ -2,7 +2,7 @@
 
 from collections.abc import Sequence
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import Distribution, DistributionInstaller, PackageType
 from mkosi.installer.pacman import PacmanRepository, invoke_pacman, setup_pacman
 from mkosi.log import die
index bc8728428f7f61fb666e173e2b7cab2aa2eeb200..e50519162d76ca765fb5c2aff750e502b2dadc3a 100644 (file)
@@ -5,7 +5,7 @@ import shutil
 from collections.abc import Iterable, Sequence
 from pathlib import Path
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import (
     Distribution,
     DistributionInstaller,
index 37bbe3a90323790cbdf05de4e043b25e32ce8b99..bdcf3477759485bf8994e71d162d6c8c062478ea 100644 (file)
@@ -2,12 +2,17 @@
 
 from collections.abc import Sequence
 
+from mkosi.config import Architecture
 from mkosi.distributions import DistributionInstaller
 from mkosi.log import die
 from mkosi.state import MkosiState
 
 
 class Installer(DistributionInstaller):
+    @classmethod
+    def architecture(cls, arch: Architecture) -> str:
+        return str(arch)
+
     @classmethod
     def setup(cls, state: MkosiState) -> None:
         pass
index bcefb0f07eb531539d83d8d6819ec2adb075e00c..cfc8aa2e39ee2fc51bb7e9d0df0ad9a4b56a7592 100644 (file)
@@ -5,8 +5,8 @@ import tempfile
 from collections.abc import Sequence
 from pathlib import Path
 
-from mkosi.architecture import Architecture
 from mkosi.archive import extract_tar
+from mkosi.config import Architecture
 from mkosi.distributions import Distribution, DistributionInstaller, PackageType
 from mkosi.installer.apt import invoke_apt, setup_apt
 from mkosi.log import die
index 30fccda8074b3eac593956e861cf69e8af663f91..c7e05db799d9201713fe26232f3590bce4b7b394 100644 (file)
@@ -2,7 +2,7 @@
 
 from collections.abc import Sequence
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import (
     Distribution,
     DistributionInstaller,
index 83ebffcb6622d9dacfb4c4ccc80cbd7ebc5a7764..20e7b6cceaa97aa4c8a13a7467d83ed8029573af 100644 (file)
@@ -7,8 +7,8 @@ import urllib.request
 from collections.abc import Sequence
 from pathlib import Path
 
-from mkosi.architecture import Architecture
 from mkosi.archive import extract_tar
+from mkosi.config import Architecture
 from mkosi.distributions import (
     Distribution,
     DistributionInstaller,
index 075a73eb503ace9aae0e12e52033ca064020e183..c2a0c895efbe53991b8f6a9ea972746c87b3312e 100644 (file)
@@ -3,7 +3,7 @@
 import shutil
 from collections.abc import Sequence
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import (
     Distribution,
     DistributionInstaller,
index 0322abb5ebad7efb7ed166c9b7a657709a264cb4..a1ec839f2b2e7748e1237b4bb4314e262073aa5d 100644 (file)
@@ -3,7 +3,7 @@
 import shutil
 from collections.abc import Sequence
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import (
     Distribution,
     DistributionInstaller,
index 5e676f02042cc819b6845a05072219c97617daf6..6721b2fa4183c8b1224ccb651da8caab888e35bc 100644 (file)
@@ -5,7 +5,7 @@ import urllib.request
 import xml.etree.ElementTree as ElementTree
 from collections.abc import Sequence
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import Distribution, DistributionInstaller, PackageType
 from mkosi.installer.dnf import RpmRepository, invoke_dnf, setup_dnf
 from mkosi.installer.zypper import invoke_zypper, setup_zypper
index 2f8cd8055b53570416cb237d5284e36654c2579d..2042b7e95701af12dfc83d5a24690ab1f46bf243 100644 (file)
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: LGPL-2.1+
 
-from mkosi.architecture import Architecture
+from mkosi.config import Architecture
 from mkosi.distributions import debian
 from mkosi.state import MkosiState
 
index 611c043451a1c05911d350965538314a3d43bedd..088e7ad956d79141456d383485359a568e485345 100644 (file)
@@ -21,8 +21,8 @@ from collections.abc import Iterator, Mapping
 from pathlib import Path
 from typing import Optional
 
-from mkosi.architecture import Architecture
 from mkosi.config import (
+    Architecture,
     ConfigFeature,
     MkosiArgs,
     MkosiConfig,
index 94dcba4830eeea3472aec2f369bd005122952e51..0f36f9902d84efa14c985297a94070b5da5981dd 100644 (file)
@@ -10,8 +10,8 @@ from typing import Optional
 
 import pytest
 
-from mkosi.architecture import Architecture
 from mkosi.config import (
+    Architecture,
     Compression,
     ConfigFeature,
     ConfigTree,
index 7f452532e786cafaccb25842c1537e10eef48ae6..04e5b5cb921b6bf20d4f537ed337e3ce0cb125cb 100644 (file)
@@ -8,8 +8,8 @@ from typing import Optional
 
 import pytest
 
-from mkosi.architecture import Architecture
 from mkosi.config import (
+    Architecture,
     BiosBootloader,
     Bootloader,
     Compression,