summaryrefslogtreecommitdiffstats
path: root/encap
diff options
context:
space:
mode:
authorDaniel Joseph Barnhart Clark <dclark@pobox.com>2007-02-20 03:08:47 +0000
committerDaniel Joseph Barnhart Clark <dclark@pobox.com>2007-02-20 03:08:47 +0000
commit79a8958bc2502912e2fbba8ca15ed1eb2377d614 (patch)
treeb5d0538885190d05eb4a469c20f5cc12e4aa0933 /encap
parent603402bbe43510ef50a10819e95854d58dd63cc4 (diff)
downloadbcfg2-79a8958bc2502912e2fbba8ca15ed1eb2377d614.tar.gz
bcfg2-79a8958bc2502912e2fbba8ca15ed1eb2377d614.tar.bz2
bcfg2-79a8958bc2502912e2fbba8ca15ed1eb2377d614.zip
EncapPackages: Move from daemontools to runit to avoid any issues with redistributing patched daemontool binaries.
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@2856 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'encap')
-rw-r--r--encap/README26
-rw-r--r--encap/src/bcfg2-site/bcfg2-site-RENAME/encapinfo.tmpl2
-rw-r--r--encap/src/bcfg2-site/bcfg2-site-RENAME/etc/ostiary.cfg.tmpl10
-rwxr-xr-xencap/src/bcfg2-site/bcfg2-site-RENAME/postinstall.tmpl28
-rwxr-xr-xencap/src/bcfg2-site/bcfg2-site-RENAME/sbin/ost-bcfg2.sh20
-rw-r--r--encap/src/encap-profiles/Makefile9
-rw-r--r--encap/src/encap-profiles/bcfg2-0.9.2.ep57
-rw-r--r--encap/src/encap-profiles/daemontools-0.76.ep533
-rw-r--r--encap/src/encap-profiles/daemontools-doc-20060731.ep62
-rw-r--r--encap/src/encap-profiles/ostiary-3.4.ep25
-rw-r--r--encap/src/encap-profiles/runit-1.7.2.ep159
-rwxr-xr-xencap/src/makeself-dist/makedist.sh16
12 files changed, 255 insertions, 692 deletions
diff --git a/encap/README b/encap/README
index 5338a07b6..76428a3c8 100644
--- a/encap/README
+++ b/encap/README
@@ -14,7 +14,7 @@ that does a complete client install, which includes:
* all software on which bcfg2 depends
* bcfg2 itself
* ostiary to kick off bcfg2 client runs remotely
- * daemontools to run bcfg2 client as a periodic service with logging
+ * runit to run bcfg2 client as a periodic service with logging
* all with site-specific configuration parameters, set at build time in a
single unified build-time configuration file, site-settings.conf
* optional install-time entry of bcfg2 and ostiary passwords, interactively
@@ -88,27 +88,25 @@ Directory with sentinel file(s) Covered config files
/usr/local/sbin ost-bcfg2.sh
}}}
-== About daemontools integration ==
+== About runit integration ==
In order to avoid a lot of platform/distribution-specific code, the encap
-bcfg2 distribution includes and uses [http://cr.yp.to/daemontools.html
-daemontools] (with some common patches) instead of init scripts and cron.
+bcfg2 distribution includes and uses [http://smarden.org/runit/useinit.html
+runit] instead of init scripts and cron.
-The bcfg2 client (.run) distribution uses daemontools to run ostiary, and to
-run the bcfg2 client periodically.
+The bcfg2 client (.run) distribution uses runit to run ostiary, and to run
+the bcfg2 client periodically.
On the server, edit `/usr/local/etc/default/bcfg2-server/env/OPTIONS` to
include the options you want to start up the bcfg2 server with, and then do
{{{
-ln -s /usr/local/var/svc.d/bcfg2-server /service/
+ln -s /usr/local/etc/sv/bcfg2-server /usr/local/var/service/
}}}
to enable the service.
-You can use `/command/svstat /service/bcfg2-server` to see the status, and
-`/command/svrm /service/bcfg2-server` to remove it.
+You can use `sv status /usr/local/var/service/bcfg2-server` to see the
+status, and `rm /usr/local/var/service/bcfg2-server` to remove it.
-Logs for all daemontools services are under `/usr/local/var/multilog`.
-They use a highly precise time format; to translate into a readable format,
-pipe the logs through `/command/tai64nlocal`.
+Logs for all runit services are under `/usr/local/var/svlogd`.
== About ostiary integration ==
In order to enable the remote kickoff of bcfg2 client runs, the bcfg2 client
@@ -125,7 +123,7 @@ compile-time or (preferably) .run file install time.
* `<password>-bcfg2-dv` : Run `bcfg2-client -d -v`
* `<password>-bcfg2-vq` : Run `bcfg2-client -v -q`
* `<password>-bcfg2-v` : Run `bcfg2-client -v`
- * `<password>-bcfg2-restart` : Restart the bcfg2-client daemontools service
+ * `<password>-bcfg2-restart` : Restart the bcfg2-client runit service
There are plans for the future for a bcfg2 plugin that will set per-machine
passwords after the initial install, however as with cfengine the worst that
@@ -142,7 +140,7 @@ point you will enter one of the above-listed values, such as
integrated into the same string).
Logs of bcfg2-client runs kicked off via ostiary are in
-`/usr/local/var/multilog/bcfg2-client-ostiary`
+`/usr/local/var/svlogd/bcfg2-client-ostiary`
== Supported Platforms ==
Below is a table of platforms that have been successfully bootstrapped using
diff --git a/encap/src/bcfg2-site/bcfg2-site-RENAME/encapinfo.tmpl b/encap/src/bcfg2-site/bcfg2-site-RENAME/encapinfo.tmpl
index f54cb1e18..998a34b4a 100644
--- a/encap/src/bcfg2-site/bcfg2-site-RENAME/encapinfo.tmpl
+++ b/encap/src/bcfg2-site/bcfg2-site-RENAME/encapinfo.tmpl
@@ -5,7 +5,7 @@ date ${DATE}
contact "${ADMIN_NAME}" <${ADMIN_EMAIL}>
description bcfg2-site-${SITE_SHORTNAME} - bcfg2 configuration for ${SITE_NAME}
prereq pkgspec >= bcfg2-0.8.2
-prereq pkgspec >= daemontools-0.76
prereq pkgspec >= ostiary-3.4
+prereq pkgspec >= runit-1.7.2
exclude etc
exclude sbin
diff --git a/encap/src/bcfg2-site/bcfg2-site-RENAME/etc/ostiary.cfg.tmpl b/encap/src/bcfg2-site/bcfg2-site-RENAME/etc/ostiary.cfg.tmpl
index ebc39b61d..2c98e910f 100644
--- a/encap/src/bcfg2-site/bcfg2-site-RENAME/etc/ostiary.cfg.tmpl
+++ b/encap/src/bcfg2-site/bcfg2-site-RENAME/etc/ostiary.cfg.tmpl
@@ -1,20 +1,20 @@
#include "site-settings.conf"
# If present, ostiaryd will shut down once the cache of bad IPs is full.
-# Under daemontools, this just has the effect of generating a service
-# restart log message.
+# Under runit, this just has the effect of generating a service restart
+# log message.
EXIT_ON_IPCACHE_FULL
# If present, ostiaryd will not detach from the terminal it was started
# from. This is useful when running ostiaryd from programs like inetd or
-# cygrunsrv or daemontools.
+# cygrunsrv or runit.
SKIP_DETACH
# Port to listen on. (Can be specified on command line.)
PORT=${OSTIARY_PORT}
# The password to remotely kill ostiaryd. Sort of useless when running under
-# daemontools, since daemontools will just start ostiaryd back up. (But it
-# is required to be in this file)
+# runit, since runit will just start ostiaryd back up. (But it is required
+# to be in this file)
KILL="${OSTIARY_PASSWORD}-kill"
# Must be at least one action. Format is:
diff --git a/encap/src/bcfg2-site/bcfg2-site-RENAME/postinstall.tmpl b/encap/src/bcfg2-site/bcfg2-site-RENAME/postinstall.tmpl
index 1ac29eb7e..c8ed2d694 100755
--- a/encap/src/bcfg2-site/bcfg2-site-RENAME/postinstall.tmpl
+++ b/encap/src/bcfg2-site/bcfg2-site-RENAME/postinstall.tmpl
@@ -124,31 +124,31 @@ else
touch ${BASEDIR}/sbin/.SENTINEL_SITE
fi
-# ostiary (daemontools)
-if [ ! -h /service/ostiary ]; then
- if [ -d /usr/local/var/svc.d/ostiary ]; then
- printf "INFO: Enabling ostiary service (via daemontools)...\n"
- ln -s /usr/local/var/svc.d/ostiary /service/ostiary
+# ostiary (runit)
+if [ ! -h /usr/local/var/service/ostiary ]; then
+ if [ -d /usr/local/etc/sv/ostiary ]; then
+ printf "INFO: Enabling ostiary service (via runit)...\n"
+ ln -s /usr/local/etc/sv/ostiary /usr/local/var/service/ostiary
else
- printf "ERROR: /usr/local/var/svc.d/ostiary does not exist.\n"
+ printf "ERROR: /usr/local/etc/sv/ostiary does not exist.\n"
exit 1
fi
else
- printf "INFO: /service/ostiary already exists, not replacing...\n"
+ printf "INFO: /usr/local/var/service/ostiary already exists, not replacing...\n"
fi
-# bcfg2-client (daemontools)
+# bcfg2-client (runit)
//if int(@BCFG2_CLIENT_RUN_INTERVAL_SECONDS) > 0
-if [ ! -h /service/bcfg2-client ]; then
- if [ -d /usr/local/var/svc.d/bcfg2-client ]; then
- printf "INFO: Enabling bcfg2-client service (via daemontools)...\n"
- ln -s /usr/local/var/svc.d/bcfg2-client /service/bcfg2-client
+if [ ! -h /usr/local/var/service/bcfg2-client ]; then
+ if [ -d /usr/local/etc/sv/bcfg2-client ]; then
+ printf "INFO: Enabling bcfg2-client service (via runit)...\n"
+ ln -s /usr/local/etc/sv/bcfg2-client /usr/local/var/service/bcfg2-client
else
- printf "ERROR: /usr/local/var/svc.d/bcfg2-client does not exist.\n"
+ printf "ERROR: /usr/local/etc/sv/bcfg2-client does not exist.\n"
printf "ERROR: Could not enable bcfg2-client service.\n"
fi
else
- printf "INFO: /service/bcfg2-client already exists, not replacing...\n"
+ printf "INFO: /usr/local/var/service/bcfg2-client already exists, not replacing...\n"
fi
//end if
diff --git a/encap/src/bcfg2-site/bcfg2-site-RENAME/sbin/ost-bcfg2.sh b/encap/src/bcfg2-site/bcfg2-site-RENAME/sbin/ost-bcfg2.sh
index 55b20caac..a446e27f0 100755
--- a/encap/src/bcfg2-site/bcfg2-site-RENAME/sbin/ost-bcfg2.sh
+++ b/encap/src/bcfg2-site/bcfg2-site-RENAME/sbin/ost-bcfg2.sh
@@ -8,19 +8,19 @@
umask 002
exec 2>&1
-LOG="multilog t /usr/local/var/multilog/bcfg2-client-ostiary"
-PATH=/usr/local/lib/bcfg2/bin:/command:/usr/local/bin:/usr/bin:/bin
+LOG="svlogd -tt /usr/local/var/svlogd/bcfg2-client-ostiary"
+PATH=/usr/local/lib/bcfg2/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case $1 in
- dvqn) bcfg2 -d -v -q -n | $LOG ;;
- dvn) bcfg2 -d -v -n | $LOG ;;
- dvq) bcfg2 -d -v -q | $LOG ;;
- dv) bcfg2 -d -v | $LOG ;;
- vq) bcfg2 -v -q | $LOG ;;
- v) bcfg2 -v | $LOG ;;
- restart) svc -t bcfg2-client | $LOG ;;
- *) printf "ERROR in $0\n" | $LOG ;;
+ dvqn) bcfg2 -d -v -q -n | $LOG ;;
+ dvn) bcfg2 -d -v -n | $LOG ;;
+ dvq) bcfg2 -d -v -q | $LOG ;;
+ dv) bcfg2 -d -v | $LOG ;;
+ vq) bcfg2 -v -q | $LOG ;;
+ v) bcfg2 -v | $LOG ;;
+ restart) sv restart bcfg2-client | $LOG ;;
+ *) printf "ERROR in $0\n" | $LOG ;;
esac
exit 0 \ No newline at end of file
diff --git a/encap/src/encap-profiles/Makefile b/encap/src/encap-profiles/Makefile
index 722557964..e40cf20fe 100644
--- a/encap/src/encap-profiles/Makefile
+++ b/encap/src/encap-profiles/Makefile
@@ -30,19 +30,18 @@ BCFG2_PYREX := $(basename $(wildcard bcfg2-pyrex-*.ep))
BCFG2_PYTHON := $(basename $(wildcard bcfg2-python-[0-9].[0-9]*.ep))
BCFG2_READLINE := $(basename $(wildcard bcfg2-readline-*.ep))
BCFG2_ZLIB := $(basename $(wildcard bcfg2-zlib-*.ep))
-DAEMONTOOLS := $(basename $(wildcard daemontools-[0-9].[0-9]*.ep))
-DAEMONTOOLS_DOC := $(basename $(wildcard daemontools-doc-*.ep))
M4 := $(basename $(wildcard m4-*.sh))
MAKESELF := $(basename $(wildcard makeself-*.ep))
OSTIARTY := $(basename $(wildcard ostiary-[0-9].[0-9]*.ep))
OSTIARTY_DOC := $(basename $(wildcard ostiary-doc-*.ep))
PATCH := $(basename $(wildcard patch-*.ep))
+RUNIT := $(basename $(wildcard runit-[0-9].[0-9]*.ep))
-sources_ep := $(sort $(BCFG2) $(BCFG2_CHEETAH) $(BCFG2_ELEMENTTREE) $(BCFG2_GZIP) $(BCFG2_OPENSSL) $(BCFG2_PKG_CONFIG) $(BCFG2_PYOPENSSL) $(BCFG2_PYTHON) $(BCFG2_READLINE) $(BCFG2_ZLIB) $(DAEMONTOOLS) $(MAKESELF) $(OSTIARTY) $(PATCH))
+sources_ep := $(sort $(BCFG2) $(BCFG2_CHEETAH) $(BCFG2_ELEMENTTREE) $(BCFG2_GZIP) $(BCFG2_OPENSSL) $(BCFG2_PKG_CONFIG) $(BCFG2_PYOPENSSL) $(BCFG2_PYTHON) $(BCFG2_READLINE) $(BCFG2_ZLIB) $(MAKESELF) $(OSTIARTY) $(PATCH) $(RUNIT))
sources_sh := $(sort $(M4))
-sources_server := $(sort $(BCFG2_GLIB) $(BCFG2_GAMIN) $(BCFG2_LIBXML2) $(BCFG2_LIBXSLT) $(BCFG2_LXML) $(BCFG2_CHEETAH_DOC) $(BCFG2_PYREX) $(DAEMONTOOLS_DOC) $(OSTIARTY_DOC))
+sources_server := $(sort $(BCFG2_GLIB) $(BCFG2_GAMIN) $(BCFG2_LIBXML2) $(BCFG2_LIBXSLT) $(BCFG2_LXML) $(BCFG2_CHEETAH_DOC) $(BCFG2_PYREX) $(OSTIARTY_DOC))
# Only compile bcfg2-glib and bcfg2-gamin (needed by bcfg2 server) on Linux
# (Gamin only supports Linux), and only compile bcfg2-python-apt on known
@@ -183,7 +182,7 @@ distclean : clean
uninstall : distclean
-(find $(BASEDIR)/lib/bcfg2 | grep "\.pyc" | xargs -n1 rm)
- -(ENCAPS="m4 patch daemontools makeself ostiary bcfg2"; \
+ -(ENCAPS="m4 patch runit makeself ostiary bcfg2"; \
for ENCAP in $${ENCAPS}; do \
$(EPKG) -q -r $(ENCAPDIR)/$${ENCAP}-*; \
rm -rf $(ENCAPDIR)/$${ENCAP}-*; \
diff --git a/encap/src/encap-profiles/bcfg2-0.9.2.ep b/encap/src/encap-profiles/bcfg2-0.9.2.ep
index 61e4e317d..c78c59171 100644
--- a/encap/src/encap-profiles/bcfg2-0.9.2.ep
+++ b/encap/src/encap-profiles/bcfg2-0.9.2.ep
@@ -165,13 +165,14 @@ for FILE in `ls lib/bcfg2/tools`; do \
ln -sf ../../../../lib/bcfg2/tools/${FILE} share/doc/bcfg2/tools/${FILE}; \
fi; \
done
-# daemontools stuff
+# runit stuff
test -d var || mkdir var
-test -d var/svc.d || mkdir var/svc.d
-test -d var/svc.d/bcfg2-client || mkdir var/svc.d/bcfg2-client
-test -d var/svc.d/bcfg2-client/log || mkdir var/svc.d/bcfg2-client/log
-test -d var/svc.d/bcfg2-server || mkdir var/svc.d/bcfg2-server
-test -d var/svc.d/bcfg2-server/log || mkdir var/svc.d/bcfg2-server/log
+test -d etc || mkdir etc
+test -d etc/sv || mkdir etc/sv
+test -d etc/sv/bcfg2-client || mkdir etc/sv/bcfg2-client
+test -d etc/sv/bcfg2-client/log || mkdir etc/sv/bcfg2-client/log
+test -d etc/sv/bcfg2-server || mkdir etc/sv/bcfg2-server
+test -d etc/sv/bcfg2-server/log || mkdir etc/sv/bcfg2-server/log
# Make "this encap is installed" sentinal file available in /usr/local/var/encap
test -d var/encap || mkdir var/encap
touch var/encap/${ENCAP_PKGNAME}
@@ -369,10 +370,10 @@ ${PYTHON} ${COMPILEALL} ${BASEDIR}
exit 0
]]></include_file>
-<include_file name="var/svc.d/bcfg2-client/bcfg2-client.sh" mode="0755"><![CDATA[
+<include_file name="etc/sv/bcfg2-client/bcfg2-client.sh" mode="0755"><![CDATA[
#!/bin/sh
-# note: variables provided from environment with envdir:
+# note: variables provided from environment with chpst -e:
# /usr/local/etc/default/bcfg2-client/env/OPTIONS
# /usr/local/etc/default/bcfg2-client/env/RUN_INTERVAL_SECONDS
@@ -405,38 +406,38 @@ done
exit 0
]]></include_file>
-<include_file name="var/svc.d/bcfg2-client/run" mode="0755"><![CDATA[
+<include_file name="etc/sv/bcfg2-client/run" mode="0755"><![CDATA[
#!/bin/sh
exec 2>&1
-printf "*** exec /command/envdir /usr/local/etc/default/bcfg2-client/env ./bcfg2-client.sh ...\n"
-exec /command/envdir /usr/local/etc/default/bcfg2-client/env ./bcfg2-client.sh
+printf "*** exec /usr/local/bin/chpst -e /usr/local/etc/default/bcfg2-client/env ./bcfg2-client.sh ...\n"
+exec /usr/local/bin/chpst -e /usr/local/etc/default/bcfg2-client/env ./bcfg2-client.sh
]]></include_file>
-<include_file name="var/svc.d/bcfg2-client/log/run" mode="0755"><![CDATA[
+<include_file name="etc/sv/bcfg2-client/log/run" mode="0755"><![CDATA[
#!/bin/sh
exec 2>&1
-exec /command/multilog t /usr/local/var/multilog/bcfg2-client
+exec /usr/local/bin/svlogd -tt /usr/local/var/svlogd/bcfg2-client
]]></include_file>
-<include_file name="var/svc.d/bcfg2-server/run" mode="0755"><![CDATA[
+<include_file name="etc/sv/bcfg2-server/run" mode="0755"><![CDATA[
#!/bin/sh
exec 2>&1
-/command/envdir /usr/local/etc/default/bcfg2-server/env /bin/sh -c '\
+/usr/local/bin/chpst -e /usr/local/etc/default/bcfg2-server/env /bin/sh -c '\
printf "*** exec /usr/local/bin/bcfg2-server ${OPTIONS} ...\n"'
-exec /command/envdir /usr/local/etc/default/bcfg2-server/env /bin/sh -c '\
+exec /usr/local/bin/chpst -e /usr/local/etc/default/bcfg2-server/env /bin/sh -c '\
exec /usr/local/bin/bcfg2-server ${OPTIONS}'
]]></include_file>
-<include_file name="var/svc.d/bcfg2-server/log/run" mode="0755"><![CDATA[
+<include_file name="etc/sv/bcfg2-server/log/run" mode="0755"><![CDATA[
#!/bin/sh
exec 2>&1
-exec /command/multilog t /usr/local/var/multilog/bcfg2-server
+exec /usr/local/bin/svlogd -tt /usr/local/var/svlogd/bcfg2-server
]]></include_file>
<include_file name="postinstall" mode="0755"><![CDATA[
#!/bin/sh
BASEDIR="`echo ${0} | xargs -n1 dirname`"
-MULTILOG="/usr/local/var/multilog"
+SVLOGD="/usr/local/var/svlogd"
DEFAULT="/usr/local/etc/default"
# Fix paths
@@ -449,9 +450,9 @@ fi
# Make sure log directories exist
test -d /usr/local/var || mkdir /usr/local/var
-test -d $MULTILOG || mkdir $MULTILOG
-test -d $MULTILOG/bcfg2-client || mkdir $MULTILOG/bcfg2-client
-test -d $MULTILOG/bcfg2-server || mkdir $MULTILOG/bcfg2-server
+test -d $SVLOGD || mkdir $SVLOGD
+test -d $SVLOGD/bcfg2-client || mkdir $SVLOGD/bcfg2-client
+test -d $SVLOGD/bcfg2-server || mkdir $SVLOGD/bcfg2-server
# Make sure environment directories exist
test -d /usr/local/etc || mkdir /usr/local/etc
@@ -481,14 +482,14 @@ fi
printf "Running bcfg2 preremove script...\n"
date
-if [ -h /service/bcfg2-client ]; then
- printf "INFO: Removing /service/bcfg2-client...\n"
- /command/svrm /service/bcfg2-client
+if [ -h /usr/local/var/service/bcfg2-client ]; then
+ printf "INFO: Removing /usr/local/var/service/bcfg2-client...\n"
+ rm /usr/local/var/service/bcfg2-client
fi
-if [ -h /service/bcfg2-server ]; then
- printf "INFO: Removing /service/bcfg2-server...\n"
- /command/svrm /service/bcfg2-server
+if [ -h /usr/local/var/service/bcfg2-server ]; then
+ printf "INFO: Removing /usr/local/var/service/bcfg2-server...\n"
+ rm /usr/local/var/service/bcfg2-server
fi
printf "Finished bcfg2 preremove script.\n"
diff --git a/encap/src/encap-profiles/daemontools-0.76.ep b/encap/src/encap-profiles/daemontools-0.76.ep
deleted file mode 100644
index 02cc29eda..000000000
--- a/encap/src/encap-profiles/daemontools-0.76.ep
+++ /dev/null
@@ -1,533 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- $Id$ -->
-
-<encap_profile
- profile_ver="1.0"
- pkgspec="daemontools-0.76"
->
-
-<prereq package="m4-1.4.4" />
-<prereq package="patch-2.5.9" />
-
-<environment
- variable="CC"
- value="gcc -static-libgcc"
- type="set"
-/>
-
-<environment
- variable="PATH"
-PLATFORM_IF_MATCH(solaris)
- value="/usr/local/lib/bcfg2/bin:/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:"
-PLATFORM_ELSE
- value="/usr/local/lib/bcfg2/bin:/usr/local/bin:"
-PLATFORM_ENDIF
- type="prepend"
-/>
-
-PLATFORM_IF_MATCH(linux)
-PLATFORM_ELSE
-<environment
- variable="MAKE"
- value="gmake"
- type="set"
-/>
-PLATFORM_ENDIF
-
-<source
-url="http://encapsrcdist/mirror/daemontools/daemontools-0.76.tar.gz
- http://mirror.opensysadmin.com/daemontools/daemontools-0.76.tar.gz
- http://cr.yp.to/daemontools/daemontools-0.76.tar.gz"
-use_objdir="no"
-subdir="admin/daemontools-0.76"
->
-
-<patch options="-p1"><![CDATA[
-#
-# http://www.gluelogic.com/code/
-#
-diff -ru daemontools-0.76/src/error.h daemontools-0.76.new/src/error.h
---- daemontools-0.76/src/error.h 2001-07-12 12:49:49.000000000 -0400
-+++ daemontools-0.76.new/src/error.h 2004-01-10 06:50:37.000000000 -0500
-@@ -3,7 +3,7 @@
- #ifndef ERROR_H
- #define ERROR_H
-
--extern int errno;
-+#include <errno.h>
-
- extern int error_intr;
- extern int error_nomem;
-diff -ru daemontools-0.76/src/svscan.c daemontools-0.76.new/src/svscan.c
---- daemontools-0.76/src/svscan.c 2001-07-12 12:49:49.000000000 -0400
-+++ daemontools-0.76.new/src/svscan.c 2004-02-08 01:50:27.000000000 -0500
-@@ -1,6 +1,7 @@
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <fcntl.h>
- #include "direntry.h"
- #include "strerr.h"
- #include "error.h"
-@@ -14,6 +15,11 @@
-
- #define SERVICES 1000
-
-+#ifndef SVSCANINFO
-+#define SVSCANINFO ".svscan" /* must begin with dot ('.') */
-+#endif
-+
-+#define INFO "svscan: info: "
- #define WARNING "svscan: warning: "
- #define FATAL "svscan: fatal: "
-
-@@ -38,7 +44,7 @@
- int i;
- const char *args[3];
-
-- if (fn[0] == '.') return;
-+ if (fn[0] == '.' && str_diff(fn,SVSCANINFO)) return;
-
- if (stat(fn,&st) == -1) {
- strerr_warn4(WARNING,"unable to stat ",fn,": ",&strerr_sys);
-@@ -59,7 +65,8 @@
- }
- x[i].ino = st.st_ino;
- x[i].dev = st.st_dev;
-- x[i].pid = 0;
-+ /*(fn[0]=='.' here only if SVSCANINFO; if so only supervise log/ subdir)*/
-+ x[i].pid = (fn[0] != '.') ? 0 : -1;
- x[i].pidlog = 0;
- x[i].flaglog = 0;
-
-@@ -190,12 +197,39 @@
- }
- }
-
-+static void open_svscan_log(void)
-+{
-+ const int i = numx;
-+ struct stat st;
-+ static char fn[] = SVSCANINFO; /* avoid compiler warning on const string */
-+
-+ /* (semi-paranoid; could be moreso) */
-+ if (fstat(STDIN_FILENO,&st) != 0 && errno == EBADF)
-+ (void) open("/dev/null", O_RDONLY);
-+ if (fstat(STDOUT_FILENO,&st) != 0 && errno == EBADF)
-+ (void) open("/dev/null", O_WRONLY);
-+ if (fstat(STDERR_FILENO,&st) != 0 && errno == EBADF)
-+ (void) open("/dev/null", O_WRONLY);
-+
-+ if (stat(fn,&st) == 0) {
-+ start(fn);
-+ if (i+1 == numx && x[i].pidlog != 0) {
-+ (void) dup2(x[i].pi[1], STDOUT_FILENO);
-+ (void) dup2(x[i].pi[1], STDERR_FILENO);
-+ strerr_warn1("",0);
-+ strerr_warn2(INFO,"*** Starting svscan",0);
-+ }
-+ }
-+}
-+
- int main(int argc,char **argv)
- {
- if (argv[0] && argv[1])
- if (chdir(argv[1]) == -1)
- strerr_die4sys(111,FATAL,"unable to chdir to ",argv[1],": ");
-
-+ open_svscan_log();
-+
- for (;;) {
- doit();
- sleep(5);
-
-]]></patch>
-
-<patch options="-p1"><![CDATA[
-# daemontools-0.76.sigq12.patch
-#
-# This patch adds the following signal capabilities to the
-# daemontools-0.76 "svc"/"supervise" utilities:
-#
-# option signal
-# ------ -------
-# svc -q SIGQUIT
-# svc -1 SIGUSR1
-# svc -2 SIGUSR2
-#
-# Apply the patch:
-#
-# # cd /package/admin/daemontools-0.76
-# # patch -p1 < /path/to/this/patch
-#
-# Then (re)compile/(re)install daemontools:
-#
-# # package/install
-#
-# Notes:
-#
-# The SIGUSR1/SIGUSR2 patch originally by Scott Gifford:
-# http://www.suspectclass.com/~sgifford/daemontools/daemontools-0.76-usr12.README
-#
-# We added SIGQUIT for the mathopd web server:
-# http://thedjbway.org/services/mathopd.html
-#
-# wcm, 2004.03.17 - 2004.03.17
-# ===
-diff -ru daemontools-0.76/src/supervise.c daemontools-0.76.sigq12/src/supervise.c
---- daemontools-0.76/src/supervise.c Thu Jul 12 19:49:49 2001
-+++ daemontools-0.76.sigq12/src/supervise.c Wed Mar 17 10:30:25 2004
-@@ -187,6 +187,15 @@
- case 'i':
- if (pid) kill(pid,SIGINT);
- break;
-+ case 'q':
-+ if (pid) kill(pid,SIGQUIT);
-+ break;
-+ case '1':
-+ if (pid) kill(pid,SIGUSR1);
-+ break;
-+ case '2':
-+ if (pid) kill(pid,SIGUSR2);
-+ break;
- case 'p':
- flagpaused = 1;
- announce();
-diff -ru daemontools-0.76/src/svc.c daemontools-0.76.sigq12/src/svc.c
---- daemontools-0.76/src/svc.c Thu Jul 12 19:49:49 2001
-+++ daemontools-0.76.sigq12/src/svc.c Wed Mar 17 10:31:47 2004
-@@ -27,9 +27,9 @@
-
- sig_ignore(sig_pipe);
-
-- while ((opt = getopt(argc,argv,"udopchaitkx")) != opteof)
-+ while ((opt = getopt(argc,argv,"udopchaitkxq12")) != opteof)
- if (opt == '?')
-- strerr_die1x(100,"svc options: u up, d down, o once, x exit, p pause, c continue, h hup, a alarm, i interrupt, t term, k kill");
-+ strerr_die1x(100,"svc options: u up, d down, o once, x exit, p pause, c continue, h hup, a alarm, i interrupt, t term, k kill, q quit, 1 SIGUSR1, 2 SIGUSR2");
- else
- if (datalen < sizeof data)
- if (byte_chr(data,datalen,opt) == datalen)
-
-]]></patch>
-
-<patch options="-p2"><![CDATA[
-diff -ur admin/daemontools-0.76-orig/src/supervise.c admin/daemontools-0.76/src/supervise.c
---- admin/daemontools-0.76-orig/src/supervise.c 2001-07-12 12:49:27.000000000 -0400
-+++ admin/daemontools-0.76/src/supervise.c 2005-12-27 16:15:41.000000000 -0500
-@@ -148,7 +148,6 @@
- pidchange();
- announce();
- if (flagexit) return;
-- if (flagwant && flagwantup) trystart();
- break;
- }
- }
-@@ -165,7 +164,6 @@
- flagwant = 1;
- flagwantup = 1;
- announce();
-- if (!pid) trystart();
- break;
- case 'o':
- flagwant = 0;
-@@ -202,6 +200,8 @@
- announce();
- break;
- }
-+
-+ if (!pid && flagwant && flagwantup) trystart();
- }
- }
-
-]]></patch>
-
-<configure type="unset" />
-
-<build>
-./package/compile
-</build>
-
-<install>
-test -d ${ENCAP_SOURCE} || mkdir ${ENCAP_SOURCE}
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME} || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/bin || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/bin
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/src || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/src
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-cp command/* ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/bin
-cp package/run ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-cp package/commands ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-cp package/boot.inittab ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-cp package/boot.rclocal ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-cp package/run.inittab ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-cp package/run.rclocal ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/package
-</install>
-
-<clean type="unset" />
-
-</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.rclocal.orig
-mv package/boot.rclocal package/boot.rclocal.orig
-test -d var || mkdir var
-test -d var/svc.d || mkdir var/svc.d
-test -d var/svc.d/svscan || mkdir var/svc.d/svscan
-test -d var/svc.d/svscan/log || mkdir var/svc.d/svscan/log
-# Make "this encap is installed" sentinal file available in /usr/local/var/encap
-test -d var/encap || mkdir var/encap
-touch var/encap/${ENCAP_PKGNAME}
-</prepackage>
-
-<include_file name="var/svc.d/svscan/log/run" mode="0755"><![CDATA[
-#!/bin/sh
-exec 2>&1
-exec /command/multilog t /usr/local/var/multilog/svscan
-]]></include_file>
-
-<include_file name="bin/svrm" mode="0755"><![CDATA[
-#!/bin/sh
-# Remove a daemontools service
-PATH=/command:$PATH
-export PATH
-if [ "${1}x" = "x" -o "${2}x" != "x" ]; then
- printf "Usage: svrm [SERVICE]\n"
- exit 1
-fi
-SERVICE="`basename ${1}`"
-if [ ! -h "/service/$SERVICE" -a ! -f "/service/$SERVICE" ]; then
- printf "Service \"${SERVICE}\" not installed. Installed services:\n"
- svstat /service/*
- exit 1
-else
- cd /service/$SERVICE
- REALDIR=`pwd -P`
- rm /service/$SERVICE
- svc -dx . log
- sleep 1
- test -f ${REALDIR}/supervise/status && rm ${REALDIR}/supervise/status
- test -d ${REALDIR}/supervise && rm -rf ${REALDIR}/supervise
- test -f ${REALDIR}/log/supervise/status && rm ${REALDIR}/log/supervise/status
- test -d ${REALDIR}/log/supervise && rm -rf ${REALDIR}/log/supervise
-fi
-exit 0
-]]></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/stop" 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 -r /etc/inittab
-then
- /command/setlock /etc/inittab package/stop.inittab
-else
- /command/setlock /etc/rc.local package/stop.rclocal
-fi
-
-for SERVICE in `ls /service`; do
- if [ -h /service/$SERVICE ]; then
- printf "INFO: Removing /service/$SERVICE ...\n"
- /command/svrm /service/$SERVICE || true
- fi
-done
-
-if [ -h /service/.svscan ]; then
- printf "INFO: Removing /service/.svscan ...\n"
- (/command/svrm /service/.svscan) && true || true
-fi
-
-if [ -d /service ]; then
- printf "INFO: Removing /service ...\n"
- rmdir /service
-fi
-
-if [ -h /command ]; then
- printf "INFO: Removing /command ...\n"
- rm /command
-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/stop.inittab" mode="0755"><![CDATA[
-#!/bin/sh -e
-
-if grep svscan.rc /etc/inittab >/dev/null
-then
- echo 'Backing up inittab to .inittab.backup...'
- rm -f /etc/.inittab.backup
- cp -f /etc/inittab /etc/.inittab.backup
- echo 'Removing svscan lines from inittab...'
- rm -f /etc/inittab'{new}'
- grep -v svscan /etc/inittab > /etc/inittab'{new}'
- mv -f /etc/inittab'{new}' /etc/inittab
- kill -HUP 1
- echo 'init should stop svscan now.'
-else
- echo 'inittab does not contain an svscan.rc line.
-'
-fi
-]]></include_file>
-
-
-<include_file name="package/boot.inittab" mode="0644"><![CDATA[
-
-SV:2345:respawn:/command/svscan.rc start </dev/null >/tmp/svscan-start.log 2>&1
-SZ:S016:once:/command/svscan.rc stop </dev/null >/tmp/svscan-stop.log 2>&1
-]]></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/stop.rclocal" mode="0755"><![CDATA[
-#!/bin/sh -e
-
-if grep svscan.rc /etc/rc.local >/dev/null
-then
- echo 'Backing up rc.local to .rc.local.backup...'
- rm -f /etc/.rc.local.backup
- cp -f /etc/rc.local /etc/.rc.local.backup
- echo 'Removing svscan lines from /etc/rc.local...'
- rm -f /etc/rc.local'{new}'
- grep -v svscan /etc/rc.local > /etc/rc.local'{new}'
- mv -f /etc/rc.local'{new}' /etc/rc.local
- echo 'Reboot now to stop svscan.'
-else
- echo 'rc.local does not contain an svscan.rc line.
-.'
-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
-BASEDIR="`echo ${0} | xargs -n1 dirname`"
-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
-cd /usr/local/encap/daemontools-0.76 && ./package/run
-printf "Finished daemontools postinstall script.\n"
-]]></include_file>
-
-<include_file name="preremove" mode="0755"><![CDATA[
-#!/bin/sh
-
-printf "Running daemontools preremove script...\n"
-date
-
-cd /usr/local/encap/daemontools-0.76 && ./package/stop
-
-printf "Finished daemontools preremove script.\n"
-]]></include_file>
-
-<encapinfo>
-description daemontools - a collection of tools for managing UNIX services
-exclude src
-exclude package
-</encapinfo>
-
-</encap_profile>
diff --git a/encap/src/encap-profiles/daemontools-doc-20060731.ep b/encap/src/encap-profiles/daemontools-doc-20060731.ep
deleted file mode 100644
index 81540d2b3..000000000
--- a/encap/src/encap-profiles/daemontools-doc-20060731.ep
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- $Id$ -->
-
-<encap_profile
- profile_ver="1.0"
- pkgspec="daemontools-doc-20060731"
->
-
-<prereq package="m4-1.4.4" />
-
-<environment
- variable="PATH"
-PLATFORM_IF_MATCH(solaris)
- value="/usr/local/lib/bcfg2/bin:/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:"
-PLATFORM_ELSE
- value="/usr/local/lib/bcfg2/bin:/usr/local/bin:"
-PLATFORM_ENDIF
- type="prepend"
-/>
-
-<source
-url="http://encapsrcdist/mirror/daemontools/daemontools-doc-20060731.tar.gz
- http://mirror.opensysadmin.com/daemontools/daemontools-doc-20060731.tar.gz"
-use_objdir="no"
->
-
-<configure>
-:
-</configure>
-
-<build>
-:
-</build>
-
-<install>
-test -d ${ENCAP_SOURCE} || mkdir ${ENCAP_SOURCE}
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME} || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc
-test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/daemontools || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/daemontools
-cp -R * ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/daemontools
-</install>
-
-<clean>
-:
-</clean>
-
-</source>
-
-<prepackage>
-# Make "this encap is installed" sentinal file available in /usr/local/var/encap
-test -d var || mkdir var
-test -d var/encap || mkdir var/encap
-touch var/encap/${ENCAP_PKGNAME}
-</prepackage>
-
-<encapinfo>
-description daemontools-doc - documentation from daemontools websites
-</encapinfo>
-
-</encap_profile>
diff --git a/encap/src/encap-profiles/ostiary-3.4.ep b/encap/src/encap-profiles/ostiary-3.4.ep
index 5199c3abd..da57d6891 100644
--- a/encap/src/encap-profiles/ostiary-3.4.ep
+++ b/encap/src/encap-profiles/ostiary-3.4.ep
@@ -81,26 +81,27 @@ rmdir etc
# daemons should be in /usr/local/sbin
test -d sbin || mkdir sbin
mv bin/ostiaryd sbin/ostiaryd
-# daemontool stuff
+# runit stuff
test -d var || mkdir var
-test -d var/svc.d || mkdir var/svc.d
-test -d var/svc.d/ostiary || mkdir var/svc.d/ostiary
-test -d var/svc.d/ostiary/log || mkdir var/svc.d/ostiary/log
+test -d etc || mkdir etc
+test -d etc/sv || mkdir etc/sv
+test -d etc/sv/ostiary || mkdir etc/sv/ostiary
+test -d etc/sv/ostiary/log || mkdir etc/sv/ostiary/log
# Make "this encap is installed" sentinal file available in /usr/local/var/encap
test -d var/encap || mkdir var/encap
touch var/encap/${ENCAP_PKGNAME}
</prepackage>
-<include_file name="var/svc.d/ostiary/run" mode="0755"><![CDATA[
+<include_file name="etc/sv/ostiary/run" mode="0755"><![CDATA[
#!/bin/sh
exec 2>&1
exec /usr/local/sbin/ostiaryd -c /usr/local/etc/ostiary.cfg -v -D
]]></include_file>
-<include_file name="var/svc.d/ostiary/log/run" mode="0755"><![CDATA[
+<include_file name="etc/sv/ostiary/log/run" mode="0755"><![CDATA[
#!/bin/sh
exec 2>&1
-exec /command/multilog t /usr/local/var/multilog/ostiary
+exec /usr/local/bin/svlogd -tt /usr/local/var/svlogd/ostiary
]]></include_file>
<include_file name="postinstall" mode="0755"><![CDATA[
@@ -111,8 +112,8 @@ LOG=${BASEDIR}/postinstall.log
exec > $LOG 2>&1
printf "Running ostiary postinstall script...\n"
date
-test -d /usr/local/var/multilog || mkdir /usr/local/var/multilog
-test -d /usr/local/var/multilog/ostiary || mkdir /usr/local/var/multilog/ostiary
+test -d /usr/local/var/svlogd || mkdir /usr/local/var/svlogd
+test -d /usr/local/var/svlogd/ostiary || mkdir /usr/local/var/svlogd/ostiary
printf "Finished ostiary postinstall script.\n"
]]></include_file>
@@ -122,9 +123,9 @@ printf "Finished ostiary postinstall script.\n"
printf "Running ostiary preremove script...\n"
date
-if [ -h /service/ostiary ]; then
- printf "INFO: Removing /service/ostiary...\n"
- /command/svrm /service/ostiary
+if [ -h /usr/local/var/service/ostiary ]; then
+ printf "INFO: Removing /usr/local/var/service/ostiary...\n"
+ rm /usr/local/var/service/ostiary
fi
printf "Finished ostiary preremove script.\n"
diff --git a/encap/src/encap-profiles/runit-1.7.2.ep b/encap/src/encap-profiles/runit-1.7.2.ep
new file mode 100644
index 000000000..afd02bca9
--- /dev/null
+++ b/encap/src/encap-profiles/runit-1.7.2.ep
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+
+<!-- $Id$ -->
+
+<encap_profile
+ profile_ver="1.0"
+ pkgspec="runit-1.7.2"
+>
+
+<prereq package="m4-1.4.4" />
+<prereq package="patch-2.5.9" />
+
+<environment
+ variable="CC"
+ value="gcc -static-libgcc"
+ type="set"
+/>
+
+<environment
+ variable="PATH"
+PLATFORM_IF_MATCH(solaris)
+ value="/usr/local/lib/bcfg2/bin:/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:"
+PLATFORM_ELSE
+ value="/usr/local/lib/bcfg2/bin:/usr/local/bin:"
+PLATFORM_ENDIF
+ type="prepend"
+/>
+
+PLATFORM_IF_MATCH(linux)
+PLATFORM_ELSE
+<environment
+ variable="MAKE"
+ value="gmake"
+ type="set"
+/>
+PLATFORM_ENDIF
+
+<source
+url="http://encapsrcdist/mirror/runit/runit-1.7.2.tar.gz
+ http://mirror.opensysadmin.com/runit/runit-1.7.2.tar.gz
+ http://smarden.org/runit/runit-1.7.2.tar.gz"
+use_objdir="no"
+subdir="admin/runit-1.7.2"
+>
+
+<configure type="unset" />
+
+<build>
+./package/compile
+./package/check
+</build>
+
+<install>
+test -d ${ENCAP_SOURCE} || mkdir ${ENCAP_SOURCE}
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME} || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/bin || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/bin
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/runit || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/runit
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/man || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/man
+test -d ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/man/man8 || mkdir ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/man/man8
+cp command/* ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/bin
+cp -r doc/* ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/runit
+cp -r etc ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/runit
+cp -r package ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/share/doc/runit
+cp man/* ${ENCAP_SOURCE}/${ENCAP_PKGNAME}/man/man8
+</install>
+
+<clean type="unset" />
+
+</source>
+
+<prepackage>
+# Make "this encap is installed" sentinal file available in /usr/local/var/encap
+test -d var || mkdir var
+test -d var/encap || mkdir var/encap
+touch var/encap/${ENCAP_PKGNAME}
+</prepackage>
+
+<include_file name="bin/runsvdir-usrlocal-start" mode="0755"><![CDATA[
+#!/bin/sh
+PATH=/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
+exec env - PATH=$PATH \
+runsvdir -P /usr/local/var/service 'log: ...........................................................................................................................................................................................................................................................................................................................................................................................................'
+]]></include_file>
+
+<include_file name="boot.inittab" mode="0644"><![CDATA[
+
+SV:123456:respawn:/usr/local/bin/runsvdir-usrlocal-start
+]]></include_file>
+
+<include_file name="inittab-install" mode="0755"><![CDATA[
+#!/bin/sh -e
+if grep SV: /etc/inittab >/dev/null
+then
+ echo 'inittab contains an SV: line. I assume that runsvdir is already running.
+'
+else
+ echo 'Adding runsvdir to inittab...'
+ rm -f /etc/inittab'{new}'
+ cat /etc/inittab boot.inittab > /etc/inittab'{new}'
+ mv -f /etc/inittab'{new}' /etc/inittab
+ kill -HUP 1
+ echo 'init should start runsvdir now.
+'
+fi
+]]></include_file>
+
+<include_file name="inittab-remove" mode="0755"><![CDATA[
+#!/bin/sh -e
+if grep SV: /etc/inittab >/dev/null
+then
+ echo 'Backing up inittab to .inittab.backup...'
+ rm -f /etc/.inittab.backup
+ cp -f /etc/inittab /etc/.inittab.backup
+ echo 'Removing svscan lines from inittab...'
+ rm -f /etc/inittab'{new}'
+ grep -v SV: /etc/inittab > /etc/inittab'{new}'
+ mv -f /etc/inittab'{new}' /etc/inittab
+ kill -HUP 1
+ echo 'init should stop runsvdir now.
+'
+else
+ echo 'inittab does not contain a runsvdir line.
+'
+fi
+]]></include_file>
+
+<include_file name="postinstall" mode="0755"><![CDATA[
+#!/bin/sh -e
+umask 002
+BASEDIR="`echo ${0} | xargs -n1 dirname`"
+LOG=${BASEDIR}/postinstall.log
+exec > $LOG 2>&1
+printf "Running runit postinstall script...\n"
+date
+test -d /usr/local/var || mkdir /usr/local/var
+test -d /usr/local/var/svlogd || mkdir /usr/local/var/svlog
+test -d /usr/local/var/service || mkdir /usr/local/var/service
+test -d /usr/local/etc || mkdir /usr/local/etc
+test -d /usr/local/etc/default || mkdir /usr/local/etc/default
+test -d /usr/local/etc/sv || mkdir /usr/local/etc/sv
+cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && ./inittab-install
+printf "Finished runit postinstall script.\n"
+]]></include_file>
+
+<include_file name="preremove" mode="0755"><![CDATA[
+#!/bin/sh
+printf "Running runit preremove script...\n"
+date
+cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && ./inittab-remove
+printf "Finished runit preremove script.\n"
+]]></include_file>
+
+<encapinfo>
+description runit - a UNIX init scheme with service supervision
+</encapinfo>
+
+</encap_profile>
diff --git a/encap/src/makeself-dist/makedist.sh b/encap/src/makeself-dist/makedist.sh
index 8c80f2e14..fdd5e81df 100755
--- a/encap/src/makeself-dist/makedist.sh
+++ b/encap/src/makeself-dist/makedist.sh
@@ -50,8 +50,8 @@ tar -cf $DISTDIR/epkg.tar $EPKGDIR/*
BCFG2="`basename $EPDIR/bcfg2-[0-9].[0-9]*-encap-*.tar.gz`"
BCFG2_ELEMENTTREE="`basename $EPDIR/bcfg2-elementtree-*-encap-*.tar.gz`"
BCFG2_PYTHON="`basename $EPDIR/bcfg2-python-[0-9].[0-9]*-encap-*.tar.gz`"
-DAEMONTOOLS="`basename $EPDIR/daemontools-[0-9].[0-9]*-encap-*.tar.gz`"
OSTIARTY="`basename $EPDIR/ostiary-[0-9].[0-9]*-encap-*.tar.gz`"
+RUNIT="`basename $EPDIR/runit-[0-9].[0-9]*-encap-*.tar.gz`"
BCFG2_PYTHON_APT_TMP="`basename $EPDIR/bcfg2-python-apt-*-encap-*.tar.gz`"
if [ "${BCFG2_PYTHON_APT_TMP}x" != 'bcfg2-python-apt-*-encap-*.tar.gzx' ]; then
@@ -60,7 +60,7 @@ fi
BCFG2DEPS="$BCFG2_ELEMENTTREE $BCFG2_PYTHON $BCFG2_PYTHON_APT"
-FILES="$BCFG2DEPS $BCFG2 $DAEMONTOOLS $OSTIARTY"
+FILES="$BCFG2DEPS $BCFG2 $RUNIT $OSTIARTY"
for FILE in ${FILES}; do
cp $EPDIR/$FILE $DISTDIR
@@ -106,7 +106,7 @@ if [ ! -h "$EPKG" -o ! -d "$ENCAPDIR/epkg-2.3.[89]" ]; then
fi
# Install everything else
-for LOC_PKG in $BCFG2DEPS $BCFG2 $DAEMONTOOLS $OSTIARTY $BCFG2_SITE; do
+for LOC_PKG in $BCFG2DEPS $BCFG2 $RUNIT $OSTIARTY $BCFG2_SITE; do
LOC_PKGSPEC="\`printf "%s\n" "\$LOC_PKG" | sed s:-encap.*::g\`"
if [ -d "$ENCAPDIR/\$LOC_PKGSPEC" ]; then
if [ "\${LOC_PKGSPEC}x" != "x" ]; then
@@ -237,13 +237,13 @@ chmod 600 \${LOC_BCFG2_CONF}*
chmod 600 \${LOC_OST_CFG}*
# Restart services if they exist to catch any config file changes
-if [ -x /command/svc -a -x /command/svstat ]; then
+if [ -x /usr/local/bin/sv ]; then
for LOC_SERVICE in bcfg2-client bcfg2-server ostiary; do
- if [ -h /service/\${LOC_SERVICE} ]; then
- printf "Restarting daemontools service \${LOC_SERVICE}...\n"
- /command/svc -t /service/\${LOC_SERVICE}
+ if [ -h /usr/local/var/service/\${LOC_SERVICE} ]; then
+ printf "Restarting runit service \${LOC_SERVICE}...\n"
+ /usr/local/bin/sv restart /usr/local/var/service/\${LOC_SERVICE}
sleep 2
- /command/svstat /service/\${LOC_SERVICE}
+ /usr/local/bin/sv status /usr/local/var/service/\${LOC_SERVICE}
fi
done
fi