diffstat of debian/ for runit_2.1.2-3 runit_2.1.2-3finnix1 debian/diff/stage-4.diff | 36 ++++++++++++++++++++++++++++++++++++ runit-2.1.2/debian/changelog | 6 ++++++ 2 files changed, 42 insertions(+) diff -u runit-2.1.2/debian/changelog runit-2.1.2/debian/changelog --- runit-2.1.2/debian/changelog +++ runit-2.1.2/debian/changelog @@ -1,3 +1,9 @@ +runit (2.1.2-3finnix1) unstable; urgency=low + + * Re-add stage 4 + + -- Ryan Finnie Fri, 15 May 2015 13:23:43 -0700 + runit (2.1.2-3) unstable; urgency=medium * workaround #766187 by copying from sysvinit-2.88dsf: --- runit-2.1.2.orig/debian/diff/stage-4.diff +++ runit-2.1.2/debian/diff/stage-4.diff @@ -0,0 +1,36 @@ +diff -ruN a/runit-2.1.2/src/runit.c b/runit-2.1.2/src/runit.c +--- a/runit-2.1.2/src/runit.c 2009-10-04 13:44:02.000000000 -0700 ++++ b/runit-2.1.2/src/runit.c 2013-10-10 16:03:21.738259966 -0700 +@@ -22,10 +22,11 @@ + #define WARNING "- runit: warning: " + #define FATAL "- runit: fatal: " + +-const char * const stage[3] ={ ++const char * const stage[4] ={ + "/etc/runit/1", + "/etc/runit/2", +- "/etc/runit/3" }; ++ "/etc/runit/3", ++ "/etc/runit/4" }; + + int selfpipe[2]; + int sigc =0; +@@ -94,7 +95,17 @@ + ": booting.", 0); + + /* runit */ +- for (st =0; st < 3; st++) { ++ for (st =0; st < 4; st++) { ++ /* stage 4 gets control of pid 1 */ ++ if (st == 3) { ++ if ((stat(stage[st], &s) != -1) && (s.st_mode & S_IXUSR)) { ++ prog[0] =stage[st]; ++ prog[1] =0; ++ strerr_warn3(INFO, "enter stage: ", stage[st], 0); ++ execve(*prog, (char *const *)prog, envp); ++ strerr_die4sys(0, FATAL, "unable to exec: ", stage[st], ": "); ++ } ++ } + /* if (st == 2) logwtmp("~", "reboot", ""); */ + while ((pid =fork()) == -1) { + strerr_warn4(FATAL, "unable to fork for \"", stage[st], "\" pausing: ",