#!/bin/sh # --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../runit/parse-config # Copyright (C) 2008 The OpenSDE Project # Copyright (C) 2004 - 2006 The T2 SDE Project # Copyright (C) 1998 - 2003 Clifford Wolf # # More information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- SDE-COPYRIGHT-NOTE-END --- # # add init scripts # if [ "$SDECFG_INIT" == "runit" ]; then # runit_substitute # runit_substitute() { local logdir= if [ "${localstatedir%$pkg}" != "$localstatedir" ]; then logdir=$localstatedir/log else logdir=$localstatedir/log/$pkg fi sed -e "s,D_logdir,$logdir,g" $1 } # runit_tail_install $pkg-$service.tail # runit_tail_install() { local tailfile= local service= local servicedir= for tailfile; do service=$(echo $tailfile | sed -e "s,^$pkg-,," -e "s,\.tail\$,," -e "s,_,/,g") if [ "${service#runit-}" != "$service" ]; then servicedir="$root/etc/runit/${service#runit-}" else servicedir="$root$sysconfdir/$service" fi echo_status "runit: $tailfile -> ${servicedir#$root}" tail_install runit "$(pkgdesc confdir runit)/packages/$tailfile" "$servicedir" done } runitconfdir=$(pkgdesc confdir runit) runit_has_script=0 runit_files="$(cd "$runitconfdir/packages" && ls -1 $pkg-*.tail 2> /dev/null | tr '\n' ' ')" if [ -n "$runit_files" ]; then hook_add postdoc 5 "runit_tail_install $runit_files" runit_has_script=1 fi runit_files="$(cd "$runitconfdir/packages" && ls -1 $pkg-*.txt 2> /dev/null | tr '\n' ' ')" if [ -n "$runit_files" ]; then hook_add postmake 5 "runit_raw_install $runit_files" runit_has_script=1 fi runit_raw_install() { local x= y= for x; do y=${x#$pkg-}; y=${y%.txt}; y=${y//_/\/} if [ "${y#runit-}" != "$y" ]; then y="$root/etc/runit/${y#runit-}" else y="$root$sysconfdir/$y" fi echo_status "runit: $x -> ${y#$root}" mkdir -p "${y%/*}" cat "$(pkgdesc confdir runit)/packages/$x" | rock_substitute | runit_substitute > "$y" case "${y##*/}" in run|finish) chmod 755 "$y" ;; esac done } if [ "$SDECFG_PKG_DJB_LAYOUT" == "1" ]; then for x in package command service; do var_append flistroot ' ' $x done fi runit_layout() { if [ -z "$pkg_djb_servicedir" ]; then if [ "$SDECFG_PKG_DJB_LAYOUT" == "1" ]; then for x in package command service; do eval "pkg_djb_${x}dir='$root/$x'" done else pkg_djb_packagedir= pkg_djb_commanddir="$root$bindir" pkg_djb_servicedir="$root/var/service" fi fi # create them if it doesn't exist for x in package command service; do y=$( eval echo \$pkg_djb_${x}dir ) if [ -n "$y" ]; then mkdir -p "$y" # TODO: research where 1755 comes from [ "$x" = command ] || chmod 1755 "$y" fi done } hook_add preconf 5 'runit_layout' if [ $runit_has_script -eq 1 ]; then install_init() { # i have already installed the script true } else install_init() { name=$1 ; file=$2 ; initdir="$root/etc/rc.d" echo -n "Install SysV Init script '$name' (xx/xx): " m4 -Dinitstyle=$SDECFG_INIT_STYLE \ -D"D_prefix=/$prefix" -D"D_sysconfdir=$sysconfdir" \ -D"D_docdir=$docdir" -D"D_localstatedir=$localstatedir" \ -D"D_datadir=$datadir" -D"D_infodir=$infodir" \ -D"D_bindir=$bindir" -D"D_sbindir=$sbindir" \ -D"D_libdir=$libdir" -D"D_mandir=$mandir" \ $base/package/base/sysvinit/init_macros.m4 \ $file > $initdir/init.d/$name chmod +x $initdir/init.d/$name echo " done." } fi # minimal services case "$pkg" in cron) hook_add postmake 9 'ln -svnf /etc/runit/cron $pkg_djb_servicedir/cron' ;; sysklogd) hook_add postmake 9 'ln -svnf /etc/runit/syslogd $pkg_djb_servicedir/syslogd' hook_add postmake 9 'ln -svnf /etc/runit/klogd $pkg_djb_servicedir/klogd' ;; esac unset runitconfdir runitxmode runit_has_script fi