summaryrefslogtreecommitdiffstats
path: root/encap/tools/daemontools/daemontools-0.76.ep
diff options
context:
space:
mode:
authorDaniel Joseph Barnhart Clark <dclark@pobox.com>2006-08-05 19:19:27 +0000
committerDaniel Joseph Barnhart Clark <dclark@pobox.com>2006-08-05 19:19:27 +0000
commit46e88c9f72f5994aa7d7bf5f20aa6c002309bf7e (patch)
tree4f8c89adcb0830cc99d97168dcda4877c5df89c0 /encap/tools/daemontools/daemontools-0.76.ep
parent8f53e1d47c3f7a8ee2a1fe0290405e840cf1dadd (diff)
downloadbcfg2-46e88c9f72f5994aa7d7bf5f20aa6c002309bf7e.tar.gz
bcfg2-46e88c9f72f5994aa7d7bf5f20aa6c002309bf7e.tar.bz2
bcfg2-46e88c9f72f5994aa7d7bf5f20aa6c002309bf7e.zip
* Added Makefiles for tools
* Fixes for daemontools - .svscan logging works now. git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@2046 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'encap/tools/daemontools/daemontools-0.76.ep')
-rw-r--r--encap/tools/daemontools/daemontools-0.76.ep112
1 files changed, 110 insertions, 2 deletions
diff --git a/encap/tools/daemontools/daemontools-0.76.ep b/encap/tools/daemontools/daemontools-0.76.ep
index 21e8c8293..e61ec1217 100644
--- a/encap/tools/daemontools/daemontools-0.76.ep
+++ b/encap/tools/daemontools/daemontools-0.76.ep
@@ -8,6 +8,7 @@
>
<prereq package="patch-2.5.9" />
+<prereq package="m4-1.4.4" />
<environment
variable="CC"
@@ -271,6 +272,11 @@ cp package/run.rclocal ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
</source>
<prepackage>
+mv package/run package/run.orig
+mv package/run.inittab package/run.inittab.orig
+mv package/boot.inittab package/boot.inittab.orig
+mv package/run.rclocal package/run.inittab.orig
+mv package/boot.rclocal package/boot.inittab.orig
mkdir var 2>/dev/null || exit 1
mkdir var/svc.d 2>/dev/null || exit 1
mkdir var/svc.d/svscan 2>/dev/null || exit 1
@@ -285,6 +291,109 @@ exec 2>&1
exec /command/multilog t /usr/local/var/multilog/svscan
]]></include_file>
+<include_file name="bin/svscan.rc" mode="0755"><![CDATA[
+#!/bin/sh
+# svscan.rc - replacement for /command/svscanboot
+# * Combined with .svscan patch, logs svscan to a file
+# * If /service/*/shutdown exists, run it before killing service
+
+PATH=/command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
+SERVICES=${2:-"/service"}
+
+exec </dev/null >/dev/null 2>&1
+
+for log_dir in "$SERVICES"/*/log "$SERVICES"/.svscan/log; do
+ if [ -d "$log_dir" ] \
+ && svok "$log_dir" \
+ && svstat "$log_dir" | grep -q ": up"
+ then
+ svc -ox "$log_dir"
+ fi
+done
+
+for service_dir in "$SERVICES"/*; do
+ if [ -d "$service_dir" ] \
+ && svok "$service_dir" \
+ && svstat "$service_dir" | grep -q ": up"
+ then
+ [ -x "$service_dir"/shutdown ] && "$service_dir"/shutdown
+ svc -dx "$service_dir"
+ fi
+done
+
+[ "$1" = "start" ] && exec env - PATH=$PATH svscan "$SERVICES"
+]]></include_file>
+
+<include_file name="package/run" mode="0755"><![CDATA[
+#!/bin/sh -e
+
+umask 022
+test -d package || ( echo 'Wrong working directory.'; exit 1 )
+test -d src || ( echo 'Wrong working directory.'; exit 1 )
+
+if test -d /service
+then
+ echo '/service exists. I assume that svscan is already running.'
+ exit 0
+fi
+
+echo 'Creating /service...'
+mkdir /service
+echo 'Creating symlink /service/.svscan -> /usr/local/var/svc.d/svscan ...'
+ln -s /usr/local/var/svc.d/svscan /service/.svscan
+
+if test -r /etc/inittab
+then
+ /command/setlock /etc/inittab package/run.inittab
+else
+ /command/setlock /etc/rc.local package/run.rclocal
+fi
+]]></include_file>
+
+<include_file name="package/run.inittab" mode="0755"><![CDATA[
+#!/bin/sh -e
+
+if grep svscan.rc /etc/inittab >/dev/null
+then
+ echo 'inittab contains an svscan.rc line. I assume that svscan is already running.
+'
+else
+ echo 'Adding svscan.rc to inittab...'
+ rm -f /etc/inittab'{new}'
+ cat /etc/inittab package/boot.inittab > /etc/inittab'{new}'
+ mv -f /etc/inittab'{new}' /etc/inittab
+ kill -HUP 1
+ echo 'init should start svscan now.'
+fi
+]]></include_file>
+
+<include_file name="package/boot.inittab" mode="0644"><![CDATA[
+
+SV:2345:respawn:/command/svscan.rc start
+SZ:S016:once:/command/svscan.rc stop
+]]></include_file>
+
+<include_file name="package/run.rclocal" mode="0755"><![CDATA[
+#!/bin/sh -e
+
+if grep svscan.rc /etc/rc.local >/dev/null
+then
+ echo 'rc.local contains an svscan.rc line. I assume that svscan is already running
+.'
+else
+ echo 'Adding svscan.rc to /etc/rc.local...'
+ rm -f /etc/rc.local'{new}'
+ cat /etc/rc.local package/boot.rclocal > /etc/rc.local'{new}'
+ mv -f /etc/rc.local'{new}' /etc/rc.local
+ echo 'Reboot now to start svscan.'
+fi
+]]></include_file>
+
+<include_file name="package/boot.rclocal" mode="0644"><![CDATA[
+
+csh -cf '/command/svscan.rc start &'
+]]></include_file>
+
<include_file name="postinstall" mode="0755"><![CDATA[
#!/bin/sh -e
umask 002
@@ -293,11 +402,10 @@ LOG=${BASEDIR}/postinstall.log
exec > $LOG 2>&1
printf "Running daemontools postinstall script...\n"
date
+test -d /usr/local/var || mkdir /usr/local/var
test -d /usr/local/var/multilog || mkdir /usr/local/var/multilog
test -d /usr/local/var/multilog/svscan || mkdir /usr/local/var/multilog/svscan
test -h /command || ln -s /usr/local/encap/daemontools-0.76/bin /command
-test -d /service || mkdir /service
-test -h /service/.svscan || ln -s /usr/local/var/svc.d/svscan /service/.svscan
cd /usr/local/encap/daemontools-0.76 && ./package/run
printf "Finished daemontools postinstall script.\n"
]]></include_file>