aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/prepare-svscan
diff options
context:
space:
mode:
authorPS <p@0x53.net>2026-02-01 12:02:03 +0100
committerPS <p@0x53.net>2026-02-01 12:02:03 +0100
commit980c5408489a3a3a56e49c3873f1bce6a0155cad (patch)
tree91df5fa62e7eca03d04b8ed114b20b337b99a556 /src/bin/prepare-svscan
downloadgoetia-base-980c5408489a3a3a56e49c3873f1bce6a0155cad.tar.gz
goetia-base-980c5408489a3a3a56e49c3873f1bce6a0155cad.tar.bz2
goetia-base-980c5408489a3a3a56e49c3873f1bce6a0155cad.zip
version 0.2.0.0
Diffstat (limited to 'src/bin/prepare-svscan')
-rwxr-xr-xsrc/bin/prepare-svscan37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/bin/prepare-svscan b/src/bin/prepare-svscan
new file mode 100755
index 0000000..9fe7f8d
--- /dev/null
+++ b/src/bin/prepare-svscan
@@ -0,0 +1,37 @@
+#!@shebangdir@/execlineb -Ws4
+
+# ISC license.
+
+multisubstitute {
+ define WORKINGDIR ${1}
+ define RUNDIR ${2}
+ define BUNDLE ${3}
+ define PROG ${4}
+}
+
+redirfd -r 0 /dev/null
+execline-umask 0022
+
+if { mkdir -p -m750 -- ${RUNDIR} }
+foreground { cp -RfpL -- ${WORKINGDIR}/run-image/. ${RUNDIR}/ }
+
+if { mkfifo -m700 ${RUNDIR}/service/s6-svscan-log/fifo }
+redirfd -wnb 1 ${RUNDIR}/service/s6-svscan-log/fifo
+
+background {
+ redirfd -w 2 ${RUNDIR}/service/s6-svscan-log/fifo
+ if -x0 -n { eltest -d ${RUNDIR}/s6-rc }
+ foreground { echo "\ninit!\n" }
+ if {
+ s6-rc-init
+ -c ${WORKINGDIR}/compiled
+ -l ${RUNDIR}/s6-rc
+ ${RUNDIR}/service
+ }
+ foreground { echo "\nStarting bundle ${BUNDLE}...\n" }
+ s6-rc -l ${RUNDIR}/s6-rc -v2 -b -t@timeout@ -up change ${BUNDLE}
+}
+fdmove -c 2 1
+
+s6-envdir -I ${WORKINGDIR}/env
+${PROG} ${@}