]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Pass environment the usual way when we're invoking the package manager
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 4 Apr 2024 18:22:24 +0000 (20:22 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 4 Apr 2024 18:22:24 +0000 (20:22 +0200)
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.

mkosi/installer/__init__.py
mkosi/installer/apt.py
mkosi/installer/dnf.py
mkosi/installer/pacman.py
mkosi/installer/zypper.py

index 10906108bd00bd53fcbc327692fbfba85a30b54f..77ab30eb2dd7714098fe67a34631c527695a3eb3 100644 (file)
@@ -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 = [
index 8f9c1a8a9a1ae4f4d7896c8a5ef0203f0a5c70f9..990110774cbc20e748f2ce1cf2519491357befe2 100644 (file)
@@ -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,
             )
 
index 1544722f357d1854975efb0bd798388b6a954a90..b49c371e4087290e4021ebd8fc088ad627511a61 100644 (file)
@@ -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:
index 58a2b99d4443534a9ae89c85392ab6524f9368cc..cbff8daabd8d0e1468a30ce8d9502ed5a436a826 100644 (file)
@@ -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,
             )
 
index eb707d2445dc4e220ebdd5ba887d8de45257deba..a8fdf06d5bc6f1cdc6fb148655a7f4df46463594 100644 (file)
@@ -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,
             )