blob: 398094a8a2e5d8fe8bb97db52941f859b8b24b9a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/bin/execlineb -P
importas -D "/etc" -S XDG_CONFIG_HOME
importas -D "/run" -S XDG_RUNTIME_DIR
define STATE_DIR "${XDG_CONFIG_HOME}/s6-rc"
define LIVE_DIR "${XDG_RUNTIME_DIR}/s6-rc"
define SCAN_DIR "${XDG_RUNTIME_DIR}/service"
define SOURCE_DIR "${STATE_DIR}/src"
define COMPILED_DIR "${STATE_DIR}/compiled"
define GENERATED_DIR "${XDG_RUNTIME_DIR}/svtree-generated"
# generate additional services
if { /opt/svtree/bin/svtree-generate }
# compile s6-rc db
if { /opt/svtree/bin/svtree-compile }
# check that we have the db
if { eltest -e ${COMPILED_DIR} }
# TODO: cgroup support
#define CG /sys/fs/cgroup/usr
#if { test -d ${CG} }
#if { test -w ${CG}/cgroup.procs }
# nuke any other svscan process
foreground { s6-svscanctl -qN ${SCAN_DIR} }
foreground { s6-svwait -D ${SCAN_DIR}/s6rc-fdholder }
# cleanup
foreground { rm -rf ${SCAN_DIR} }
foreground { elglob l ${LIVE_DIR}* rm -rf ${l} }
# setup rundir
if { cp -va -- /opt/svtree/run-image/service ${SCAN_DIR} }
background {
# setup s6-rc
if { s6-rc-init -c ${COMPILED_DIR} -l ${LIVE_DIR} -db -- ${SCAN_DIR} }
# launch default target
if { s6-rc -v2 -l ${LIVE_DIR} -pu change default }
}
# catch-all logger
fdmove -c 4 2
redirfd -wnb 2 ${SCAN_DIR}/s6-svscan-log/fifo
fdmove -c 1 2
# run s6
exec s6-svscan ${SCAN_DIR}
|