From 078eb2ab0f1fdffc38ced39c1e0bb770ed977e31 Mon Sep 17 00:00:00 2001 From: Duncan Roe Date: Sat, 27 May 2017 00:14:51 +0100 Subject: system/daemontools: Added (djb's tools for managing UNIX services). Signed-off-by: David Spencer --- system/daemontools/README | 44 +++++++++ system/daemontools/README.SBo | 30 ++++++ system/daemontools/daemontools-0.76.errno.patch | 12 +++ system/daemontools/daemontools.SlackBuild | 120 ++++++++++++++++++++++++ system/daemontools/daemontools.info | 10 ++ system/daemontools/doinst.sh | 2 + system/daemontools/doinst_sh | 2 + system/daemontools/slack-desc | 19 ++++ 8 files changed, 239 insertions(+) create mode 100644 system/daemontools/README create mode 100644 system/daemontools/README.SBo create mode 100644 system/daemontools/daemontools-0.76.errno.patch create mode 100644 system/daemontools/daemontools.SlackBuild create mode 100644 system/daemontools/daemontools.info create mode 100644 system/daemontools/doinst.sh create mode 100644 system/daemontools/doinst_sh create mode 100644 system/daemontools/slack-desc (limited to 'system/daemontools') diff --git a/system/daemontools/README b/system/daemontools/README new file mode 100644 index 0000000000..90afd09995 --- /dev/null +++ b/system/daemontools/README @@ -0,0 +1,44 @@ +N.B. You probably only want to install this package if you aready run qmail. + +daemontools is a collection of tools for managing UNIX services. + +supervise monitors a service. It starts the service and restarts the +service if it dies. Setting up a new service is easy: all supervise +needs is a directory with a run script that runs the service. + +multilog saves error messages to one or more logs. It optionally +timestamps each line and, for each log, includes or excludes lines +matching specified patterns. It automatically rotates logs to limit the +amount of disk space used. If the disk fills up, it pauses and tries +again, without losing any data. + +Also included are svscan (starts one supervise process for each +service), svscanboot (run by init to start svscan in the /service +directory), readproctitle (show error messages in ps o/p) and many +others. See the home page for a list and for documentation. + +daemontools was written by D. J. Bernstein. + +N.B. Installing this package creates the 3 top-level directories + /command, /package & /service. If any of these exist already, + you need to consider your options. + +---------------------------- + +If you build with + + EDIT_INITTAB=yes ./daemontools.SlackBuild + +the following 2 items also apply:- + +N.B. Installing this package modifies /etc/inittab. +N.B. Installing this package starts the svscanboot service, + however it won't actually manage anything because there + will be no symlinks in /service. + +Otherwise, you will have to edit /etc/inittab yourself, as per the instructions +in README.SBo. + +---------------------------- + +See README.SBo before attempting removepkg. upgradepkg is fine. diff --git a/system/daemontools/README.SBo b/system/daemontools/README.SBo new file mode 100644 index 0000000000..b41dcdac3c --- /dev/null +++ b/system/daemontools/README.SBo @@ -0,0 +1,30 @@ +"removepkg daemontools" leaves some stuff behind. +This is partly because removepkg skips removal of dangling symbolic +links, and partly because doinst.sh does stuff that removepkg +can't be aware of. + +BEFORE DOING REMOVEPKG: remove this line from /etc/inittab: + +SV:123456:respawn:/command/svscanboot + +since this will fail repeatedly after the next reboot or telinit. +Then enter: + +telinit q + +to stop the svscanboot service. + +AFTERWARDS: + +rm -r /package # (has symlinks) +rmdir /service # (or rm -r if you configured services) + +cd /usr/bin +for i in $(ls -lL 2>&1 | grep -E '^l\?\?' | rev | cut -f1 -d' ' | + rev); do rm -v $i; done + +--------------------------- + +If you built daemontools without EDIT_INITTAB=yes, you need to insert the SV +line above into /etc/inittab. Having done that, "telinit q" will start +the service. diff --git a/system/daemontools/daemontools-0.76.errno.patch b/system/daemontools/daemontools-0.76.errno.patch new file mode 100644 index 0000000000..d1884f5797 --- /dev/null +++ b/system/daemontools/daemontools-0.76.errno.patch @@ -0,0 +1,12 @@ +diff -ur daemontools-0.76.old/src/error.h daemontools-0.76/src/error.h +--- daemontools-0.76.old/src/error.h 2001-07-12 11:49:49.000000000 -0500 ++++ daemontools-0.76/src/error.h 2003-01-09 21:52:01.000000000 -0600 +@@ -3,7 +3,7 @@ + #ifndef ERROR_H + #define ERROR_H + +-extern int errno; ++#include + + extern int error_intr; + extern int error_nomem; diff --git a/system/daemontools/daemontools.SlackBuild b/system/daemontools/daemontools.SlackBuild new file mode 100644 index 0000000000..0905e3ca15 --- /dev/null +++ b/system/daemontools/daemontools.SlackBuild @@ -0,0 +1,120 @@ +#!/bin/sh + +# Slackware build script for daemontools + +# Copyright 2017 Duncan Roe Melbourne, Australia +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=daemontools +VERSION=${VERSION:-0.76} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +CHROOT=$TMP/$PRGNAM +ADMIN=package/admin +EDIT_INITTAB=${EDIT_INITTAB:-no} + +set -e + +rm -rf $PKG $CHROOT +mkdir -p $TMP $PKG $OUTPUT $CHROOT +cd $CHROOT +rm -rf package +mkdir package +chmod 1755 package +cd package +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $CHROOT/$ADMIN/$PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +for i in $CWD/*.patch; do + patch -p1 < $i +done + +package/compile + +# Set up a chroot environment in which to run package/upgrade +export SLACKPATH=NONE # Don't use doinst.sh scripts +cd $CHROOT +mkchroot . + +# Set up the commands to run in the chroot jail +cat >cmds < /dev/null || true + +# Make it look like we built daemontools in-situ, +# so the symlinks in compile will work on installation +cd $ADMIN/$PRGNAM-$VERSION +here=/$ADMIN/$PRGNAM-$VERSION +echo $here > compile/home +rm compile/src +ln -s $here/src compile/src + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a \ + src/{CHANGES,TODO} \ + $CWD/README.SBo \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# doinst* is only needed if EDIT_INITTAB is enabled +if [ "$EDIT_INITTAB" != no ]; then + cat $CWD/doinst.sh > $PKG/install/doinst.sh + cat $CWD/doinst_sh > $PKG/install/doinst_sh +else + # No doinst, so put /service into the package + mkdir $PKG/service +fi + +cd $PKG +/sbin/makepkg -l n -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/system/daemontools/daemontools.info b/system/daemontools/daemontools.info new file mode 100644 index 0000000000..417b5b1131 --- /dev/null +++ b/system/daemontools/daemontools.info @@ -0,0 +1,10 @@ +PRGNAM="daemontools" +VERSION="0.76" +HOMEPAGE="http://cr.yp.to/daemontools.html" +DOWNLOAD="http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" +MD5SUM="1871af2453d6e464034968a0fbcb2bfc" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="mkchroot" +MAINTAINER="Duncan Roe" +EMAIL="duncan_roe@optusnet.com.au" diff --git a/system/daemontools/doinst.sh b/system/daemontools/doinst.sh new file mode 100644 index 0000000000..e263470fc2 --- /dev/null +++ b/system/daemontools/doinst.sh @@ -0,0 +1,2 @@ +chroot . /bin/sh /install/doinst_sh +rm install/doinst_sh diff --git a/system/daemontools/doinst_sh b/system/daemontools/doinst_sh new file mode 100644 index 0000000000..7713fa30ff --- /dev/null +++ b/system/daemontools/doinst_sh @@ -0,0 +1,2 @@ +cd /package/admin/daemontools +./package/run diff --git a/system/daemontools/slack-desc b/system/daemontools/slack-desc new file mode 100644 index 0000000000..4b7b42f866 --- /dev/null +++ b/system/daemontools/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +daemontools: daemontools (djb's tools for managing UNIX services) +daemontools: +daemontools: daemontools includes several programs. supervise monitors a service. +daemontools: It starts the service and restarts the service if it dies. Setting up +daemontools: a new service is easy: all supervise needs is a directory with a run +daemontools: script that runs the service. +daemontools: +daemontools: Also included are multilog (save error messages to one or more logs), +daemontools: svscan (starts one supervise process for each service), svscanboot +daemontools: (run by init to start svscan in the /service directory), +daemontools: readproctitle (show error messages in ps o/p) and many others. -- cgit v1.2.3