]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
distributions: rename all installers to "Installer"
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 28 Sep 2023 12:39:57 +0000 (14:39 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 28 Sep 2023 14:08:26 +0000 (16:08 +0200)
We were doing "double namespacing": "centos.CentosInstaller",
"ubuntu.UbuntuInstaller", etc. Let's simplify things by dropping the second
name. This avoids the awkward issue how capitalize the names of distributions
that already have capitals in their name, e.g. CentoOS, or dashes in the name,
e.g. RHEL-UBI. The one call site where we import the right installer becomes
simpler.

In Distribution.installer(), try..except is replaced by assert. If the
installer class for a distro is missing, then it's a programming error and not
not something we should suppress.

12 files changed:
mkosi/distributions/__init__.py
mkosi/distributions/alma.py
mkosi/distributions/arch.py
mkosi/distributions/centos.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/rocky.py
mkosi/distributions/ubuntu.py

index d617318fc87894538f877f0354d94d85ba040cc6..e1af068c45e281fcc007c554cdcc69542470f765 100644 (file)
@@ -7,7 +7,6 @@ from collections.abc import Sequence
 from typing import TYPE_CHECKING, Optional, cast
 
 from mkosi.architecture import Architecture
-from mkosi.log import die
 from mkosi.util import StrEnum, read_os_release
 
 if TYPE_CHECKING:
@@ -124,14 +123,11 @@ class Distribution(StrEnum):
         return self.installer().tools_tree_packages()
 
     def installer(self) -> type[DistributionInstaller]:
-        try:
-            mod = importlib.import_module(f"mkosi.distributions.{self}")
-            installer = getattr(mod, f"{str(self).title().replace('_','')}Installer")
-            if not issubclass(installer, DistributionInstaller):
-                die(f"Distribution installer for {self} is not a subclass of DistributionInstaller")
-            return cast(type[DistributionInstaller], installer)
-        except (ImportError, AttributeError):
-            die("No installer for this distribution.")
+        modname = str(self).replace('-', '_')
+        mod = importlib.import_module(f"mkosi.distributions.{modname}")
+        installer = getattr(mod, "Installer")
+        assert issubclass(installer, DistributionInstaller)
+        return cast(type[DistributionInstaller], installer)
 
 
 def detect_distribution() -> tuple[Optional[Distribution], Optional[str]]:
index 921e39f81ee2528e82a5f09ed2d7a412811e6c8b..dfe4c0bd13a7e5651458997883504b1f233a86b8 100644 (file)
@@ -1,11 +1,11 @@
 # SPDX-License-Identifier: LGPL-2.1+
 
 from mkosi.config import MkosiConfig
-from mkosi.distributions.centos import CentosInstaller
+from mkosi.distributions import centos
 from mkosi.installer.dnf import Repo
 
 
-class AlmaInstaller(CentosInstaller):
+class Installer(centos.Installer):
     @staticmethod
     def gpgurls() -> tuple[str, ...]:
         return ("https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux-$releasever",)
index aae6e1202b5488f48122846ab55885cbd675a142..4818e96708d0cf1ccbf85deef0c2682f95fe0a9f 100644 (file)
@@ -9,7 +9,7 @@ from mkosi.log import die
 from mkosi.state import MkosiState
 
 
-class ArchInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "ext4"
index 22dbd5935f5208e5b78c73900d5640b2bec6da4e..13413e1fbd33c61ce1df28efeaa999da91d4d9ca 100644 (file)
@@ -33,7 +33,7 @@ def join_mirror(config: MkosiConfig, link: str) -> str:
     return urllib.parse.urljoin(config.mirror, link)
 
 
-class CentosInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "xfs"
index d5d2d14063403ca78c3e6e68d718d236b8299d59..9749c9ca06e3f6f8c8f63debd1251ac3914aaee5 100644 (file)
@@ -15,7 +15,7 @@ from mkosi.state import MkosiState
 from mkosi.util import umask
 
 
-class DebianInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "ext4"
index d2645f3c9b72b25fe80b08941ca526528e2b87dc..5e58c1a60330985b4ec2d4f54219cfdc8fd10d65 100644 (file)
@@ -10,7 +10,7 @@ from mkosi.log import die
 from mkosi.state import MkosiState
 
 
-class FedoraInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "btrfs"
index 16cfe9cc0600a53c47111b3810a330ebe9231da1..a286b9d5dd4426bc3280575060c1354e560e0cbb 100644 (file)
@@ -57,7 +57,7 @@ def invoke_emerge(state: MkosiState, packages: Sequence[str] = (), apivfs: bool
     )
 
 
-class GentooInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "btrfs"
index 969af9b346c4a114c6a14b7b4950221609709b5e..d7390881bcea50be9cc219b875710aba390dd5f6 100644 (file)
@@ -9,7 +9,7 @@ from mkosi.log import die
 from mkosi.state import MkosiState
 
 
-class MageiaInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "ext4"
index d6c39397dc8c9d6c9256b19208c74f9796db1b8a..abf9e4a32f587bed421ac836a522043c589312c8 100644 (file)
@@ -9,7 +9,7 @@ from mkosi.log import die
 from mkosi.state import MkosiState
 
 
-class OpenmandrivaInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "ext4"
index e9f381069020a5e2a6e00749be51613448109ce0..d4fed462b58a4cc343d81ac9aab285d5b550f80b 100644 (file)
@@ -13,7 +13,7 @@ from mkosi.log import die
 from mkosi.state import MkosiState
 
 
-class OpensuseInstaller(DistributionInstaller):
+class Installer(DistributionInstaller):
     @classmethod
     def filesystem(cls) -> str:
         return "btrfs"
index ad7cb58c179116d1569686de4f796d89a419db99..9885751846d4290b3c7d4925a3d2fd77bdb02ce7 100644 (file)
@@ -1,11 +1,11 @@
 # SPDX-License-Identifier: LGPL-2.1+
 
 from mkosi.config import MkosiConfig
-from mkosi.distributions.centos import CentosInstaller
+from mkosi.distributions import centos
 from mkosi.installer.dnf import Repo
 
 
-class RockyInstaller(CentosInstaller):
+class Installer(centos.Installer):
     @staticmethod
     def gpgurls() -> tuple[str, ...]:
         return ("https://download.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-$releasever",)
index 8d3c724f11e574a0795ba84d1b9be43d76f3a051..16f3f4cb4c3568f49341b8f4b8bf8b69eb27096c 100644 (file)
@@ -1,11 +1,11 @@
 # SPDX-License-Identifier: LGPL-2.1+
 
 from mkosi.architecture import Architecture
-from mkosi.distributions.debian import DebianInstaller
+from mkosi.distributions import debian
 from mkosi.state import MkosiState
 
 
-class UbuntuInstaller(DebianInstaller):
+class Installer(debian.Installer):
     @classmethod
     def default_release(cls) -> str:
         return "lunar"