diff options
Diffstat (limited to 'encap/src/encap-profiles/daemontools-0.76.ep')
-rw-r--r-- | encap/src/encap-profiles/daemontools-0.76.ep | 533 |
1 files changed, 0 insertions, 533 deletions
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> |