Compare commits
	
		
			24 Commits
		
	
	
		
			openrc-0.1
			...
			0.16.4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 082995837f | ||
|   | 4f3df4cacb | ||
|   | 514b007e27 | ||
|   | 6ad9b134e6 | ||
|   | e571c67ff8 | ||
|   | c4067a65b0 | ||
|   | a8c30a89c4 | ||
|   | fe0847c9a2 | ||
|   | 58156137f9 | ||
|   | b1d7df15ef | ||
|   | 01088e282f | ||
|   | b95ae213e9 | ||
|   | 4f544f4130 | ||
|   | c65bed756e | ||
|   | ccc81a9cad | ||
|   | 3a1e304d6c | ||
|   | d247ac4cbb | ||
|   | bb2d7becfd | ||
|   | 0f9354becf | ||
|   | a15fa1a3b1 | ||
|   | 0198affc74 | ||
|   | abef2fcb2d | ||
|   | 0b435ddd83 | ||
|   | 9f6427ea57 | 
							
								
								
									
										194
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										194
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,3 +1,197 @@ | ||||
| commit 4f3df4cacb20bb17838986376ad53d4063749a14 | ||||
| Author: Mike Gilbert <floppym@gentoo.org> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     bootmisc: Don't call dmesg in systemd-nspawn containers | ||||
|      | ||||
|     This fixes #57. | ||||
|  | ||||
| commit 514b007e2713ac5046f6df78a720ca8e3de013b5 | ||||
| Author: Mike Frysinger <vapier@gentoo.org> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     fix link to s6 website | ||||
|  | ||||
| commit 6ad9b134e6c9da009842f61bdaf129a1716274ba | ||||
| Author: Mike Gilbert <floppym@gentoo.org> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     man: Document the stopsig variable | ||||
|      | ||||
|     This variable can be used to set the signal to send if the service is | ||||
|     using start-stop-daemon. | ||||
|      | ||||
|     This fixes #56 | ||||
|  | ||||
| commit e571c67ff812ad839107acaa5ba97313dde9dd7a | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Document bash's handling of ulimit options | ||||
|      | ||||
|     When bash is used in posix mode for the shell, the ulimit command uses | ||||
|     a block size of 512 bytes for the -c and -f options. | ||||
|      | ||||
|     X-Gentoo-Bug: 549238 | ||||
|     X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=549238 | ||||
|  | ||||
| commit c4067a65b0ecfad3e6b97416640c6b85382b8fe8 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Start work on 0.16.4 | ||||
|  | ||||
| commit a8c30a89c417aff5bc863d65976ff8abcffa9e40 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     update change log | ||||
|  | ||||
| commit fe0847c9a2565518334ef03da5c6cdc63726e122 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     S6: kick the scanner and sleep 1.5 seconds to avoid a race condition | ||||
|  | ||||
| commit 58156137f9bbb0d853d994b793622cf48281cf08 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Start on 0.16.3 | ||||
|  | ||||
| commit b1d7df15ef017e7b011a211eff2b2b75a39c8c9e | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     update change log | ||||
|  | ||||
| commit 01088e282f08ca373ae1d61b2ed954c3075f130a | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     s6: Use s6-svc -Dd to stop services | ||||
|      | ||||
|     This allows us to get rid of the sleep call in the stop function. Also, | ||||
|     we set a configurable timeout value for stopping daemons. | ||||
|  | ||||
| commit b95ae213e9435f267da3331fd4568a5ad297b54c | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Start work on 0.16.2 | ||||
|  | ||||
| commit 4f544f4130e0b62e18bdde42cad2b3aed085136d | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     update change log | ||||
|  | ||||
| commit c65bed756e5f5cfa244d9aa4325691345d8c324d | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     More s6 fixes | ||||
|      | ||||
|     - When no service link is in the scan directory, show the default | ||||
|       stopped message. | ||||
|     - Do not remove the service link when stopping the service. | ||||
|  | ||||
| commit ccc81a9cad5d9beb739593827fc4bbc04c4a3304 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Fix the s6 handling | ||||
|      | ||||
|     This changes the default s6 service directory to /var/svc.d, also | ||||
|     it changes the code to work with the individual services instead of | ||||
|     forcing a rescan when a service is started or stopped. | ||||
|  | ||||
| commit 3a1e304d6c56875838b884b6e0608fe756ccce4e | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Start work on 0.16.1 | ||||
|  | ||||
| commit d247ac4cbbe0ab62564ef82a5940b4f1a03973b3 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Update changelog | ||||
|  | ||||
| commit bb2d7becfd3008379f8f69b5d036922281aa211f | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Add support for the s6 supervision suite | ||||
|  | ||||
| commit 0f9354becfbd54f9800c93092aa26be859dcf16a | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     man: Clarify the documentation for command_args | ||||
|      | ||||
|     The command_args variable only works if using start-stop-daemon to start | ||||
|     the daemon. | ||||
|  | ||||
| commit a15fa1a3b12a5372c1b3c8d5df7e489648bef913 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Rework supervisor integration framework | ||||
|      | ||||
|     The original way of doing this allowed users to change the supervisor in | ||||
|     conf.d/*. This changes this so that the supervisor setup can be done in | ||||
|     the service script itself. | ||||
|  | ||||
| commit 0198affc742297b6e203bbcecc14436682119cc7 | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     The rc_supervisor variable is a service configuration variable | ||||
|      | ||||
|     This variable should not be changed globally unless you really know what | ||||
|     you are doing. | ||||
|  | ||||
| commit abef2fcb2dbcc277bb05f0d9c674d4b47826f17f | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Make the default start, stop and status functions overridable | ||||
|      | ||||
|     This will make it possible to add support for supervision suites such as | ||||
|     runit and s6. | ||||
|  | ||||
| commit 0b435ddd834bd18254c4d3341acdebf0829921f5 | ||||
| Author: Jakob Drexel <jake42@rommel.stw.uni-erlangen.de> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     librc: Fix crash if the service name is the same as the including runlevel | ||||
|      | ||||
|     If a service has the same name as the runlevel it is in, openrc will | ||||
|     crash on changing to such runlevel. It goes in a recursive madness and | ||||
|     eventually gets a SEGV while in snprintf (don't know why). | ||||
|      | ||||
|     This fixes two errors: | ||||
|     1. ls_dir stats files not with full path -> stat always returns != 0 | ||||
|     2. ls_dir adds files to list if stat failed | ||||
|      | ||||
|     This fixes #53. | ||||
|      | ||||
|     X-Gentoo-Bug: 537304 | ||||
|     X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=537304 | ||||
|  | ||||
| commit 9f6427ea57c6c950b4d1c356ad1bfb0aa8deb40b | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     Start work on 0.16 | ||||
|  | ||||
| commit 60488069c08201cbfbc661a3e7bd1fafa31fceed | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|  | ||||
|     update ChangeLog | ||||
|  | ||||
| commit 9225bfa6918cfd488c8f1055cf986b542f1f157e | ||||
| Author: William Hubbs <w.d.hubbs@gmail.com> | ||||
| Commit: William Hubbs <w.d.hubbs@gmail.com> | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| NAME=		openrc | ||||
| VERSION=	0.15 | ||||
| VERSION=	0.16.4 | ||||
| PKG=		${NAME}-${VERSION} | ||||
|   | ||||
| @@ -116,6 +116,9 @@ | ||||
| #SSD_NICELEVEL="-19" | ||||
|  | ||||
| # Pass ulimit parameters | ||||
| # If you are using bash in POSIX mode for your shell, note that the | ||||
| # ulimit command uses a block size of 512 bytes for the -c and -f | ||||
| # options | ||||
| #rc_ulimit="-u 30" | ||||
|  | ||||
| # It's possible to define extra dependencies for services like so | ||||
|   | ||||
| @@ -3,7 +3,7 @@ include ../mk/net.mk | ||||
| DIR=	${INITDIR} | ||||
| SRCS=	bootmisc.in fsck.in hostname.in local.in localmount.in loopback.in \ | ||||
| 	netmount.in osclock.in root.in savecache.in swap.in swapfiles.in \ | ||||
| 	tmpfiles.setup.in swclock.in sysctl.in urandom.in ${SRCS-${OS}} | ||||
| 	tmpfiles.setup.in swclock.in sysctl.in urandom.in s6-svscan.in ${SRCS-${OS}} | ||||
| BIN=	${OBJS} | ||||
|  | ||||
| # Are we installing our network scripts? | ||||
|   | ||||
| @@ -214,10 +214,13 @@ start() | ||||
| 	if yesno $log_dmesg; then | ||||
| 		if $logw || checkpath -W /var/log; then | ||||
| 			# Create an 'after-boot' dmesg log | ||||
| 			if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ -a "$RC_SYS" != LXC ]; then | ||||
| 				dmesg > /var/log/dmesg | ||||
| 				chmod 640 /var/log/dmesg | ||||
| 			fi | ||||
| 			case "$RC_SYS" in | ||||
| 				VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;; | ||||
| 				*) | ||||
| 					dmesg > /var/log/dmesg | ||||
| 					chmod 640 /var/log/dmesg | ||||
| 					;; | ||||
| 			esac | ||||
| 		fi | ||||
| 	fi | ||||
|  | ||||
|   | ||||
							
								
								
									
										31
									
								
								init.d/s6-svscan.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								init.d/s6-svscan.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| #!@SBINDIR@/openrc-run | ||||
| # Copyright (C) 2015 William Hubbs <w.d.hubbs@gmail.com> | ||||
| # Released under the 2-clause BSD license. | ||||
|  | ||||
| command=/bin/s6-svscan | ||||
| command_args="${RC_SVCDIR}"/s6-scan | ||||
| command_background=yes | ||||
| pidfile=/var/run/s6-svscan.pid | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| } | ||||
|  | ||||
| start_pre() | ||||
| { | ||||
| 	einfo "Creating s6 scan directory" | ||||
| 	checkpath -d -m 0755 "$RC_SVCDIR"/s6-scan | ||||
| 	return $? | ||||
| } | ||||
|  | ||||
| stop_post() | ||||
| { | ||||
| 	ebegin "Stopping any remaining s6 services" | ||||
| 	s6-svc -dx "${RC_SVCDIR}"/s6-scan/* 2>/dev/null || true | ||||
| 	eend $? | ||||
|  | ||||
| 	ebegin "Stopping any remaining s6 service loggers" | ||||
| 	s6-svc -dx "${RC_SVCDIR}"/s6-scan/*/log 2>/dev/null || true | ||||
| 	eend $? | ||||
| } | ||||
| @@ -107,6 +107,19 @@ the service has already been stopped. | ||||
| String describing the service. | ||||
| .It Ar description_$command | ||||
| String describing the extra command. | ||||
| .It Ar supervisor | ||||
| Supervisor to use to monitor this daemon. If this is unset, | ||||
| start-stop-daemon will be used. The only alternate supervisor we support | ||||
| in this release is S6 from Skarnet software. To use this, set | ||||
| supervisor=s6. | ||||
| .It Ar s6_service_path | ||||
| The path to the s6 service directory if you are monitoring this service | ||||
| with S6. The default is /var/svc.d/${RC_SVCNAME}. | ||||
| .It Ar s6_svwait_options_start | ||||
| The options to pass to s6-svwait when starting the service via s6. | ||||
| .It Ar s6_service_timeout_stop | ||||
| The amount of time, in milliseconds, s6-svc should wait for the service | ||||
| to go down when stopping the service. The default is 10000. | ||||
| .It Ar start_stop_daemon_args | ||||
| List of arguments passed to start-stop-daemon when starting the daemon. | ||||
| .It Ar command | ||||
| @@ -114,7 +127,8 @@ Daemon to start or stop via | ||||
| .Nm start-stop-daemon | ||||
| if no start or stop function is defined by the service. | ||||
| .It Ar command_args | ||||
| List of arguments to pass to the daemon when starting. | ||||
| List of arguments to pass to the daemon when starting via | ||||
| .Nm start-stop-daemon . | ||||
| .It Ar command_background | ||||
| Set this to "true", "yes" or "1" (case-insensitive) to force the daemon into | ||||
| the background. This implies the "--make-pidfile" and "--pidfile" option of | ||||
| @@ -127,6 +141,8 @@ will chroot into this path before writing the pid file or starting the daemon. | ||||
| Pidfile to use for the above defined command. | ||||
| .It Ar name | ||||
| Display name used for the above defined command. | ||||
| .It Ar stopsig | ||||
| Signal to send when stopping the daemon. | ||||
| .It Ar retry | ||||
| Retry schedule to use when stopping the daemon. It can either be a | ||||
| timeout in seconds or multiple signal/timeout pairs (like SIGTERM/5). | ||||
|   | ||||
							
								
								
									
										48
									
								
								s6-guide.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								s6-guide.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| # Using S6 with OpenRC | ||||
