From: Daan De Meyer Date: Thu, 15 Feb 2024 09:57:29 +0000 (+0100) Subject: Pass in a single arguments parameter to invoke() methods X-Git-Tag: v21~50^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb4d65809c1198efd8f96928e4962da14de45a77;p=thirdparty%2Fmkosi.git Pass in a single arguments parameter to invoke() methods Instead of passing in packages and options separately, let's just have a single arguments parameter. --- diff --git a/mkosi/distributions/arch.py b/mkosi/distributions/arch.py index 4bca1f05f..edae80c3f 100644 --- a/mkosi/distributions/arch.py +++ b/mkosi/distributions/arch.py @@ -8,7 +8,7 @@ from mkosi.distributions import Distribution, DistributionInstaller, PackageType from mkosi.installer import PackageManager from mkosi.installer.pacman import Pacman from mkosi.log import die -from mkosi.util import listify +from mkosi.util import listify, sort_packages class Installer(DistributionInstaller): @@ -57,14 +57,13 @@ class Installer(DistributionInstaller): Pacman.invoke( context, "--sync", - ["--needed", "--assume-installed", "initramfs"], - packages, + ["--needed", "--assume-installed", "initramfs", *sort_packages(packages)], apivfs=apivfs, ) @classmethod def remove_packages(cls, context: Context, packages: Sequence[str]) -> None: - Pacman.invoke(context, "--remove", ["--nosave", "--recursive"], packages, apivfs=True) + Pacman.invoke(context, "--remove", ["--nosave", "--recursive", *packages], apivfs=True) @classmethod @listify diff --git a/mkosi/distributions/opensuse.py b/mkosi/distributions/opensuse.py index 4e6a57189..740f6974a 100644 --- a/mkosi/distributions/opensuse.py +++ b/mkosi/distributions/opensuse.py @@ -15,7 +15,7 @@ from mkosi.installer.zypper import Zypper from mkosi.log import die from mkosi.run import find_binary, run from mkosi.sandbox import finalize_crypto_mounts -from mkosi.util import listify +from mkosi.util import listify, sort_packages class Installer(DistributionInstaller): @@ -80,18 +80,22 @@ class Installer(DistributionInstaller): @classmethod def install_packages(cls, context: Context, packages: Sequence[str], apivfs: bool = True) -> None: if find_binary("zypper", root=context.config.tools()): - options = [ - "--download", "in-advance", - "--recommends" if context.config.with_recommends else "--no-recommends", - ] - Zypper.invoke(context, "install", packages, options=options, apivfs=apivfs) + Zypper.invoke( + context, + "install", + [ + "--download", "in-advance", + "--recommends" if context.config.with_recommends else "--no-recommends", + *sort_packages(packages), + ], + apivfs=apivfs) else: - Dnf.invoke(context, "install", packages, apivfs=apivfs) + Dnf.invoke(context, "install", sort_packages(packages), apivfs=apivfs) @classmethod def remove_packages(cls, context: Context, packages: Sequence[str]) -> None: if find_binary("zypper", root=context.config.tools()): - Zypper.invoke(context, "remove", packages, options=["--clean-deps"], apivfs=True) + Zypper.invoke(context, "remove", ["--clean-deps", *sort_packages(packages)], apivfs=True) else: Dnf.invoke(context, "remove", packages, apivfs=True) diff --git a/mkosi/installer/apt.py b/mkosi/installer/apt.py index e3f454a83..8e85e6618 100644 --- a/mkosi/installer/apt.py +++ b/mkosi/installer/apt.py @@ -12,7 +12,7 @@ from mkosi.mounts import finalize_ephemeral_source_mounts from mkosi.run import find_binary, run from mkosi.sandbox import apivfs_cmd from mkosi.types import CompletedProcess, PathString -from mkosi.util import sort_packages, umask +from mkosi.util import umask class Apt(PackageManager): @@ -167,15 +167,14 @@ class Apt(PackageManager): cls, context: Context, operation: str, - packages: Sequence[str] = (), + arguments: Sequence[str] = (), *, - options: Sequence[str] = (), apivfs: bool = False, mounts: Sequence[PathString] = (), ) -> CompletedProcess: with finalize_ephemeral_source_mounts(context.config) as sources: return run( - cls.cmd(context, "apt-get") + [operation, *options, *sort_packages(packages)], + cls.cmd(context, "apt-get") + [operation, *arguments], sandbox=( context.sandbox( network=True, @@ -225,7 +224,7 @@ class Apt(PackageManager): cls.invoke( context, "update", - options=[ + arguments=[ "-o", "Dir::Etc::sourcelist=sources.list.d/mkosi-local.sources", "-o", "Dir::Etc::sourceparts=-", "-o", "APT::Get::List-Cleanup=0", diff --git a/mkosi/installer/dnf.py b/mkosi/installer/dnf.py index 19b5cf8ea..a24d01bc0 100644 --- a/mkosi/installer/dnf.py +++ b/mkosi/installer/dnf.py @@ -12,7 +12,6 @@ from mkosi.mounts import finalize_ephemeral_source_mounts from mkosi.run import find_binary, run from mkosi.sandbox import apivfs_cmd from mkosi.types import CompletedProcess, PathString -from mkosi.util import sort_packages class Dnf(PackageManager): @@ -155,14 +154,14 @@ class Dnf(PackageManager): cls, context: Context, operation: str, - packages: Iterable[str] = (), - options: Sequence[str] = (), + arguments: Sequence[str] = (), + *, apivfs: bool = False, ) -> CompletedProcess: try: with finalize_ephemeral_source_mounts(context.config) as sources: return run( - cls.cmd(context) + [operation, *options, *sort_packages(packages)], + cls.cmd(context) + [operation,*arguments], sandbox=( context.sandbox( network=True, @@ -189,7 +188,7 @@ class Dnf(PackageManager): cls.invoke( context, "makecache", - options=[ + arguments=[ "--refresh", *(["--setopt=cacheonly=none"] if cls.executable(context.config) == "dnf5" else []), *options, diff --git a/mkosi/installer/pacman.py b/mkosi/installer/pacman.py index c35d57b11..0ff183b0c 100644 --- a/mkosi/installer/pacman.py +++ b/mkosi/installer/pacman.py @@ -12,7 +12,7 @@ from mkosi.mounts import finalize_ephemeral_source_mounts from mkosi.run import run from mkosi.sandbox import apivfs_cmd from mkosi.types import CompletedProcess, PathString -from mkosi.util import sort_packages, umask +from mkosi.util import umask from mkosi.versioncomp import GenericVersion @@ -145,13 +145,13 @@ class Pacman(PackageManager): cls, context: Context, operation: str, - options: Sequence[str] = (), - packages: Sequence[str] = (), + arguments: Sequence[str] = (), + *, apivfs: bool = False, ) -> CompletedProcess: with finalize_ephemeral_source_mounts(context.config) as sources: return run( - cls.cmd(context) + [operation, *options, *sort_packages(packages)], + cls.cmd(context) + [operation, *arguments], sandbox=( context.sandbox( network=True, diff --git a/mkosi/installer/zypper.py b/mkosi/installer/zypper.py index 1f8f2e8df..1db59df3f 100644 --- a/mkosi/installer/zypper.py +++ b/mkosi/installer/zypper.py @@ -12,7 +12,6 @@ from mkosi.mounts import finalize_ephemeral_source_mounts from mkosi.run import run from mkosi.sandbox import apivfs_cmd from mkosi.types import CompletedProcess, PathString -from mkosi.util import sort_packages class Zypper(PackageManager): @@ -115,14 +114,13 @@ class Zypper(PackageManager): cls, context: Context, operation: str, - packages: Sequence[str] = (), + arguments: Sequence[str] = (), *, - options: Sequence[str] = (), apivfs: bool = False, ) -> CompletedProcess: with finalize_ephemeral_source_mounts(context.config) as sources: return run( - cls.cmd(context) + [operation, *options, *sort_packages(packages)], + cls.cmd(context) + [operation, *arguments], sandbox=( context.sandbox( network=True,