You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							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 | 
						|
 | 
						|
 |