From: Daan De Meyer Date: Thu, 23 Jan 2025 16:59:37 +0000 (+0100) Subject: Add fallback to sudo if run0 is not available X-Git-Tag: v25.1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b33d4f7c4b5c29a4ac3fbbaa1c6e55345b231d05;p=thirdparty%2Fmkosi.git Add fallback to sudo if run0 is not available --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 37a1c8232..59c11a4ab 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -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 [], ), ) diff --git a/mkosi/burn.py b/mkosi/burn.py index 24eee942f..24dc20e3c 100644 --- a/mkosi/burn.py +++ b/mkosi/burn.py @@ -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(), ), ) diff --git a/mkosi/sysupdate.py b/mkosi/sysupdate.py index 514e7bbc6..5b2e3909f 100644 --- a/mkosi/sysupdate.py +++ b/mkosi/sysupdate.py @@ -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 []), diff --git a/mkosi/user.py b/mkosi/user.py index a0704750d..41186a695 100644 --- a/mkosi/user.py +++ b/mkosi/user.py @@ -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"]