]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Simplify package manager code a little 3597/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 18 Mar 2025 12:22:07 +0000 (13:22 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 18 Mar 2025 12:38:58 +0000 (13:38 +0100)
mkosi/distributions/arch.py
mkosi/distributions/centos.py
mkosi/distributions/debian.py
mkosi/distributions/fedora.py
mkosi/distributions/opensuse.py

index 65910801eaaaa08b3ea4b3958db7401360e02d7f..8373306a72afad0bac9377fc07bd1c8deb770051 100644 (file)
@@ -9,7 +9,6 @@ from mkosi.config import Architecture, Config
 from mkosi.context import Context
 from mkosi.curl import curl
 from mkosi.distributions import DistributionInstaller, PackageType
-from mkosi.installer import PackageManager
 from mkosi.installer.pacman import Pacman, PacmanRepository
 from mkosi.log import complete_step, die
 
@@ -32,7 +31,7 @@ class Installer(DistributionInstaller):
         return "rolling"
 
     @classmethod
-    def package_manager(cls, config: "Config") -> type[PackageManager]:
+    def package_manager(cls, config: "Config") -> type[Pacman]:
         return Pacman
 
     @classmethod
index 29f03c15c08b41db4a9fa6227d6ee5a35514ee4f..e001bf7a76e072896a6c8bd7eff868322b41aa11 100644 (file)
@@ -10,7 +10,6 @@ from mkosi.distributions import (
     PackageType,
     join_mirror,
 )
-from mkosi.installer import PackageManager
 from mkosi.installer.dnf import Dnf
 from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm
 from mkosi.log import die
@@ -45,7 +44,7 @@ class Installer(DistributionInstaller):
         return config.release.partition(".")[0]
 
     @classmethod
-    def package_manager(cls, config: "Config") -> type[PackageManager]:
+    def package_manager(cls, config: "Config") -> type[Dnf]:
         return Dnf
 
     @classmethod
index 1b09fc45729deb078b9c5a32d4fc002ac0dab540..7dfad139811ab0b96dbb8cf28d4f1d14ed5ea081 100644 (file)
@@ -9,7 +9,6 @@ from mkosi.archive import extract_tar
 from mkosi.config import Architecture, Config
 from mkosi.context import Context
 from mkosi.distributions import DistributionInstaller, PackageType
-from mkosi.installer import PackageManager
 from mkosi.installer.apt import Apt, AptRepository
 from mkosi.log import die
 from mkosi.run import run, workdir
@@ -34,7 +33,7 @@ class Installer(DistributionInstaller):
         return "testing"
 
     @classmethod
-    def package_manager(cls, config: Config) -> type[PackageManager]:
+    def package_manager(cls, config: Config) -> type[Apt]:
         return Apt
 
     @classmethod
index 1bb5ac131ce2fb07625b1c55e02292ddb4b4e6be..833e820e21076e3240ace04e385d14003757609c 100644 (file)
@@ -14,7 +14,6 @@ from mkosi.distributions import (
     PackageType,
     join_mirror,
 )
-from mkosi.installer import PackageManager
 from mkosi.installer.dnf import Dnf
 from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm
 from mkosi.log import die
@@ -114,7 +113,7 @@ class Installer(DistributionInstaller):
         return "grub2"
 
     @classmethod
-    def package_manager(cls, config: Config) -> type[PackageManager]:
+    def package_manager(cls, config: Config) -> type[Dnf]:
         return Dnf
 
     @classmethod
index ff9360c0c281a42ad0952162db538dce180a3a87..e959cfbd6ea825e32b12239ff8a75a8a08e5b098 100644 (file)
@@ -3,13 +3,13 @@
 import tempfile
 from collections.abc import Iterable
 from pathlib import Path
+from typing import Union
 from xml.etree import ElementTree
 
 from mkosi.config import Architecture, Config
 from mkosi.context import Context
 from mkosi.curl import curl
 from mkosi.distributions import DistributionInstaller, PackageType, join_mirror
-from mkosi.installer import PackageManager
 from mkosi.installer.dnf import Dnf
 from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm
 from mkosi.installer.zypper import Zypper
@@ -40,7 +40,7 @@ class Installer(DistributionInstaller):
         return "grub2"
 
     @classmethod
-    def package_manager(cls, config: Config) -> type[PackageManager]:
+    def package_manager(cls, config: Config) -> Union[type[Dnf], type[Zypper]]:
         if config.find_binary("zypper"):
             return Zypper
         else:
@@ -49,12 +49,7 @@ class Installer(DistributionInstaller):
     @classmethod
     def setup(cls, context: Context) -> None:
         setup_rpm(context, dbbackend="ndb")
-
-        zypper = context.config.find_binary("zypper")
-        if zypper:
-            Zypper.setup(context, list(cls.repositories(context)))
-        else:
-            Dnf.setup(context, list(cls.repositories(context)))
+        cls.package_manager(context.config).setup(context, list(cls.repositories(context)))
 
     @classmethod
     def install(cls, context: Context) -> None:
@@ -66,7 +61,7 @@ class Installer(DistributionInstaller):
             yield RpmRepository(id="local-mirror", url=f"baseurl={context.config.local_mirror}", gpgurls=())
             return
 
-        zypper = context.config.find_binary("zypper")
+        zypper = cls.package_manager(context.config) is Zypper
         mirror = context.config.mirror or "https://download.opensuse.org"
 
         if context.config.release == "tumbleweed" or context.config.release.isdigit():