]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Give scripts access to sys.stdin
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 2 Aug 2023 12:54:51 +0000 (14:54 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 2 Aug 2023 12:54:51 +0000 (14:54 +0200)
It's very useful to be able to put "bash" in a script to get a shell,
so let's support that.

mkosi/__init__.py
mkosi/run.py

index 3f99d356849293dbd07c3ed2f276d725c10dd3e9..199cfb05ff2401fa460dd8e412cd32c9ae52a5ef 100644 (file)
@@ -195,6 +195,7 @@ def run_prepare_script(state: MkosiState, build: bool) -> None:
                 apivfs=state.root,
                 scripts=dict(chroot=chroot_cmd(state.root, options=options, network=True)),
                 env=dict(SRCDIR="/work/src") | state.config.environment,
+                stdin=sys.stdin,
             )
             shutil.rmtree(state.root / "work")
     else:
@@ -204,6 +205,7 @@ def run_prepare_script(state: MkosiState, build: bool) -> None:
                 apivfs=state.root,
                 scripts=dict(chroot=chroot_cmd(state.root, options=options, network=True)),
                 env=dict(SRCDIR="/work/src") | state.config.environment,
+                stdin=sys.stdin,
             )
             shutil.rmtree(state.root / "work")
 
@@ -253,6 +255,7 @@ def run_build_script(state: MkosiState) -> None:
             apivfs=state.root,
             scripts=dict(chroot=chroot_cmd(state.root, options=options, network=state.config.with_network)),
             env=env | state.config.environment,
+            stdin=sys.stdin,
         )
 
 
@@ -272,6 +275,7 @@ def run_postinst_script(state: MkosiState) -> None:
                 ),
             ),
             env=state.config.environment,
+            stdin=sys.stdin,
         )
 
         shutil.rmtree(state.root / "work")
index b4b30d036efd81e4bd14f5bd28e4f1b051e7315d..8f1eee7ebbacf2a46c3d0e54cd2b0770b6ccfbdc 100644 (file)
@@ -257,6 +257,7 @@ def bwrap(
     log: bool = True,
     scripts: Mapping[str, Sequence[PathString]] = {},
     env: Mapping[str, str] = {},
+    stdin: _FILE = None,
 ) -> CompletedProcess:
     cmdline: list[PathString] = [
         "bwrap",
@@ -336,7 +337,7 @@ def bwrap(
         cmdline += ["sh", "-c", f"{chmod} && {container} && exec $0 \"$@\" || exit $?"]
 
         try:
-            result = run([*cmdline, *cmd], env=env, log=False)
+            result = run([*cmdline, *cmd], env=env, log=False, stdin=stdin)
         except subprocess.CalledProcessError as e:
             if log:
                 logging.error(f"\"{' '.join(str(s) for s in cmd)}\" returned non-zero exit code {e.returncode}.")