yield Path(d)
-GIT_COMMAND = (
- "git",
- "-c", "safe.directory=*",
-)
+GIT_ENV = {
+ "GIT_CONFIG_COUNT": "1",
+ "GIT_CONFIG_KEY_0": "safe.directory",
+ "GIT_CONFIG_VALUE_0": "*",
+}
def mkosi_as_caller() -> tuple[str, ...]:
helpers: Mapping[str, Sequence[PathString]] = {},
) -> contextlib.AbstractContextManager[Path]:
scripts: dict[str, Sequence[PathString]] = {}
- if find_binary("git", root=context.config.tools()):
- scripts["git"] = GIT_COMMAND
for binary in ("useradd", "groupadd"):
if find_binary(binary, root=context.config.tools()):
scripts[binary] = (binary, "--root", "/buildroot")
return finalize_scripts(scripts | dict(helpers), root=context.config.tools())
-def finalize_chroot_scripts(context: Context) -> contextlib.AbstractContextManager[Path]:
- scripts: dict[str, Sequence[PathString]] = {}
- if find_binary("git", root=context.config.tools()):
- scripts["git"] = GIT_COMMAND
- return finalize_scripts(scripts, root=context.root)
-
-
@contextlib.contextmanager
def finalize_config_json(config: Config) -> Iterator[Path]:
with tempfile.NamedTemporaryFile(mode="w") as f:
WITH_DOCS=one_zero(context.config.with_docs),
WITH_NETWORK=one_zero(context.config.with_network),
WITH_TESTS=one_zero(context.config.with_tests),
+ **GIT_ENV,
)
if context.config.profile:
with (
mount_build_overlay(context) if build else contextlib.nullcontext(),
- finalize_chroot_scripts(context) as cd,
finalize_source_mounts(context.config, ephemeral=context.config.build_sources_ephemeral) as sources,
):
if build:
*sources,
Mount(script, "/work/prepare", ro=True),
Mount(json, "/work/config.json", ro=True),
- Mount(cd, "/work/scripts", ro=True),
Mount(context.root, "/buildroot"),
*context.config.distribution.package_manager(context.config).mounts(context),
],
WITH_DOCS=one_zero(context.config.with_docs),
WITH_NETWORK=one_zero(context.config.with_network),
WITH_TESTS=one_zero(context.config.with_tests),
+ **GIT_ENV,
)
if context.config.profile:
with (
mount_build_overlay(context, volatile=True),
- finalize_chroot_scripts(context) as cd,
finalize_source_mounts(context.config, ephemeral=context.config.build_sources_ephemeral) as sources,
):
for script in context.config.build_scripts:
*sources,
Mount(script, "/work/build-script", ro=True),
Mount(json, "/work/config.json", ro=True),
- Mount(cd, "/work/scripts", ro=True),
Mount(context.root, "/buildroot"),
Mount(context.install_dir, "/work/dest"),
Mount(context.staging, "/work/out"),
MKOSI_UID=str(INVOKING_USER.uid),
MKOSI_GID=str(INVOKING_USER.gid),
MKOSI_CONFIG="/work/config.json",
+ **GIT_ENV,
)
if context.config.profile:
env["PROFILE"] = context.config.profile
with (
- finalize_chroot_scripts(context) as cd,
finalize_source_mounts(context.config, ephemeral=context.config.build_sources_ephemeral) as sources,
):
for script in context.config.postinst_scripts:
*sources,
Mount(script, "/work/postinst", ro=True),
Mount(json, "/work/config.json", ro=True),
- Mount(cd, "/work/scripts", ro=True),
Mount(context.root, "/buildroot"),
Mount(context.staging, "/work/out"),
*context.config.distribution.package_manager(context.config).mounts(context),
MKOSI_UID=str(INVOKING_USER.uid),
MKOSI_GID=str(INVOKING_USER.gid),
MKOSI_CONFIG="/work/config.json",
+ **GIT_ENV,
)
if context.config.profile:
env["PROFILE"] = context.config.profile
- with (
- finalize_chroot_scripts(context) as cd,
- finalize_source_mounts(context.config, ephemeral=context.config.build_sources_ephemeral) as sources,
- ):
+ with finalize_source_mounts(context.config, ephemeral=context.config.build_sources_ephemeral) as sources:
for script in context.config.finalize_scripts:
chroot = chroot_cmd(resolve=context.config.with_network)
*sources,
Mount(script, "/work/finalize", ro=True),
Mount(json, "/work/config.json", ro=True),
- Mount(cd, "/work/scripts", ro=True),
Mount(context.root, "/buildroot"),
Mount(context.staging, "/work/out"),
*context.config.distribution.package_manager(context.config).mounts(context),