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 | |
| 
 | |
| 
 |