diff options
-rw-r--r-- | doc/s6-rc-compile.html | 5 | ||||
-rw-r--r-- | src/s6-rc/s6-rc-compile.c | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/doc/s6-rc-compile.html b/doc/s6-rc-compile.html index 4d9aeeb..49b4b6d 100644 --- a/doc/s6-rc-compile.html +++ b/doc/s6-rc-compile.html @@ -269,6 +269,11 @@ producers. </li> definition directory, and the producer must be declared in the <tt>producer</tt> file in its logger's definition directory. If it sees an inconsistency, s6-rc-compile will complain and exit 1. </li> + <li> The producer will automatically have a dependency to its logger (because, +as much as systemd would have you believe the opposite, it is +not safe to start a service while its logger is not up). This means that a +<a href="s6-rc.html">s6-rc change</a> command to start the service will +automatically start the logger beforehand if it's not already up. </li> </ul> <h2> A complete example </h2> diff --git a/src/s6-rc/s6-rc-compile.c b/src/s6-rc/s6-rc-compile.c index b2b82dd..94d185a 100644 --- a/src/s6-rc/s6-rc-compile.c +++ b/src/s6-rc/s6-rc-compile.c @@ -32,8 +32,8 @@ #define S6RC_ONESHOT_RUNNER_RUNSCRIPT \ "#!" EXECLINE_EXTBINPREFIX "execlineb -P\n" \ EXECLINE_EXTBINPREFIX "fdmove -c 2 1\n" \ +EXECLINE_EXTBINPREFIX "fdmove -c 1 3\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 -v0 -E -l0 -i data/rules --\n" \ S6_EXTBINPREFIX "s6-sudod -t 2000 --\n" @@ -828,6 +828,7 @@ 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/" S6RC_ONESHOT_RUNNER) ; + auto_file(compiled, "servicedirs/" S6RC_ONESHOT_RUNNER "/notification-fd", "3\n", 2) ; 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") ; |