From: Daan De Meyer Date: Sat, 2 Sep 2023 12:10:26 +0000 (+0200) Subject: Move default release logic to per distribution installer class X-Git-Tag: v16~17^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87a4e83d6361ea47dc66b7b2c97cd1c40ff17c23;p=thirdparty%2Fmkosi.git Move default release logic to per distribution installer class --- diff --git a/mkosi/config.py b/mkosi/config.py index 2da833d8c..486e260ae 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -290,18 +290,7 @@ def config_default_release(namespace: argparse.Namespace) -> str: if namespace.distribution == hd and hr is not None: return hr - return { - Distribution.fedora: "38", - Distribution.centos: "9", - Distribution.rocky: "9", - Distribution.alma: "9", - Distribution.mageia: "cauldron", - Distribution.debian: "testing", - Distribution.ubuntu: "lunar", - Distribution.opensuse: "tumbleweed", - Distribution.openmandriva: "cooker", - Distribution.gentoo: "17.1", - }.get(namespace.distribution, "rolling") + return cast(str, namespace.distribution.default_release()) def config_default_mirror(namespace: argparse.Namespace) -> Optional[str]: diff --git a/mkosi/distributions/__init__.py b/mkosi/distributions/__init__.py index 20d4d215b..7e2d837b9 100644 --- a/mkosi/distributions/__init__.py +++ b/mkosi/distributions/__init__.py @@ -50,6 +50,10 @@ class DistributionInstaller: def package_type(cls) -> PackageType: raise NotImplementedError() + @classmethod + def default_release(cls) -> str: + raise NotImplementedError() + class Distribution(StrEnum): fedora = enum.auto() @@ -101,6 +105,9 @@ class Distribution(StrEnum): def package_type(self) -> PackageType: return self.installer().package_type() + def default_release(self) -> str: + return self.installer().default_release() + def installer(self) -> Type[DistributionInstaller]: try: mod = importlib.import_module(f"mkosi.distributions.{self}") diff --git a/mkosi/distributions/arch.py b/mkosi/distributions/arch.py index c182ddfc0..9585a2336 100644 --- a/mkosi/distributions/arch.py +++ b/mkosi/distributions/arch.py @@ -18,6 +18,10 @@ class ArchInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.pkg + @classmethod + def default_release(cls) -> str: + return "rolling" + @classmethod def setup(cls, state: MkosiState) -> None: setup_pacman(state) diff --git a/mkosi/distributions/centos.py b/mkosi/distributions/centos.py index b547e3e53..5fe944743 100644 --- a/mkosi/distributions/centos.py +++ b/mkosi/distributions/centos.py @@ -38,6 +38,10 @@ class CentosInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.rpm + @classmethod + def default_release(cls) -> str: + return "9" + @classmethod def setup(cls, state: MkosiState) -> None: release = int(state.config.release) diff --git a/mkosi/distributions/debian.py b/mkosi/distributions/debian.py index b72aaf74b..803d0f253 100644 --- a/mkosi/distributions/debian.py +++ b/mkosi/distributions/debian.py @@ -24,6 +24,10 @@ class DebianInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.deb + @classmethod + def default_release(cls) -> str: + return "testing" + @staticmethod def repositories(state: MkosiState, local: bool = True) -> list[str]: assert state.config.mirror diff --git a/mkosi/distributions/fedora.py b/mkosi/distributions/fedora.py index 45d62e88f..76e15b3fb 100644 --- a/mkosi/distributions/fedora.py +++ b/mkosi/distributions/fedora.py @@ -19,6 +19,10 @@ class FedoraInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.rpm + @classmethod + def default_release(cls) -> str: + return "38" + @classmethod def setup(cls, state: MkosiState) -> None: # See: https://fedoraproject.org/security/ diff --git a/mkosi/distributions/gentoo.py b/mkosi/distributions/gentoo.py index fde88233f..f354a9dca 100644 --- a/mkosi/distributions/gentoo.py +++ b/mkosi/distributions/gentoo.py @@ -66,6 +66,10 @@ class GentooInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.ebuild + @classmethod + def default_release(cls) -> str: + return "17.1" + @classmethod def setup(cls, state: MkosiState) -> None: pass diff --git a/mkosi/distributions/mageia.py b/mkosi/distributions/mageia.py index b01484f00..f8db15c5f 100644 --- a/mkosi/distributions/mageia.py +++ b/mkosi/distributions/mageia.py @@ -18,6 +18,10 @@ class MageiaInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.rpm + @classmethod + def default_release(cls) -> str: + return "cauldron" + @classmethod def setup(cls, state: MkosiState) -> None: release = state.config.release.strip("'") diff --git a/mkosi/distributions/openmandriva.py b/mkosi/distributions/openmandriva.py index 6cc66e24b..a036948b8 100644 --- a/mkosi/distributions/openmandriva.py +++ b/mkosi/distributions/openmandriva.py @@ -18,6 +18,10 @@ class OpenmandrivaInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.rpm + @classmethod + def default_release(cls) -> str: + return "cooker" + @classmethod def setup(cls, state: MkosiState) -> None: release = state.config.release.strip("'") diff --git a/mkosi/distributions/opensuse.py b/mkosi/distributions/opensuse.py index 3a7e11b59..6d267023f 100644 --- a/mkosi/distributions/opensuse.py +++ b/mkosi/distributions/opensuse.py @@ -22,6 +22,10 @@ class OpensuseInstaller(DistributionInstaller): def package_type(cls) -> PackageType: return PackageType.rpm + @classmethod + def default_release(cls) -> str: + return "tumbleweed" + @classmethod def setup(cls, state: MkosiState) -> None: release = state.config.release diff --git a/mkosi/distributions/ubuntu.py b/mkosi/distributions/ubuntu.py index 495a53cd7..8d3c724f1 100644 --- a/mkosi/distributions/ubuntu.py +++ b/mkosi/distributions/ubuntu.py @@ -6,6 +6,10 @@ from mkosi.state import MkosiState class UbuntuInstaller(DebianInstaller): + @classmethod + def default_release(cls) -> str: + return "lunar" + @staticmethod def repositories(state: MkosiState, local: bool = True) -> list[str]: if state.config.local_mirror and local: