Hi, runsvdir and runit-init work fine so far on i386 (-current), even if I find it weird that upstream goes back to /service - I just symlinked /service to /var/service, the ''install -d /service'' step in rc_pre() does respect that.
etc/openbsd/3 would obviously need patching to work properly out of the box (it calls sv(8) while this one isn't in PATH); perl -pie can help but caring about this could be interpreted as "remplacing init with runit is supported", so... :) Attached is a lightly tested patch to handle ctrlaltdel. The OpenBSD kernel sends pid 1 SIGUSR1, not SIGINT, the patch basically makes runit consider both as equivalent; that is different from the way our init handles them but that's good enough at least for my use case. It would of course need more tweaking before being sent upstream. -- Jérémie Courrèges-Anglas GPG Key fingerprint: 61DB D9A0 00A4 67CF 2A90 8961 6191 8FBF 06A1 1494
diff -pruN /usr/ports/sysutils/runit/patches/patch-src_runit_c /usr/ports/mystuff/sysutils/runit/patches/patch-src_runit_c --- /usr/ports/sysutils/runit/patches/patch-src_runit_c Thu Jan 1 01:00:00 1970 +++ /usr/ports/mystuff/sysutils/runit/patches/patch-src_runit_c Mon Dec 10 04:03:46 2012 @@ -0,0 +1,38 @@ +$OpenBSD$ +Add SIGUSR1 support. +--- src/runit.c.orig Sun Dec 9 19:35:19 2012 ++++ src/runit.c Sun Dec 9 19:38:42 2012 +@@ -66,6 +66,8 @@ int main (int argc, const char * const *argv, char * c + sig_block(sig_hangup); + sig_block(sig_int); + sig_catch(sig_int, sig_int_handler); ++ sig_block(sig_usr1); ++ sig_catch(sig_usr1, sig_int_handler); + sig_block(sig_pipe); + sig_block(sig_term); + +@@ -129,6 +131,8 @@ int main (int argc, const char * const *argv, char * c + sig_unblock(sig_hangup); + sig_unblock(sig_int); + sig_uncatch(sig_int); ++ sig_unblock(sig_usr1); ++ sig_uncatch(sig_usr1); + sig_unblock(sig_pipe); + sig_unblock(sig_term); + +@@ -145,6 +149,7 @@ int main (int argc, const char * const *argv, char * c + sig_unblock(sig_child); + sig_unblock(sig_cont); + sig_unblock(sig_int); ++ sig_unblock(sig_usr1); + #ifdef IOPAUSE_POLL + poll(&x, 1, 14000); + #else +@@ -156,6 +161,7 @@ int main (int argc, const char * const *argv, char * c + sig_block(sig_cont); + sig_block(sig_child); + sig_block(sig_int); ++ sig_block(sig_usr1); + + while (read(selfpipe[0], &ch, 1) == 1) {} + while ((child =wait_nohang(&wstat)) > 0) diff -pruN /usr/ports/sysutils/runit/patches/patch-src_sig_c /usr/ports/mystuff/sysutils/runit/patches/patch-src_sig_c --- /usr/ports/sysutils/runit/patches/patch-src_sig_c Thu Jan 1 01:00:00 1970 +++ /usr/ports/mystuff/sysutils/runit/patches/patch-src_sig_c Mon Dec 10 04:03:58 2012 @@ -0,0 +1,12 @@ +$OpenBSD$ +Add SIGUSR1 support. +--- src/sig.c.orig Sun Oct 4 22:44:02 2009 ++++ src/sig.c Sun Dec 9 19:31:42 2012 +@@ -10,6 +10,7 @@ int sig_hangup = SIGHUP; + int sig_int = SIGINT; + int sig_pipe = SIGPIPE; + int sig_term = SIGTERM; ++int sig_usr1 = SIGUSR1; + + void (*sig_defaulthandler)() = SIG_DFL; + void (*sig_ignorehandler)() = SIG_IGN; diff -pruN /usr/ports/sysutils/runit/patches/patch-src_sig_h /usr/ports/mystuff/sysutils/runit/patches/patch-src_sig_h --- /usr/ports/sysutils/runit/patches/patch-src_sig_h Thu Jan 1 01:00:00 1970 +++ /usr/ports/mystuff/sysutils/runit/patches/patch-src_sig_h Mon Dec 10 04:04:04 2012 @@ -0,0 +1,12 @@ +$OpenBSD$ +Add SIGUSR1 support. +--- src/sig.h.orig Sun Dec 9 19:48:13 2012 ++++ src/sig.h Sun Dec 9 19:48:04 2012 +@@ -10,6 +10,7 @@ extern int sig_hangup; + extern int sig_int; + extern int sig_pipe; + extern int sig_term; ++extern int sig_usr1; + + extern void (*sig_defaulthandler)(); + extern void (*sig_ignorehandler)();