from typing import Any, Callable, Optional, TypeVar, Union, cast
from mkosi.distributions import Distribution, detect_distribution
-from mkosi.log import ARG_DEBUG, ARG_DEBUG_SHELL, Style, die
+from mkosi.log import ARG_DEBUG, ARG_DEBUG_SANDBOX, ARG_DEBUG_SHELL, Style, die
from mkosi.pager import page
from mkosi.run import SandboxProtocol, find_binary, nosandbox, run, sandbox_cmd, workdir
from mkosi.sandbox import __version__
debug: bool
debug_shell: bool
debug_workspace: bool
+ debug_sandbox: bool
pager: bool
genkey_valid_days: str
genkey_common_name: str
action="store_true",
default=False,
)
+ parser.add_argument(
+ "--debug-sandbox",
+ help="Run mkosi-sandbox with strace",
+ action="store_true",
+ default=False,
+ )
parser.add_argument(
"--no-pager",
action="store_false",
ARG_DEBUG.set(args.debug)
if args.debug_shell:
ARG_DEBUG_SHELL.set(args.debug_shell)
+ if args.debug_sandbox:
+ ARG_DEBUG_SANDBOX.set(args.debug_sandbox)
return Args.from_namespace(args)
# This global should be initialized after parsing arguments
ARG_DEBUG = contextvars.ContextVar("debug", default=False)
ARG_DEBUG_SHELL = contextvars.ContextVar("debug-shell", default=False)
+ARG_DEBUG_SANDBOX = contextvars.ContextVar("debug-sandbox", default=False)
LEVEL = 0
for in this directory, hence using this option is an effective way to
build a project located in a specific directory.
-`--debug=`
+`--debug`
: Enable additional debugging output.
`--debug-shell`
: When executing a command in the image fails, mkosi will start an interactive
shell in the image allowing further debugging.
-`--debug-workspace=`
+`--debug-workspace`
: When an error occurs, the workspace directory will not be deleted.
+`--debug-sandbox`
+: Run `mkosi-sandbox` with `strace`.
+
`--version`
: Show package version.
from typing import Any, Callable, NoReturn, Optional, Protocol
import mkosi.sandbox
-from mkosi.log import ARG_DEBUG, ARG_DEBUG_SHELL, die
+from mkosi.log import ARG_DEBUG, ARG_DEBUG_SANDBOX, ARG_DEBUG_SHELL, die
from mkosi.sandbox import acquire_privileges, joinpath, umask
from mkosi.types import _FILE, CompletedProcess, PathString, Popen
from mkosi.util import current_home_dir, flatten, one_zero
cmdline: list[PathString] = [
*setup,
+ *(["strace", "--detach-on=execve"] if ARG_DEBUG_SANDBOX.get() else []),
sys.executable, "-SI", mkosi.sandbox.__file__,
"--proc", "/proc",
# We mounted a subdirectory of TMPDIR to /var/tmp so we unset TMPDIR so that /tmp or /var/tmp are
"bar"
],
"Debug": false,
+ "DebugSandbox": false,
"DebugShell": false,
"DebugWorkspace": false,
"Directory": {f'"{os.fspath(path)}"' if path is not None else 'null'},
auto_bump=False,
cmdline=["foo", "bar"],
debug=False,
+ debug_sandbox=False,
debug_shell=False,
debug_workspace=False,
directory=Path(path) if path is not None else None,