diff options
40 files changed, 427 insertions, 31 deletions
diff --git a/Makefile b/Makefile index 035411f..565df3a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ DESTDIR= -PACKAGE=runit-1.0.0 +PACKAGE=runit-1.0.1 DIRS=doc man etc package src MANPAGES=runit.8 runit-init.8 runsvdir.8 runsv.8 svwaitdown.8 svwaitup.8 \ utmpset.8 runsvchdir.8 runsvstat.8 runsvctrl.8 svlogd.8 chpst.8 diff --git a/debian/changelog b/debian/changelog index 3e6642e..c66eae1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +runit (1.0.1-0.1) unstable; urgency=low + + * new upstream release. + + -- Gerrit Pape <pape@smarden.org> Sun, 22 Feb 2004 08:26:24 +0000 + runit (1.0.0-1) unstable; urgency=low * upstream stable release. diff --git a/debian/rules b/debian/rules index 639cea0..6d3daef 100755 --- a/debian/rules +++ b/debian/rules @@ -40,10 +40,10 @@ DIR =`pwd`/debian/runit build: deb-checkdir build-stamp build-stamp: - tar xfzp runit-1.0.0.tar.gz + tar xfzp runit-1.0.1.tar.gz -gcc -v - ( cd admin/runit-1.0.0/src && \ - ln -s runit-1.0.0 runit && mv runit ../.. && \ + ( cd admin/runit-1.0.1/src && \ + ln -s runit-1.0.1 runit && mv runit ../.. && \ echo "$(CC) $(CFLAGS)" >conf-cc && \ echo "$(CC) $(LDFLAGS)" >conf-ld && \ $(MAKE) ) diff --git a/doc/chpst.8.html b/doc/chpst.8.html index 69fb925..acba8b0 100644 --- a/doc/chpst.8.html +++ b/doc/chpst.8.html @@ -75,36 +75,37 @@ size to <i>bytes</i> bytes. </dd> <i>bytes</i> bytes. </dd> <dt><b>-v</b> </dt> -<dd>verbose. Print warnings about limits unsupported by the system -to standard error. </dd> +<dd>verbose. Print verbose messages to standard error. This includes +warnings about limits unsupported by the system. </dd> <dt><b>-P</b> </dt> -<dd>pgrphack. Run <i>prog</i> in a new process group. </dd> +<dd>pgrphack. Run <i>prog</i> in +a new process group. </dd> <dt><b>-0</b> </dt> -<dd>Close standard -input before running <i>prog</i>. </dd> +<dd>Close standard input before running <i>prog</i>. </dd> <dt><b>-1</b> </dt> -<dd>Close standard output before running <i>prog</i>. </dd> +<dd>Close +standard output before running <i>prog</i>. </dd> -<dt><b>-2</b> -</dt> -<dd>Close standard error before running <i>prog</i>. </dd> +<dt><b>-2</b> </dt> +<dd>Close standard error before running +<i>prog</i>. </dd> </dl> <h2><a name='sect4'>Exit Codes</a></h2> -<b>chpst</b> exits 100 when -called with wrong options. It prints an error message and exits 111 if it -has trouble changing the process state. Otherwise its exit code is the same -as that of <i>prog</i>. +<b>chpst</b> exits 100 when called with wrong options. It prints +an error message and exits 111 if it has trouble changing the process state. +Otherwise its exit code is the same as that of <i>prog</i>. <h2><a name='sect5'>Emulation</a></h2> -If <b>chpst</b> is called as <i><b>envdir</b>(8)</i>, <i><b>envuidgid</b>(8)</i>, -<i><b>pgrphack</b>(8)</i>, <i><b>setlock</b>(8)</i>, <i><b>setuidgid</b>(8)</i>, or <i><b>softlimit</b>(8)</i>, it emulates the -functionality of these programs from the daemontools package respectively. - +If <b>chpst</b> is +called as <i><b>envdir</b>(8)</i>, <i><b>envuidgid</b>(8)</i>, <i><b>pgrphack</b>(8)</i>, <i><b>setlock</b>(8)</i>, <i><b>setuidgid</b>(8)</i>, +or <i><b>softlimit</b>(8)</i>, it emulates the functionality of these programs from the +daemontools package respectively. <h2><a name='sect6'>See Also</a></h2> -<i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runsvdir(8)</i>, <i>setsid(2)</i> <p> +<i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, +<i>runsvdir(8)</i>, <i>setsid(2)</i> <p> <i>http://smarden.org/runit/</i><br> <i>http://cr.yp.to/daemontools.html</i><br> diff --git a/doc/svlogd.8.html b/doc/svlogd.8.html index 0b5d2cd..000e0f0 100644 --- a/doc/svlogd.8.html +++ b/doc/svlogd.8.html @@ -147,8 +147,8 @@ precise timestamp (see <i><b>tai64n</b>(8)</i>) when writing to <i>log</i> or to <dt><b>-tt</b> </dt> <dd>timestamp. Prefix each selected line with a human readable, sortable -timestamp of the form YYYY-MM-DD_HH:MM:SS.xxxxx when writing to <i>log</i> or to -standard error. </dd> +UTC timestamp of the form YYYY-MM-DD_HH:MM:SS.xxxxx when writing to <i>log</i> or +to standard error. </dd> <dt><b>-r <i>c</b> </i></dt> <dd>replace. <i>c</i> must be a single character. Replace non-printable diff --git a/man/chpst.8 b/man/chpst.8 index 4c05f57..6611332 100644 --- a/man/chpst.8 +++ b/man/chpst.8 @@ -143,7 +143,8 @@ bytes. .TP .B \-v verbose. -Print warnings about limits unsupported by the system to standard error. +Print verbose messages to standard error. +This includes warnings about limits unsupported by the system. .TP .B \-P pgrphack. diff --git a/package/CHANGES b/package/CHANGES index 71e7379..21a859d 100644 --- a/package/CHANGES +++ b/package/CHANGES @@ -1,7 +1,20 @@ +runit 1.0.1 +Sun, 07 Mar 2004 10:07:06 +0000 * fmt_ptime.c: create timestamps in UTC, not localtime. * chpst.c: -e dir: silently ignore directories, print warning if verbose. - * runsv.c: allow log/supervise also to be a dangling symlink; more + * runsv.c: allow also log/supervise to be a dangling symlink; more meaningful error message if opening lock or locking fails. + * check-diff, check-dist, check-local, package/check: new; run checks on + programs. + * package/install: run package/check. + * chpst.check, runit-init.check, runit.check, runsv.check, + runsvchdir.check, runsvctrl.check, runsvdir.check, runsvstat.check, + svlogd.check, svwaitdown.check, svwaitup.check, utmpset.check: new; + check program. + * chpst.dist, runit-init.dist, runit.dist, runsv.dist, runsvchdir.dist, + runsvctrl.dist, runsvdir.dist, runsvstat.dist, svlogd.dist, + svwaitdown.dist, svwaitup.dist, utmpset.dist: new; dist check program + output. runit 1.0.0 Tue, 10 Feb 2004 13:37:28 +0000 diff --git a/package/check b/package/check new file mode 100755 index 0000000..9aeb1c8 --- /dev/null +++ b/package/check @@ -0,0 +1,8 @@ +#!/bin/sh -e + +umask 022 +test -d package || ( echo 'Wrong working directory.'; exit 1 ) || exit 1 +test -d compile || ( echo 'Wrong working directory.'; exit 1 ) || exit 1 + +echo 'Checking commands in ./command...' +( cd compile; exec make check ) || exit 1 diff --git a/package/install b/package/install index 712c64d..398c6f1 100755 --- a/package/install +++ b/package/install @@ -1,4 +1,5 @@ #!/bin/sh -e package/compile +package/check package/upgrade diff --git a/package/upgrade b/package/upgrade index 5065aac..2993a78 100755 --- a/package/upgrade +++ b/package/upgrade @@ -7,9 +7,9 @@ test -d src || ( echo 'Wrong working directory.'; exit 1 ) || exit 1 here=`env - PATH=$PATH pwd` parent=`dirname $here` -echo 'Creating symlink runit -> runit-1.0.0...' +echo 'Creating symlink runit -> runit-1.0.1...' rm -f runit -ln -s runit-1.0.0 runit +ln -s runit-1.0.1 runit mv -f runit .. echo 'Making command links in /command...' diff --git a/package/versions b/package/versions index cddf044..ff26736 100644 --- a/package/versions +++ b/package/versions @@ -24,3 +24,4 @@ 0.13.0 0.13.1 1.0.0 +1.0.1 diff --git a/src/Makefile b/src/Makefile index 7320c5b..55bb71f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,7 +1,10 @@ -IT=sysdeps runit runit-init runsv runsvctrl runsvstat runsvdir runsvchdir \ -svwaitup svwaitdown utmpset svlogd chpst +IT=chpst runit runit-init runsv runsvchdir runsvctrl runsvdir runsvstat \ + svlogd svwaitdown svwaitup utmpset -default: $(IT) +default: sysdeps $(IT) + +check: $(IT) + ./check-local $(IT) runit: load runit.o unix.a byte.a ./load runit unix.a byte.a -static diff --git a/src/TARGETS b/src/TARGETS index 27d68ce..5045897 100644 --- a/src/TARGETS +++ b/src/TARGETS @@ -30,6 +30,7 @@ uw_tmp.h socket.lib trysocketlib trysocketlib.o +check alloc.o alloc_re.o buffer.o @@ -125,3 +126,15 @@ uint64.h unix.a wait_nohang.o wait_pid.o +chpst.local +runit-init.local +runit.local +runsv.local +runsvchdir.local +runsvctrl.local +runsvdir.local +runsvstat.local +svlogd.local +svwaitdown.local +svwaitup.local +utmpset.local diff --git a/src/check-diff b/src/check-diff new file mode 100755 index 0000000..d334238 --- /dev/null +++ b/src/check-diff @@ -0,0 +1,5 @@ +#!/bin/sh +while read i; do + read j 0<&7 || exit 1 + test "$i" = "$j" || exit 1 +done 7<$1.dist <$1.local diff --git a/src/check-dist b/src/check-dist new file mode 100755 index 0000000..f0c5dd5 --- /dev/null +++ b/src/check-dist @@ -0,0 +1,8 @@ +#!/bin/sh + +PATH=`pwd`:$PATH + +for i in `cat ../package/commands`; do + echo "Creating new $i.dist..." + env - PATH="$PATH" ctmp="`pwd`/check-tmp" $i.check 2>&1 |cat -v >$i.dist +done diff --git a/src/check-local b/src/check-local new file mode 100755 index 0000000..36b3ed4 --- /dev/null +++ b/src/check-local @@ -0,0 +1,9 @@ +#!/bin/sh + +PATH=`pwd`:$PATH + +for i in ${1+"$@"}; do + echo "Checking $i..." + env - PATH="$PATH" ctmp="`pwd`/check-tmp" $i.check 2>&1 |cat -v >$i.local + ./check-diff $i || ( cat $i.local; echo "$i failed."; exit 1 ) || exit 1 +done diff --git a/src/chpst.check b/src/chpst.check new file mode 100755 index 0000000..384113e --- /dev/null +++ b/src/chpst.check @@ -0,0 +1,36 @@ +#!/bin/sh +rm -rf "${ctmp}" + +chpst +echo $? +chpst -V +echo $? + +# -u +# -U + +mkdir "${ctmp}" +echo 1 >"${ctmp}"/test +chpst -e"${ctmp}" env |sed -ne '/^test=1$/p' +echo $? +rm -rf "${ctmp}" + +chpst -l"${ctmp}" true +echo $? +rm -f "${ctmp}" + +chpst -L"${ctmp}" true +echo $? +rm -f "${ctmp}" + +# -m +# -o +# -p +# -f +# -c + +chpst -P true +echo $? + +chpst -012 true +echo $? diff --git a/src/chpst.dist b/src/chpst.dist new file mode 100644 index 0000000..6ea0f75 --- /dev/null +++ b/src/chpst.dist @@ -0,0 +1,13 @@ +usage: chpst [-vP012] [-u user[:group]] [-U user[:group]] [-e dir] [-l|-L lock] [-m n] [-o n] [-p n] [-f n] [-c n] prog + +100 +$Id$ +usage: chpst [-vP012] [-u user[:group]] [-U user[:group]] [-e dir] [-l|-L lock] [-m n] [-o n] [-p n] [-f n] [-c n] prog + +100 +test=1 +0 +0 +0 +0 +0 diff --git a/src/runit-init.check b/src/runit-init.check new file mode 100755 index 0000000..088e833 --- /dev/null +++ b/src/runit-init.check @@ -0,0 +1,3 @@ +#!/bin/sh +runit-init +echo $? diff --git a/src/runit-init.dist b/src/runit-init.dist new file mode 100644 index 0000000..cca0307 --- /dev/null +++ b/src/runit-init.dist @@ -0,0 +1,3 @@ +usage: runit-init 0|6 + +0 diff --git a/src/runit.check b/src/runit.check new file mode 100755 index 0000000..87f02d3 --- /dev/null +++ b/src/runit.check @@ -0,0 +1,3 @@ +#!/bin/sh +runit +echo $? diff --git a/src/runit.dist b/src/runit.dist new file mode 100644 index 0000000..135c411 --- /dev/null +++ b/src/runit.dist @@ -0,0 +1,2 @@ +- runit: fatal: must be run as process no 1. +111 diff --git a/src/runsv.check b/src/runsv.check new file mode 100755 index 0000000..40fc7b2 --- /dev/null +++ b/src/runsv.check @@ -0,0 +1,45 @@ +#!/bin/sh +rm -rf "${ctmp}" + +runsv +echo $? + +mkdir "${ctmp}" +echo '#!/bin/sh' >"${ctmp}"/run +echo 'echo starting' >>"${ctmp}"/run +echo 'exec sleep 14' >>"${ctmp}"/run +chmod 700 "${ctmp}"/run +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/supervise/stat || sleep 2 +cat "${ctmp}"/supervise/stat +echo x >"${ctmp}"/supervise/control +wait +echo $? + +mkdir "${ctmp}"/log +echo '#!/bin/sh' >"${ctmp}"/log/run +echo 'exec cat >foo' >>"${ctmp}"/log/run +chmod 700 "${ctmp}"/log/run +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/log/supervise/stat || sleep 2 +echo x >"${ctmp}"/supervise/control +wait +echo $? +cat "${ctmp}"/log/foo + +rm -rf "${ctmp}"/supervise +rm -rf "${ctmp}"/log/supervise +rm -f "${ctmp}"/log/foo +ln -s foo "${ctmp}"/supervise +ln -s bar "${ctmp}"/log/supervise +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/supervise/stat || sleep 2 +test -r "${ctmp}"/log/supervise/stat || sleep 2 +echo x >"${ctmp}"/foo/control +wait +echo $? +cat "${ctmp}"/log/foo +rm -rf "${ctmp}" diff --git a/src/runsv.dist b/src/runsv.dist new file mode 100644 index 0000000..3887bdf --- /dev/null +++ b/src/runsv.dist @@ -0,0 +1,10 @@ +usage: runsv dir + +1 +starting +run +0 +0 +starting +0 +starting diff --git a/src/runsvchdir.check b/src/runsvchdir.check new file mode 100755 index 0000000..a8de02b --- /dev/null +++ b/src/runsvchdir.check @@ -0,0 +1,3 @@ +#!/bin/sh +runsvchdir +echo $? diff --git a/src/runsvchdir.dist b/src/runsvchdir.dist new file mode 100644 index 0000000..7664608 --- /dev/null +++ b/src/runsvchdir.dist @@ -0,0 +1,3 @@ +usage: runsvchdir dir + +1 diff --git a/src/runsvctrl.check b/src/runsvctrl.check new file mode 100755 index 0000000..7911074 --- /dev/null +++ b/src/runsvctrl.check @@ -0,0 +1,23 @@ +#!/bin/sh +rm -rf "${ctmp}" + +runsvctrl +echo $? + +mkdir "${ctmp}" +echo '#!/bin/sh' >"${ctmp}"/run +echo 'echo starting' >>"${ctmp}"/run +echo 'exec sleep 14' >>"${ctmp}"/run +chmod 700 "${ctmp}"/run +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/supervise/stat || sleep 2 +runsvctrl down "${ctmp}" +echo $? +sleep 1 +cat "${ctmp}"/supervise/stat +runsvctrl exit "${ctmp}" +echo $? +wait +echo $? +rm -rf "${ctmp}" diff --git a/src/runsvctrl.dist b/src/runsvctrl.dist new file mode 100644 index 0000000..c80a757 --- /dev/null +++ b/src/runsvctrl.dist @@ -0,0 +1,8 @@ +usage: runsvctrl u|d|o|p|c|h|a|i|1|2|t|k|x|e service ... + +1 +starting +0 +down +0 +0 diff --git a/src/runsvdir.check b/src/runsvdir.check new file mode 100755 index 0000000..a7927eb --- /dev/null +++ b/src/runsvdir.check @@ -0,0 +1,3 @@ +#!/bin/sh +runsvdir +echo $? diff --git a/src/runsvdir.dist b/src/runsvdir.dist new file mode 100644 index 0000000..dbb086f --- /dev/null +++ b/src/runsvdir.dist @@ -0,0 +1,3 @@ +usage: runsvdir dir + +1 diff --git a/src/runsvstat.check b/src/runsvstat.check new file mode 100755 index 0000000..6ccde11 --- /dev/null +++ b/src/runsvstat.check @@ -0,0 +1,26 @@ +#!/bin/sh +rm -rf "${ctmp}" + +runsvstat +echo $? +runsvstat -V +echo $? + +mkdir "${ctmp}" +echo '#!/bin/sh' >"${ctmp}"/run +echo 'echo starting' >>"${ctmp}"/run +echo 'exec sleep 14' >>"${ctmp}"/run +chmod 700 "${ctmp}"/run +chpst -2 runsvstat "${ctmp}" +echo $? +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/supervise/stat || sleep 2 +chpst -1 runsvstat "${ctmp}" +echo $? +runsvctrl exit "${ctmp}" +wait +echo $? +chpst -2 runsvstat "${ctmp}" +echo $? +rm -rf "${ctmp}" diff --git a/src/runsvstat.dist b/src/runsvstat.dist new file mode 100644 index 0000000..24b9ed4 --- /dev/null +++ b/src/runsvstat.dist @@ -0,0 +1,12 @@ +usage: runsvstat [ -l ] service ... + +1 +$Id$ +usage: runsvstat [ -l ] service ... + +1 +1 +starting +0 +0 +1 diff --git a/src/svlogd.check b/src/svlogd.check new file mode 100755 index 0000000..ea8e3f2 --- /dev/null +++ b/src/svlogd.check @@ -0,0 +1,21 @@ +#!/bin/sh +rm -rf "${ctmp}" + +svlogd +echo $? +svlogd -V +echo $? + +mkdir "${ctmp}" +echo foo |svlogd "${ctmp}" +echo $? +cat "${ctmp}"/current + +( echo bar; echo baz ) |svlogd "${ctmp}" +echo $? +cat "${ctmp}"/current + +( echo foo; echo bar; echo baz ) |svlogd -r: -R fb "${ctmp}" +echo $? +cat "${ctmp}"/current +rm -rf "${ctmp}" diff --git a/src/svlogd.dist b/src/svlogd.dist new file mode 100644 index 0000000..e150c05 --- /dev/null +++ b/src/svlogd.dist @@ -0,0 +1,20 @@ +usage: svlogd [-tv] [-r c] [-R abc] [-l n ] [-b n] dir ... + +111 +$Id$ +usage: svlogd [-tv] [-r c] [-R abc] [-l n ] [-b n] dir ... + +111 +0 +foo +0 +foo +bar +baz +0 +foo +bar +baz +:oo +:ar +:az diff --git a/src/svwaitdown.check b/src/svwaitdown.check new file mode 100755 index 0000000..5cf6c21 --- /dev/null +++ b/src/svwaitdown.check @@ -0,0 +1,24 @@ +#!/bin/sh +rm -rf "${ctmp}" + +svwaitdown +echo $? +svwaitdown -V +echo $? + +mkdir "${ctmp}" +echo '#!/bin/sh' >"${ctmp}"/run +echo 'echo starting' >>"${ctmp}"/run +echo 'exec sleep 14' >>"${ctmp}"/run +chmod 700 "${ctmp}"/run +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/supervise/stat || sleep 2 +svwaitdown "${ctmp}" +echo $? +svwaitdown -x "${ctmp}" +echo $? +cat "${ctmp}"/supervise/stat +wait +echo $? +rm -rf "${ctmp}" diff --git a/src/svwaitdown.dist b/src/svwaitdown.dist new file mode 100644 index 0000000..94b9352 --- /dev/null +++ b/src/svwaitdown.dist @@ -0,0 +1,12 @@ +usage: svwaitdown [-v] [-t 2..6000] service ... + +1 +$Id$ +usage: svwaitdown [-v] [-t 2..6000] service ... + +1 +starting +0 +0 +down +0 diff --git a/src/svwaitup.check b/src/svwaitup.check new file mode 100755 index 0000000..a1be802 --- /dev/null +++ b/src/svwaitup.check @@ -0,0 +1,28 @@ +#!/bin/sh +rm -rf "${ctmp}" + +svwaitup +echo $? +svwaitup -V +echo $? + +mkdir "${ctmp}" +echo '#!/bin/sh' >"${ctmp}"/run +echo 'echo starting' >>"${ctmp}"/run +echo 'exec sleep 14' >>"${ctmp}"/run +chmod 700 "${ctmp}"/run +runsv "${ctmp}" & +sleep 1 +test -r "${ctmp}"/supervise/stat || sleep 2 +svwaitup "${ctmp}" +echo $? +cat "${ctmp}"/supervise/stat +svwaitup -s2 "${ctmp}" +echo $? +cat "${ctmp}"/supervise/stat +runsvctrl exit "${ctmp}" +wait +echo $? +chpst -2 svwaitup -s2 "${ctmp}" +echo $? +rm -rf "${ctmp}" diff --git a/src/svwaitup.dist b/src/svwaitup.dist new file mode 100644 index 0000000..f136bd1 --- /dev/null +++ b/src/svwaitup.dist @@ -0,0 +1,14 @@ +usage: svwaitup [-v] [-s 2..600] service ... + +1 +$Id$ +usage: svwaitup [-v] [-s 2..600] service ... + +1 +starting +0 +run +0 +run +0 +1 diff --git a/src/utmpset.check b/src/utmpset.check new file mode 100755 index 0000000..51cf1a4 --- /dev/null +++ b/src/utmpset.check @@ -0,0 +1,5 @@ +#!/bin/sh +utmpset +echo $? +utmpset -V +echo $? diff --git a/src/utmpset.dist b/src/utmpset.dist new file mode 100644 index 0000000..b37a1d7 --- /dev/null +++ b/src/utmpset.dist @@ -0,0 +1,7 @@ +usage: utmpset [-w] line + +1 +$Id$ +usage: utmpset [-w] line + +1 |