bwrap(
[state.config.prepare_script, "build"],
network=True,
+ readonly=True,
options=finalize_mounts(state.config),
scripts={"mkosi-chroot": chroot} | package_manager_scripts(state),
env=env | state.config.environment,
bwrap(
[state.config.prepare_script, "final"],
network=True,
+ readonly=True,
options=finalize_mounts(state.config),
scripts={"mkosi-chroot": chroot} | package_manager_scripts(state),
env=env | state.config.environment,
bwrap(
[state.config.build_script],
network=state.config.with_network,
+ readonly=True,
options=finalize_mounts(state.config),
scripts={"mkosi-chroot": chroot} | package_manager_scripts(state),
env=env | state.config.environment,
bwrap(
[state.config.postinst_script, "final"],
network=state.config.with_network,
+ readonly=True,
options=finalize_mounts(state.config),
scripts={"mkosi-chroot": chroot} | package_manager_scripts(state),
env=env | state.config.environment,
bwrap(
[state.config.finalize_script],
network=state.config.with_network,
+ readonly=True,
options=finalize_mounts(state.config),
scripts={"mkosi-chroot": chroot} | package_manager_scripts(state),
env=env | state.config.environment,
from mkosi.state import MkosiState
from mkosi.tree import copy_tree, rmtree
from mkosi.types import PathString
-from mkosi.util import flatten, sort_packages
+from mkosi.util import sort_packages
def invoke_emerge(state: MkosiState, packages: Sequence[str] = (), apivfs: bool = True) -> None:
"--bind", state.cache_dir / "stage3/var", "/var",
"--ro-bind", "/etc/resolv.conf", "/etc/resolv.conf",
"--bind", state.cache_dir / "repos", "/var/db/repos",
- *flatten(["--bind", str(d), str(d)] for d in (state.config.workspace_dir, state.config.cache_dir) if d),
],
env=dict(
PKGDIR=str(state.cache_dir / "binpkgs"),
options=["--bind", state.cache_dir / "repos", "/var/db/repos"],
)
- bwrap(cmd=chroot + ["emerge-webrsync"], network=True,
- options=flatten(["--bind", d, d] for d in (state.config.workspace_dir, state.config.cache_dir) if d))
+ bwrap(cmd=chroot + ["emerge-webrsync"], network=True)
invoke_emerge(state, packages=["sys-apps/baselayout"], apivfs=False)
from mkosi.run import apivfs_cmd, bwrap
from mkosi.state import MkosiState
from mkosi.types import PathString
-from mkosi.util import flatten, sort_packages, umask
+from mkosi.util import sort_packages, umask
def setup_apt(state: MkosiState, repos: Sequence[str]) -> None:
) -> None:
cmd = apivfs_cmd(state.root) if apivfs else []
bwrap(cmd + apt_cmd(state, command) + [operation, *sort_packages(packages)],
- options=flatten(["--bind", d, d] for d in (state.config.workspace_dir, state.config.cache_dir) if d),
network=True, env=state.config.environment)
from mkosi.state import MkosiState
from mkosi.tree import rmtree
from mkosi.types import PathString
-from mkosi.util import flatten, sort_packages
+from mkosi.util import sort_packages
class Repo(NamedTuple):
def invoke_dnf(state: MkosiState, command: str, packages: Iterable[str], apivfs: bool = True) -> None:
cmd = apivfs_cmd(state.root) if apivfs else []
bwrap(cmd + dnf_cmd(state) + [command, *sort_packages(packages)],
- options=flatten(["--bind", d, d] for d in (state.config.workspace_dir, state.config.cache_dir) if d),
network=True, env=state.config.environment)
fixup_rpmdb_location(state.root)
from mkosi.run import apivfs_cmd, bwrap
from mkosi.state import MkosiState
from mkosi.types import PathString
-from mkosi.util import flatten, sort_packages, umask
+from mkosi.util import sort_packages, umask
def setup_pacman(state: MkosiState) -> None:
def invoke_pacman(state: MkosiState, packages: Sequence[str], apivfs: bool = True) -> None:
cmd = apivfs_cmd(state.root) if apivfs else []
bwrap(cmd + pacman_cmd(state) + ["-Sy", *sort_packages(packages)],
- options=flatten(["--bind", d, d] for d in (state.config.workspace_dir, state.config.cache_dir) if d),
network=True, env=state.config.environment)
from mkosi.run import apivfs_cmd, bwrap
from mkosi.state import MkosiState
from mkosi.types import PathString
-from mkosi.util import flatten, sort_packages
+from mkosi.util import sort_packages
def setup_zypper(state: MkosiState, repos: Sequence[Repo]) -> None:
) -> None:
cmd = apivfs_cmd(state.root) if apivfs else []
bwrap(cmd + zypper_cmd(state) + [verb, *sort_packages(packages), *options],
- options=flatten(["--bind", d, d] for d in (state.config.workspace_dir, state.config.cache_dir) if d),
network=True, env=state.config.environment)
fixup_rpmdb_location(state.root)
cmd: Sequence[PathString],
*,
network: bool = False,
+ readonly: bool = False,
options: Sequence[PathString] = (),
log: bool = True,
scripts: Mapping[str, Sequence[PathString]] = {},
cmdline: list[PathString] = [
"bwrap",
"--dev-bind", "/", "/",
- "--remount-ro", "/",
- "--ro-bind", "/root", "/root",
- "--ro-bind", "/home", "/home",
- "--ro-bind", "/var", "/var",
- "--ro-bind", "/run", "/run",
- "--bind", "/var/tmp", "/var/tmp",
+ ]
+
+ if readonly:
+ cmdline += [
+ "--remount-ro", "/",
+ "--ro-bind", "/root", "/root",
+ "--ro-bind", "/home", "/home",
+ "--ro-bind", "/var", "/var",
+ "--ro-bind", "/run", "/run",
+ "--bind", "/var/tmp", "/var/tmp",
+ ]
+
+ cmdline += [
"--tmpfs", "/tmp",
"--bind", Path.cwd(), Path.cwd(),
"--chdir", Path.cwd(),