|  | ||||
| Beginning with OpenRC-0.16, we support using the s6 supervision suite | ||||
| from Skarmet Software in place of start-stop-daemon for monitoring | ||||
| daemons [1]. | ||||
|  | ||||
| ## Setup | ||||
|  | ||||
| Documenting s6 in detail is beyond the scope of this guide. It will | ||||
| document how to set up OpenRC services to communicate with s6. | ||||
|  | ||||
| ### Use Default start, stop and status functions | ||||
|  | ||||
| If you write your own start, stop and status functions in your service | ||||
| script, none of this will work. You must allow OpenRC to use the default | ||||
| functions. | ||||
|  | ||||
| ### Dependencies | ||||
|  | ||||
| All OpenRC service scripts that want their daemons monitored by s6 | ||||
| should have the following line added to their dependencies to make sure | ||||
| the s6 scan directory is being monitored. | ||||
|  | ||||
| need s6-svscan | ||||
|  | ||||
| ### Variable Settings | ||||
|  | ||||
| The most important setting is the supervisor variable. At the top of | ||||
| your service script, you should set this variable as follows: | ||||
|  | ||||
| supervisor=s6 | ||||
|  | ||||
| Several other variables affect s6 services. They are documented on the | ||||
| openrc-run man page, but I will list them here for convenience: | ||||
|  | ||||
| s6_service_path - the path to the s6 service directory. The default is | ||||
| /var/svc.d/$RC_SVCNAME. | ||||
|  | ||||
| s6_svwait_options_start - the options to pass to s6-svwait when starting | ||||
| the service. If this is not set, s6-svwait will not be called. | ||||
|  | ||||
| s6_service_timeout_stop - the amount of time, in milliseconds, s6-svc | ||||
| should wait for a service to go down when stopping. | ||||
|  | ||||
| This is very early support, so feel free to file bugs if you have | ||||
| issues. | ||||
|  | ||||
| [1] http://www.skarnet.org/software/s6 | ||||
| @@ -1,7 +1,7 @@ | ||||
| DIR=	${LIBEXECDIR}/sh | ||||
| SRCS=	init.sh.in functions.sh.in gendepends.sh.in \ | ||||
| 	openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}} | ||||
| INC=	rc-mount.sh functions.sh rc-functions.sh | ||||
| INC=	rc-mount.sh functions.sh rc-functions.sh s6.sh start-stop-daemon.sh | ||||
| BIN=	gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}} | ||||
|  | ||||
| INSTALLAFTER=	_installafter | ||||
|   | ||||
| @@ -126,69 +126,42 @@ _status() | ||||
| } | ||||
|  | ||||
| # Template start / stop / status functions | ||||
| # These functions select the appropriate function to call from the | ||||
| # supervisor modules | ||||
| start() | ||||
| { | ||||
| 	[ -n "$command" ] || return 0 | ||||
| 	local _background= | ||||
| 	ebegin "Starting ${name:-$RC_SVCNAME}" | ||||
| 	if yesno "${command_background}"; then | ||||
| 		if [ -z "${pidfile}" ]; then | ||||
| 			eend 1 "command_background option used but no pidfile specified" | ||||
| 			return 1 | ||||
| 		fi | ||||
| 		_background="--background --make-pidfile" | ||||
| 	fi | ||||
| 	if yesno "$start_inactive"; then | ||||
| 		local _inactive=false | ||||
| 		service_inactive && _inactive=true | ||||
| 		mark_service_inactive | ||||
| 	fi | ||||
| 	eval start-stop-daemon --start \ | ||||
| 		--exec $command \ | ||||
| 		${chroot:+--chroot} $chroot \ | ||||
| 		${procname:+--name} $procname \ | ||||
| 		${pidfile:+--pidfile} $pidfile \ | ||||
| 		$_background $start_stop_daemon_args \ | ||||
| 		-- $command_args | ||||
| 	if eend $? "Failed to start $RC_SVCNAME"; then | ||||
| 		service_set_value "command" "${command}" | ||||
| 		[ -n "${chroot}" ] && service_set_value "chroot" "${chroot}" | ||||
| 		[ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}" | ||||
| 		[ -n "${procname}" ] && service_set_value "procname" "${procname}" | ||||
| 		return 0 | ||||
| 	fi | ||||
| 	if yesno "$start_inactive"; then | ||||
| 		if ! $_inactive; then | ||||
| 			mark_service_stopped | ||||
| 		fi | ||||
| 	fi | ||||
| 	return 1 | ||||
| 	local func=ssd_start | ||||
| 	case "$supervisor" in | ||||
| 		s6) func=s6_start ;; | ||||
| 		?*) | ||||
| 			ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon" | ||||
| 			;; | ||||
| 	esac | ||||
| 	$func | ||||
| } | ||||
|  | ||||
| stop() | ||||
| { | ||||
| 	local startcommand="$(service_get_value "command")" | ||||
| 	local startchroot="$(service_get_value "chroot")" | ||||
| 	local startpidfile="$(service_get_value "pidfile")" | ||||
| 	local startprocname="$(service_get_value "procname")" | ||||
| 	command="${startcommand:-$command}" | ||||
| 	chroot="${startchroot:-$chroot}" | ||||
| 	pidfile="${startpidfile:-$pidfile}" | ||||
| 	procname="${startprocname:-$procname}" | ||||
| 	[ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0 | ||||
| 	ebegin "Stopping ${name:-$RC_SVCNAME}" | ||||
| 	start-stop-daemon --stop \ | ||||
| 		${retry:+--retry} $retry \ | ||||
| 		${command:+--exec} $command \ | ||||
| 		${procname:+--name} $procname \ | ||||
| 		${pidfile:+--pidfile} $chroot$pidfile \ | ||||
| 		${stopsig:+--signal} $stopsig | ||||
| 	eend $? "Failed to stop $RC_SVCNAME" | ||||
| 	local func=ssd_stop | ||||
| 	case "$supervisor" in | ||||
| 		s6) func=s6_stop ;; | ||||
| 		?*) | ||||
| 			ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon" | ||||
| 			;; | ||||
| 	esac | ||||
| 	$func | ||||
| } | ||||
|  | ||||
| status() | ||||
| { | ||||
| 	_status | ||||
| 	local func=ssd_status | ||||
| 	case "$supervisor" in | ||||
| 		s6) func=s6_status ;; | ||||
| 		?*) | ||||
| 			ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon" | ||||
| 			;; | ||||
| 	esac | ||||
| 	$func | ||||
| } | ||||
|  | ||||
| yesno $RC_DEBUG && set -x | ||||
| @@ -212,6 +185,10 @@ unset _conf_d | ||||
| # Load any system overrides | ||||
| sourcex -e "@SYSCONFDIR@/rc.conf" | ||||
|  | ||||
| # load service supervisor functions | ||||
| sourcex "@LIBEXECDIR@/sh/s6.sh" | ||||
| sourcex "@LIBEXECDIR@/sh/start-stop-daemon.sh" | ||||
|  | ||||
| # Set verbose mode | ||||
| if yesno "${rc_verbose:-$RC_VERBOSE}"; then | ||||
| 	EINFO_VERBOSE=yes | ||||
|   | ||||
							
								
								
									
										50
									
								
								sh/s6.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								sh/s6.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| # Start / stop / status functions for s6 support | ||||
