aboutsummaryrefslogtreecommitdiffstats
path: root/src/s6-rc/s6-rc-compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/s6-rc/s6-rc-compile.c')
-rw-r--r--src/s6-rc/s6-rc-compile.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/s6-rc/s6-rc-compile.c b/src/s6-rc/s6-rc-compile.c
index ab79463..87808ef 100644
--- a/src/s6-rc/s6-rc-compile.c
+++ b/src/s6-rc/s6-rc-compile.c
@@ -20,9 +20,10 @@
#include <skalibs/skamisc.h>
#include <skalibs/avltree.h>
#include <skalibs/unix-transactional.h>
+#include <execline/config.h>
#include <execline/execline.h>
+#include <s6/config.h>
#include <s6-rc/s6rc.h>
-#include "s6-rc-compile.h"
#ifdef DEBUG
# include <skalibs/lolstdio.h>
@@ -35,6 +36,15 @@
#define dieusage() strerr_dieusage(100, USAGE)
#define dienomem() strerr_dief1x(111, "out of memory") ;
+#define S6RC_ONESHOT_RUNNER_RUNSCRIPT \
+"#!" EXECLINE_EXTBINPREFIX "execlineb -P\n" \
+EXECLINE_EXTBINPREFIX "fdmove -c 2 1\n" \
+S6_EXTBINPREFIX "s6-ipcserver-socketbinder -- s\n" \
+S6_EXTBINPREFIX "s6-notifywhenup -f --\n" \
+S6_EXTBINPREFIX "s6-ipcserverd -1 --\n" \
+S6_EXTBINPREFIX "s6-ipcserver-access -E -l0 -i data/rules --\n" \
+S6_EXTBINPREFIX "s6-sudod -t 2000 --\n"
+
static unsigned int verbosity = 1 ;
static stralloc keep = STRALLOC_ZERO ;
static stralloc data = STRALLOC_ZERO ;
@@ -235,7 +245,7 @@ static inline void add_specials (before_t *be)
.logrelated = 0,
.logtype = 0
} ;
- add_name(be, "(s6-rc-compile internals)", SPECIAL_NAME, SVTYPE_LONGRUN, &service.common.name, &service.common.kname) ;
+ add_name(be, "(s6-rc-compile internals)", S6RC_ONESHOT_RUNNER, SVTYPE_LONGRUN, &service.common.name, &service.common.kname) ;
if (!stralloc_cats(&keep, data.s + service.common.name)
|| !stralloc_0(&keep)) dienomem() ;
if (!genalloc_append(longrun_t, &be->longruns, &service)) dienomem() ;
@@ -364,7 +374,7 @@ static inline void add_oneshot (before_t *be, int dirfd, char const *srcdir, cha
service.common.ndeps++ ;
}
else if (verbosity)
- strerr_warnw6x(srcdir, "/", name, "/dependencies", " explicitly lists ", SPECIAL_NAME) ;
+ strerr_warnw6x(srcdir, "/", name, "/dependencies", " explicitly lists ", S6RC_ONESHOT_RUNNER) ;
if (verbosity >= 4)
{
unsigned int i = service.common.ndeps ;
@@ -838,16 +848,16 @@ static inline void write_sizes (char const *compiled, s6rc_db_t const *db)
static inline void write_specials (char const *compiled)
{
- auto_dir(compiled, "servicedirs/" SPECIAL_NAME) ;
- auto_dir(compiled, "servicedirs/" SPECIAL_NAME "/data") ;
- auto_dir(compiled, "servicedirs/" SPECIAL_NAME "/data/rules") ;
- auto_dir(compiled, "servicedirs/" SPECIAL_NAME "/data/rules/uid") ;
- auto_dir(compiled, "servicedirs/" SPECIAL_NAME "/data/rules/uid/default") ;
- auto_file(compiled, "servicedirs/" SPECIAL_NAME "/data/rules/uid/default/deny", "", 0) ;
- auto_dir(compiled, "servicedirs/" SPECIAL_NAME "/data/rules/uid/0") ;
- auto_file(compiled, "servicedirs/" SPECIAL_NAME "/data/rules/uid/0/allow", "", 0) ;
- auto_file(compiled, "servicedirs/" SPECIAL_NAME "/run", SPECIAL_RUNSCRIPT, sizeof(SPECIAL_RUNSCRIPT) - 1) ;
- auto_rights(compiled, "servicedirs/" SPECIAL_NAME "/run", 0755) ;
+ auto_dir(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER) ;
+ auto_dir(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data") ;
+ auto_dir(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data/rules") ;
+ auto_dir(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data/rules/uid") ;
+ auto_dir(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data/rules/uid/default") ;
+ auto_file(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data/rules/uid/default/deny", "", 0) ;
+ auto_dir(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data/rules/uid/0") ;
+ auto_file(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/data/rules/uid/0/allow", "", 0) ;
+ auto_file(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/run", S6RC_ONESHOT_RUNNER_RUNSCRIPT, sizeof(S6RC_ONESHOT_RUNNER_RUNSCRIPT) - 1) ;
+ auto_rights(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/run", 0755) ;
}
static inline void write_resolve (char const *compiled, s6rc_db_t const *db, bundle_t const *bundles, unsigned int nbundles, uint32 const *bdeps)