PLATFORM_IF_MATCH(linux) PLATFORM_ELSE PLATFORM_ENDIF PLATFORM_IF_MATCH(aix|solaris2.6) PLATFORM_ELSE PLATFORM_ENDIF PLATFORM_IF_MATCH(solaris) PLATFORM_ELSE PLATFORM_ENDIF PLATFORM_IF_MATCH(solaris2.6) PLATFORM_ELSE PLATFORM_ENDIF ./package/compile ./package/check 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 # 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} /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 inittab.boot > /etc/inittab'{new}' mv -f /etc/inittab'{new}' /etc/inittab kill -HUP 1 echo 'init should start runsvdir now. ' fi ]]> /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 ]]> $LOG 2>&1 printf "Running runit postinstall script...\n" date case `uname` in AIX|SunOS) PS="ps -ef" ;; *) PS="ps auxw" ;; esac printf "1: Make sure required directories exist...\n" 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 printf "\n2: Currently running runsv and svlogd processes:\n" $PS | grep [r]unsv $PS | grep [s]vlogd printf "\n3: Killing any running runsv and svlogd processes...\n" $PS | grep [r]unsv | awk '{print $2}' | xargs -n1 -i{} kill -15 -{} 2>/dev/null $PS | grep [s]vlogd | awk '{print $2}' | xargs -n1 -i{} kill -15 -{} 2>/dev/null sleep 2 $PS | grep [r]unsv | awk '{print $2}' | xargs -n1 -i{} kill -9 -{} 2>/dev/null $PS | grep [s]vlogd | awk '{print $2}' | xargs -n1 -i{} kill -9 -{} 2>/dev/null printf "\n4: Currently running runsv and svlogd processes:\n" $PS | grep [r]unsv $PS | grep [s]vlogd printf "\n5: Removing any stale state information in /usr/local/etc/sv...\n" for service in `ls /usr/local/etc/sv`; do test -d /usr/local/etc/sv/$service/supervise && rm -rf /usr/local/etc/sv/$service/supervise test -d /usr/local/etc/sv/$service/log/supervise && rm -rf /usr/local/etc/sv/$service/log/supervise done printf "\n6: Re-enabling services that were installed before package was removed...\n" if [ -d /usr/local/var/service/.disabled ]; then for service in `ls /usr/local/var/service/.disabled`; do if [ -h /usr/local/var/service/$service ]; then printf "A new version of $service exists, removing old version...\n" rm /usr/local/var/service/.disabled/$service else printf "Re-enabling service $service...\n" mv /usr/local/var/service/.disabled/$service /usr/local/var/service/ fi done fi printf "\n7: Making runsvdir run all the time...\n" if [ -f /etc/inittab ]; then printf "Installing to /etc/inittab ...\n" cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && ./inittab-install fi if [ -d /etc/event.d ]; then printf "Installing to /etc/event.d/SV (Upstart) ...\n" initctl stop SV 2>/dev/null || true cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && cp upstart.boot /etc/event.d/SV initctl start SV fi printf "\n8: Finished runit postinstall script.\n" ]]> /dev/null || printf "No services to disable.\n" printf "Waiting 10 seconds for runsv processes to die...\n" sleep 10 printf "All sv processes runnning now...\n" $PS | grep [s]v printf "If there are any runsv or svlogd processes still running, you will need\n" printf "to kill them manually.\n" printf "\n4: Now shutting down the runsvdir processes...\n" # Stop the "runsvdir" process { if [ -f /etc/inittab ]; then printf "Removing from /etc/inittab ...\n" cd ${ENCAP_SOURCE}/${ENCAP_PKGNAME} && ./inittab-remove fi if [ -d /etc/event.d ]; then if [ -f /etc/event.d/SV ]; then printf "Removing /etc/event.d/SV (Upstart) ...\n" initctl stop SV || printf "SV already stopped...\n" rm /etc/event.d/SV fi fi # } Stop the "runsvdir" process sleep 2 printf "All sv processes runnning now...\n" $PS | grep [s]v printf "runsvdir should no longer be running.\n" printf "\n5: Removing any old state from /usr/local/etc/sv directories...\n" for service in `ls /usr/local/etc/sv`; do test -d /usr/local/etc/sv/$service/supervise && rm -rf /usr/local/etc/sv/$service/supervise test -d /usr/local/etc/sv/$service/log/supervise && rm -rf /usr/local/etc/sv/$service/log/supervise done printf "\n6: Finished runit preremove script.\n" ]]> description runit - a UNIX init scheme with service supervision