From: Daan De Meyer Date: Thu, 4 Apr 2024 18:22:24 +0000 (+0200) Subject: Pass environment the usual way when we're invoking the package manager X-Git-Tag: v23~29^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=053eeeaffe81701e2c9d77ee1c6e30ba3c5f1d98;p=thirdparty%2Fmkosi.git Pass environment the usual way when we're invoking the package manager Let's only use "env" in the package manager scripts we make available when running user scripts. If we're invoking the package manager ourselves, pass the environment in the usual way. --- diff --git a/mkosi/installer/__init__.py b/mkosi/installer/__init__.py index 10906108b..77ab30eb2 100644 --- a/mkosi/installer/__init__.py +++ b/mkosi/installer/__init__.py @@ -45,6 +45,10 @@ class PackageManager: return env + @classmethod + def env_cmd(cls, context: Context) -> list[PathString]: + return ["env", *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()])] + @classmethod def mounts(cls, context: Context) -> list[Mount]: mounts = [ diff --git a/mkosi/installer/apt.py b/mkosi/installer/apt.py index 8f9c1a8a9..990110774 100644 --- a/mkosi/installer/apt.py +++ b/mkosi/installer/apt.py @@ -52,7 +52,7 @@ class Apt(PackageManager): def scripts(cls, context: Context) -> dict[str, list[PathString]]: return { **{ - command: apivfs_cmd() + cls.cmd(context, command) for command in ( + command: apivfs_cmd() + cls.env_cmd(context) + cls.cmd(context, command) for command in ( "apt", "apt-cache", "apt-cdrom", @@ -128,8 +128,6 @@ class Apt(PackageManager): debarch = context.config.distribution.architecture(context.config.architecture) cmdline: list[PathString] = [ - "env", - *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]), command, "-o", f"APT::Architecture={debarch}", "-o", f"APT::Architectures={debarch}", @@ -204,7 +202,7 @@ class Apt(PackageManager): options=["--dir", "/work/src", "--chdir", "/work/src"], ) + (apivfs_cmd() if apivfs else []) ), - env=context.config.environment, + env=context.config.environment | cls.finalize_environment(context), stdout=stdout, ) diff --git a/mkosi/installer/dnf.py b/mkosi/installer/dnf.py index 1544722f3..b49c371e4 100644 --- a/mkosi/installer/dnf.py +++ b/mkosi/installer/dnf.py @@ -39,7 +39,7 @@ class Dnf(PackageManager): @classmethod def scripts(cls, context: Context) -> dict[str, list[PathString]]: return { - "dnf": apivfs_cmd() + cls.cmd(context), + "dnf": apivfs_cmd() + cls.env_cmd(context) + cls.cmd(context), "rpm": apivfs_cmd() + rpm_cmd(), "mkosi-install" : ["dnf", "install"], "mkosi-upgrade" : ["dnf", "upgrade"], @@ -99,8 +99,6 @@ class Dnf(PackageManager): dnf = cls.executable(context.config) cmdline: list[PathString] = [ - "env", - *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]), dnf, "--assumeyes", "--best", @@ -183,7 +181,7 @@ class Dnf(PackageManager): options=["--dir", "/work/src", "--chdir", "/work/src"], ) + (apivfs_cmd() if apivfs else []) ), - env=context.config.environment, + env=context.config.environment | cls.finalize_environment(context), stdout=stdout, ) finally: diff --git a/mkosi/installer/pacman.py b/mkosi/installer/pacman.py index 58a2b99d4..cbff8daab 100644 --- a/mkosi/installer/pacman.py +++ b/mkosi/installer/pacman.py @@ -37,7 +37,7 @@ class Pacman(PackageManager): @classmethod def scripts(cls, context: Context) -> dict[str, list[PathString]]: return { - "pacman": apivfs_cmd() + cls.cmd(context), + "pacman": apivfs_cmd() + cls.env_cmd(context) + cls.cmd(context), "mkosi-install" : ["pacman", "--sync", "--needed"], "mkosi-upgrade" : ["pacman", "--sync", "--sysupgrade", "--needed"], "mkosi-remove" : ["pacman", "--remove", "--recursive", "--nosave"], @@ -127,8 +127,6 @@ class Pacman(PackageManager): @classmethod def cmd(cls, context: Context) -> list[PathString]: return [ - "env", - *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]), "pacman", "--root=/buildroot", "--logfile=/dev/null", @@ -166,7 +164,7 @@ class Pacman(PackageManager): options=["--dir", "/work/src", "--chdir", "/work/src"], ) + (apivfs_cmd() if apivfs else []) ), - env=context.config.environment, + env=context.config.environment | cls.finalize_environment(context), stdout=stdout, ) diff --git a/mkosi/installer/zypper.py b/mkosi/installer/zypper.py index eb707d244..a8fdf06d5 100644 --- a/mkosi/installer/zypper.py +++ b/mkosi/installer/zypper.py @@ -38,7 +38,7 @@ class Zypper(PackageManager): ] return { - "zypper": apivfs_cmd() + cls.cmd(context), + "zypper": apivfs_cmd() + cls.env_cmd(context) + cls.cmd(context), "rpm" : apivfs_cmd() + rpm_cmd(), "mkosi-install" : install, "mkosi-upgrade" : ["zypper", "update"], @@ -105,8 +105,6 @@ class Zypper(PackageManager): @classmethod def cmd(cls, context: Context) -> list[PathString]: return [ - "env", - *([f"{k}={v}" for k, v in cls.finalize_environment(context).items()]), "zypper", "--installroot=/buildroot", "--cache-dir=/var/cache/zypp", @@ -138,7 +136,7 @@ class Zypper(PackageManager): options=["--dir", "/work/src", "--chdir", "/work/src"], ) + (apivfs_cmd() if apivfs else []) ), - env=context.config.environment, + env=context.config.environment | cls.finalize_environment(context), stdout=stdout, )