| # Copyright (c) 2015 William Hubbs <w.d.hubbs@gmail.com> | ||||
| # Released under the 2-clause BSD license. | ||||
|  | ||||
| [ -z "${s6_service_path}" ] && s6_service_path="/var/svc.d/${RC_SVCNAME}" | ||||
|  | ||||
| s6_start() | ||||
| { | ||||
| 	if [ ! -d "${s6_service_path}" ]; then | ||||
| 		eerror "${s6_service_path} does not exist." | ||||
|  	return 1 | ||||
|  fi | ||||
| 	s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" | ||||
| 	ebegin "Starting ${name:-$RC_SVCNAME}" | ||||
| 	ln -sf "${s6_service_path}" "${s6_service_link}" | ||||
| 	s6-svscanctl -na "${RC_SVCDIR}"/s6-scan | ||||
| 	sleep 1.5 | ||||
| 	s6-svc -u "${s6_service_link}" | ||||
| 	if [ -n "$s6_svwait_options_start" ]; then | ||||
| 		s6-svwait ${s6_svwait_options_start} "${s6_service_link}" | ||||
| 	fi | ||||
| 	sleep 1.5 | ||||
| 	set -- $(s6-svstat "${s6_service_link}") | ||||
| 	[ "$1" = "up" ] | ||||
| 	eend $? "Failed to start $RC_SVCNAME" | ||||
| } | ||||
|  | ||||
| s6_stop() | ||||
| { | ||||
| 	if [ ! -d "${s6_service_path}" ]; then | ||||
| 		eerror "${s6_service_path} does not exist." | ||||
|  	return 1 | ||||
|  fi | ||||
| 	s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" | ||||
| 	ebegin "Stopping ${name:-$RC_SVCNAME}" | ||||
| 	s6-svc -Dd -T ${s6_service_timeout_stop:-10000} "${s6_service_link}" | ||||
| 	set -- $(s6-svstat "${s6_service_link}") | ||||
| 	[ "$1" = "down" ] | ||||
| 	eend $? "Failed to stop $RC_SVCNAME" | ||||
| } | ||||
|  | ||||
| s6_status() | ||||
| { | ||||
| 	s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}" | ||||
| 	if [ -L "${s6_service_link}" ]; then | ||||
| 		s6-svstat "${s6_service_link}" | ||||
| 	else | ||||
| 		_status | ||||
| 	fi | ||||
| } | ||||
							
								
								
									
										71
									
								
								sh/start-stop-daemon.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								sh/start-stop-daemon.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| # start / stop / status functions for start-stop-daemon | ||||
| # Copyright (c) 2007-2009 Roy Marples <roy@marples.name> | ||||
| # Released under the 2-clause BSD license. | ||||
|  | ||||
| ssd_start() | ||||
| { | ||||
| 	[ -n "$command" ] || return 0 | ||||
|  | ||||
| 	local _background= | ||||
| 	ebegin "Starting ${name:-$RC_SVCNAME}" | ||||
| 	if yesno "${command_background}"; then | ||||
| 		if [ -z "${pidfile}" ]; then | ||||
| 			eend 1 "command_background option used but no pidfile specified" | ||||
| 			return 1 | ||||
| 		fi | ||||
| 		if [ -n "${command_args_background}" ]; then | ||||
| 			eend 1 "command_background used with command_args_background" | ||||
| 			return 1 | ||||
| 		fi | ||||
| 		_background="--background --make-pidfile" | ||||
| 	fi | ||||
| 	if yesno "$start_inactive"; then | ||||
| 		local _inactive=false | ||||
| 		service_inactive && _inactive=true | ||||
| 		mark_service_inactive | ||||
| 	fi | ||||
| 	eval start-stop-daemon --start \ | ||||
| 		--exec $command \ | ||||
| 		${procname:+--name} $procname \ | ||||
| 		${pidfile:+--pidfile} $pidfile \ | ||||
| 		${command_user+--user} $command_user \ | ||||
| 		$_background $start_stop_daemon_args \ | ||||
| 		-- $command_args $command_args_background | ||||
| 	if eend $? "Failed to start $RC_SVCNAME"; then | ||||
| 		service_set_value "command" "${command}" | ||||
| 		[ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}" | ||||
| 		[ -n "${procname}" ] && service_set_value "procname" "${procname}" | ||||
| 		return 0 | ||||
| 	fi | ||||
| 	if yesno "$start_inactive"; then | ||||
| 		if ! $_inactive; then | ||||
| 			mark_service_stopped | ||||
| 		fi | ||||
| 	fi | ||||
| 	return 1 | ||||
| } | ||||
|  | ||||
| ssd_stop() | ||||
| { | ||||
| 	local startcommand="$(service_get_value "command")" | ||||
| 	local startpidfile="$(service_get_value "pidfile")" | ||||
| 	local startprocname="$(service_get_value "procname")" | ||||
| 	command="${startcommand:-$command}" | ||||
| 	pidfile="${startpidfile:-$pidfile}" | ||||
| 	procname="${startprocname:-$procname}" | ||||
| 	[ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0 | ||||
| 	ebegin "Stopping ${name:-$RC_SVCNAME}" | ||||
| 	start-stop-daemon --stop \ | ||||
| 		${retry:+--retry} $retry \ | ||||
| 		${command:+--exec} $command \ | ||||
| 		${procname:+--name} $procname \ | ||||
| 		${pidfile:+--pidfile} $pidfile \ | ||||
| 		${stopsig:+--signal} $stopsig | ||||
|  | ||||
| 	eend $? "Failed to stop $RC_SVCNAME" | ||||
| } | ||||
|  | ||||
| ssd_status() | ||||
| { | ||||
| 	_status | ||||
| } | ||||
| @@ -101,7 +101,9 @@ ls_dir(const char *dir, int options) | ||||
| 					continue; | ||||
| 			} | ||||
| 			if (options & LS_DIR) { | ||||
| 				if (stat(d->d_name, &buf) == 0 && | ||||
| 				snprintf(file, sizeof(file), "%s/%s", | ||||
| 				    dir, d->d_name); | ||||
| 				if (stat(file, &buf) != 0 || | ||||
| 				    !S_ISDIR(buf.st_mode)) | ||||
| 					continue; | ||||
| 			} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user