164 lines
4.2 KiB
164 lines
4.2 KiB
#!/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 |
|
|
|
|