]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Use the same install function for all centos variants
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 7 Jul 2022 22:12:12 +0000 (00:12 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 27 Jul 2022 15:44:53 +0000 (17:44 +0200)
All the centos variants have different repos but install the
same packages, so let's have them all use the same install
function.

mkosi/__init__.py
mkosi/backend.py

index ee112983888bf150bf3dbddc24df8059a1aa7c77..35ddda0f82e951f78ae95a9eef6e515ff267c4e3 100644 (file)
@@ -83,6 +83,7 @@ from .backend import (
     die,
     install_grub,
     is_centos_variant,
+    is_epel_variant,
     is_rpm_distribution,
     nspawn_executable,
     nspawn_params_for_blockdev_access,
@@ -2519,10 +2520,14 @@ def is_older_than_centos8(release: str) -> bool:
 
 
 @complete_step("Installing CentOS…")
-def install_centos(args: MkosiArgs, root: Path, do_run_build_script: bool) -> None:
+def install_centos_variant(args: MkosiArgs, root: Path, do_run_build_script: bool) -> None:
     epel_release = parse_epel_release(args.release)
 
-    if epel_release <= 7:
+    if args.distribution in (Distribution.alma, Distribution.alma_epel):
+        install_alma_repos(args, root, epel_release)
+    elif args.distribution in (Distribution.rocky, Distribution.rocky_epel):
+        install_rocky_repos(args, root, epel_release)
+    elif epel_release <= 7:
         install_centos_repos_old(args, root, epel_release)
     elif epel_release <= 8:
         install_centos_repos_new(args, root, epel_release)
@@ -2557,7 +2562,7 @@ def install_centos(args: MkosiArgs, root: Path, do_run_build_script: bool) -> No
     if do_run_build_script:
         packages.update(args.build_packages)
 
-    if not do_run_build_script and args.distribution == Distribution.centos_epel:
+    if not do_run_build_script and is_epel_variant(args.distribution):
         if args.netdev:
             add_packages(args, packages, "systemd-networkd", conditional="systemd")
         if epel_release >= 9:
@@ -2575,57 +2580,6 @@ def install_centos(args: MkosiArgs, root: Path, do_run_build_script: bool) -> No
         run_workspace_command(args, root, cmdline)
 
 
-@complete_step("Installing Rocky Linux…")
-def install_rocky(args: MkosiArgs, root: Path, do_run_build_script: bool) -> None:
-    epel_release = int(args.release.split(".")[0])
-    install_rocky_repos(args, root, epel_release)
-
-    packages = {*args.packages}
-    add_packages(args, packages, "systemd")
-    if not do_run_build_script and args.bootable:
-        add_packages(args, packages, "kernel", "dracut")
-        add_packages(args, packages, "systemd-udev", conditional="systemd")
-
-    if do_run_build_script:
-        packages.update(args.build_packages)
-
-    if do_run_build_script:
-        packages.update(args.build_packages)
-
-    if not do_run_build_script and args.distribution == Distribution.rocky_epel and args.netdev:
-        add_packages(args, packages, "systemd-networkd", conditional="systemd")
-
-    install_packages_dnf(args, root, packages, do_run_build_script)
-
-    if root.joinpath("usr/bin/rpm").exists():
-        cmdline = ["rpm", "--rebuilddb", "--define", "_db_backend bdb"]
-        run_workspace_command(args, root, cmdline)
-
-
-
-@complete_step("Installing Alma Linux…")
-def install_alma(args: MkosiArgs, root: Path, do_run_build_script: bool) -> None:
-    epel_release = int(args.release.split(".")[0])
-    install_alma_repos(args, root, epel_release)
-
-    packages = {*args.packages}
-    add_packages(args, packages, "systemd")
-    if not do_run_build_script and args.bootable:
-        add_packages(args, packages, "kernel", "dracut")
-        add_packages(args, packages, "systemd-udev", conditional="systemd")
-
-    if do_run_build_script:
-        packages.update(args.build_packages)
-
-    if do_run_build_script:
-        packages.update(args.build_packages)
-
-    if not do_run_build_script and args.distribution == Distribution.alma_epel and args.netdev:
-        add_packages(args, packages, "systemd-networkd", conditional="systemd")
-
-    install_packages_dnf(args, root, packages, do_run_build_script)
-
-
 def debootstrap_knows_arg(arg: str) -> bool:
     return bytes("invalid option", "UTF-8") not in run(["debootstrap", arg], stdout=PIPE, check=False).stdout
 
@@ -3085,25 +3039,22 @@ def install_distribution(args: MkosiArgs, root: Path, do_run_build_script: bool,
     if cached:
         return
 
-    install: Dict[Distribution, Callable[[MkosiArgs, Path, bool], None]] = {
-        Distribution.fedora: install_fedora,
-        Distribution.centos: install_centos,
-        Distribution.centos_epel: install_centos,
-        Distribution.mageia: install_mageia,
-        Distribution.debian: install_debian,
-        Distribution.ubuntu: install_ubuntu,
-        Distribution.arch: install_arch,
-        Distribution.opensuse: install_opensuse,
-        Distribution.openmandriva: install_openmandriva,
-        Distribution.rocky: install_rocky,
-        Distribution.rocky_epel: install_rocky,
-        Distribution.alma: install_alma,
-        Distribution.alma_epel: install_alma,
-        Distribution.gentoo: install_gentoo,
-    }
+    if is_centos_variant(args.distribution):
+        install = install_centos_variant
+    else:
+        install = {
+            Distribution.fedora: install_fedora,
+            Distribution.mageia: install_mageia,
+            Distribution.debian: install_debian,
+            Distribution.ubuntu: install_ubuntu,
+            Distribution.arch: install_arch,
+            Distribution.opensuse: install_opensuse,
+            Distribution.openmandriva: install_openmandriva,
+            Distribution.gentoo: install_gentoo,
+        }[args.distribution]
 
     with mount_cache(args, root):
-        install[args.distribution](args, root, do_run_build_script)
+        install(args, root, do_run_build_script)
 
     # Link /var/lib/rpm→/usr/lib/sysimage/rpm for compat with old rpm.
     # We do this only if the new location is used, which depends on the dnf
index e0afa01348d739e13c52ca018e9ccff524fbc672..48c7e30d2312304a7a473f1d1fcad83c2861881a 100644 (file)
@@ -187,6 +187,14 @@ def is_centos_variant(d: Distribution) -> bool:
     )
 
 
+def is_epel_variant(d: Distribution) -> bool:
+    return d in (
+        Distribution.centos_epel,
+        Distribution.alma_epel,
+        Distribution.rocky_epel,
+    )
+
+
 class SourceFileTransfer(enum.Enum):
     copy_all = "copy-all"
     copy_git_cached = "copy-git-cached"