die,
install_grub,
nspawn_params_for_blockdev_access,
+ nspawn_rlimit_params,
patch_file,
path_relative_to_cwd,
run,
f"--setenv=WITH_TESTS={one_zero(args.with_tests)}",
f"--setenv=WITH_NETWORK={with_network}",
"--setenv=DESTDIR=/root/dest",
+ *nspawn_rlimit_params(),
]
cmdline.extend(f"--setenv={env}" for env in args.environment)
if args.verb == "boot":
cmdline += ["--boot"]
+ else:
+ cmdline += nspawn_rlimit_params()
if is_generated_root(args) or args.verity:
cmdline += ["--volatile=overlay"]
import enum
import math
import os
+import resource
import shlex
import shutil
import signal
return params
+def format_rlimit(rlimit: int) -> str:
+ limits = resource.getrlimit(rlimit)
+ soft = "infinity" if limits[0] == resource.RLIM_INFINITY else str(limits[0])
+ hard = "infinity" if limits[1] == resource.RLIM_INFINITY else str(limits[1])
+ return f"{soft}:{hard}"
+
+
+def nspawn_rlimit_params() -> Sequence[str]:
+ return [
+ f"--rlimit=RLIMIT_CORE={format_rlimit(resource.RLIMIT_CORE)}",
+ f"--rlimit=RLIMIT_NOFILE={format_rlimit(resource.RLIMIT_NOFILE)}",
+ ]
+
+
def run_workspace_command(
args: CommandLineArguments,
root: Path,
"--register=no",
f"--bind={var_tmp(root)}:/var/tmp",
"--setenv=SYSTEMD_OFFLINE=1",
+ *nspawn_rlimit_params(),
]
if network: