]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Add fallback to sudo if run0 is not available
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 23 Jan 2025 16:59:37 +0000 (17:59 +0100)
committerJörg Behrmann <behrmann@physik.fu-berlin.de>
Thu, 23 Jan 2025 19:09:49 +0000 (20:09 +0100)
mkosi/__init__.py
mkosi/burn.py
mkosi/sysupdate.py
mkosi/user.py

index 37a1c8232732ec94e5092b69bbd04d897f0ecac4..59c11a4abd120e2360fe2df428dbc7dba5581741 100644 (file)
@@ -127,7 +127,7 @@ from mkosi.sandbox import (
 )
 from mkosi.sysupdate import run_sysupdate
 from mkosi.tree import copy_tree, make_tree, move_tree, rmtree
-from mkosi.user import INVOKING_USER
+from mkosi.user import INVOKING_USER, become_root_cmd
 from mkosi.util import (
     PathString,
     current_home_dir,
@@ -4121,7 +4121,7 @@ def run_shell(args: Args, config: Config) -> None:
                 network=True,
                 relaxed=True,
                 options=["--same-dir"],
-                setup=["run0"] if os.getuid() != 0 else [],
+                setup=become_root_cmd(),
             ),
         )
 
@@ -4161,7 +4161,7 @@ def run_systemd_tool(tool: str, args: Args, config: Config) -> None:
             network=True,
             devices=config.output_format == OutputFormat.disk,
             relaxed=True,
-            setup=["run0"] if need_root else [],
+            setup=become_root_cmd() if need_root else [],
         ),
     )
 
index 24eee942f9650aba23bf0443fdf59ad35bddf4ed..24dc20e3c98cefc345996d2b049b0b5df777cf14 100644 (file)
@@ -6,6 +6,7 @@ import sys
 from mkosi.config import Args, Config, OutputFormat
 from mkosi.log import complete_step, die
 from mkosi.run import run
+from mkosi.user import become_root_cmd
 
 
 def run_burn(args: Args, config: Config) -> None:
@@ -44,6 +45,6 @@ def run_burn(args: Args, config: Config) -> None:
                 network=True,
                 relaxed=True,
                 options=["--same-dir"],
-                setup=["run0"] if os.getuid() != 0 else [],
+                setup=become_root_cmd(),
             ),
         )
index 514e7bbc6a1cf0fd06a6254a19002031f506344a..5b2e3909f43c53a6223eef4ee914969987561cc6 100644 (file)
@@ -9,6 +9,7 @@ from pathlib import Path
 from mkosi.config import Args, ArtifactOutput, Config
 from mkosi.log import die
 from mkosi.run import run
+from mkosi.user import become_root_cmd
 from mkosi.util import PathString
 
 
@@ -54,7 +55,7 @@ def run_sysupdate(args: Args, config: Config) -> None:
                 devices=True,
                 network=True,
                 relaxed=True,
-                setup=["run0"] if os.getuid() != 0 else [],
+                setup=become_root_cmd(),
                 options=[
                     *(["--bind", "/boot", "/boot"] if Path("/boot").exists() else []),
                     *(["--bind", "/efi", "/efi"] if Path("/efi").exists() else []),
index a0704750ddc0ae36bf42af2e643bacd903117d62..41186a695a331aa212d8114a9d063d083d0928ff 100644 (file)
@@ -6,7 +6,7 @@ import tempfile
 from pathlib import Path
 
 from mkosi.log import die
-from mkosi.run import spawn
+from mkosi.run import find_binary, spawn
 from mkosi.sandbox import CLONE_NEWUSER, unshare
 from mkosi.util import flock, parents_below
 
@@ -183,3 +183,10 @@ def become_root_in_subuid_range_cmd() -> list[str]:
     ]  # fmt: skip
 
     return [str(x) for x in cmd]
+
+
+def become_root_cmd() -> list[str]:
+    if os.getuid() == 0:
+        return []
+
+    return ["run0"] if find_binary("run0") else ["sudo"]