Check-in [04f7295047]
Logged in as anonymous
Overview
Comment:finalize order, service names, naming, defaults etc.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 04f7295047340a3a85ca519e4b9963c46d8e07d1881b62a962639996ac6ef2b6
User & Date: arcade on 2022-05-30 13:17:07.283
Other Links: manifest | tags
Context
2022-05-30
21:16
fix ordering, test compat mode, new services check-in: 4d5a9b2632 user: arcade tags: trunk
13:17
finalize order, service names, naming, defaults etc. check-in: 04f7295047 user: arcade tags: trunk
08:07
rebuild starters and enable shutdown, add license check-in: d8511a3d7c user: arcade tags: trunk
Changes
1
2
3

4
DAEMON_boinc-client_COMMAND?=/usr/local/bin/boinc_client
DAEMON_boinc-client_FLAGS?=--redirectio   --dir /var/db/boinc
DAEMON_boinc-client_BACKGROUND?=-daemon

DAEMON_boinc-client_USER?=boinc

|

>

1
2
3
4
5
DAEMON_boinc-client_COMMAND?=/usr/local/bin/boinc_client
DAEMON_boinc-client_FLAGS?=--redirectio --dir /var/db/boinc
DAEMON_boinc-client_BACKGROUND?=-daemon
DAEMON_boinc-client_ENABLE?=no
DAEMON_boinc-client_USER?=boinc
1
2
3
4
5
6
DAEMON_bsdstats_COMMAND?=/usr/local/etc/periodic/monthly/300.statistics
DAEMON_bsdstats_ENABLE?=no
DAEMON_bsdstats_FLAGS?=-nodelay

bsdstats: _service_plain
bsdstats_exit:
|
|
|

|
|
1
2
3
4
5
6
DAEMON_bsdstat_COMMAND?=/usr/local/etc/periodic/monthly/300.statistics
DAEMON_bsdstat_ENABLE?=no
DAEMON_bsdstat_FLAGS?=-nodelay

bsdstat: ${_SERVICE_PLAIN}
bsdstat_exit:
1
2
3
4
5
6
7
8
_service_daemon: .USE
	daemon -c -u ${DAEMON_$@_USER:Uroot} -r -P /var/run/daemon.$@.pid ${DAEMON_$@_COMMAND} ${DAEMON_$@_FLAGS} ${DAEMON$@_FOREGROUND}

_service_daemon_status: .USE
	echo "Not supported yet."

_service_daemon_exit: .USEBEFORE
	kill -TERM /var/run/daemon.$@.pid







|
1
2
3
4
5
6
7
8
_service_daemon: .USE
	daemon -c -u ${DAEMON_$@_USER:Uroot} -r -P /var/run/daemon.$@.pid ${DAEMON_$@_COMMAND} ${DAEMON_$@_FLAGS} ${DAEMON$@_FOREGROUND}

_service_daemon_status: .USE
	echo "Not supported yet."

_service_daemon_exit: .USEBEFORE
	kill -TERM /var/run/daemon.${@:S/_exit//}.pid
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38


# kernel modules to load prior to service start
DAEMON_example_MODULES?=

# user to run service as
DAEMON_example_USER?=root

# extra commands to execute before starting service
# _earlyservice - starts after root mount appear
# _service - doesn't required for early boot
# you also can select specific starter by inheriting class by full name:
# _(daemon|plain|svc)_(early)?service
example: _earlyservice
	test -n "$${DAEMON_$@_ENABLE}" || echo service is always execute

# you can't be sure whether service is enabled on the first run, when future
# targets are only assembled, as service can be enabled later in the chain
# somake sure to check whether service is enabled in scripts you are running
# not in make constructs









|
|

<
<
|

<
<
<
<
>
>
21
22
23
24
25
26
27
28
29
30


31
32




33
34
# kernel modules to load prior to service start
DAEMON_example_MODULES?=

# user to run service as
DAEMON_example_USER?=root

# extra commands to execute before starting service
# ${_SERVICE} - starts after root mount appear
# ${_EARLYSERVICE} - not required on early boot
# you also can select specific starter by inheriting class by full name:


# ${_(EARLY)?SERVICE(_(SVC|DAEMON|PLAIN))?}





example: ${_EARLYSERVICE}
	: run commands that should go before the service start
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DAEMON_nfsd_COMMAND?=/sbin/nfsd
DAEMON_nfsd_ENABLE?=no
DAEMON_nfsd_FLAGS?=-u -t -n 4

.if empty(DAEMON_nfsd_ENABLE:tl:Mno)
DAEMON_rpcbind_ENABLE=yes
DAEMON_mountd_ENABLE=yes
.endif

nfsd: mountd ${_SERVICE} rpcbind
.if empty(NFS_RESERVED_PORT_ONLY:tl:Mno)
	sysctl vfs.nfs.nfs_privport=1
.endif

nfsd_exit:













<
<
1
2
3
4
5
6
7
8
9
10
11
12
13


DAEMON_nfsd_COMMAND?=/sbin/nfsd
DAEMON_nfsd_ENABLE?=no
DAEMON_nfsd_FLAGS?=-u -t -n 4

.if empty(DAEMON_nfsd_ENABLE:tl:Mno)
DAEMON_rpcbind_ENABLE=yes
DAEMON_mountd_ENABLE=yes
.endif

nfsd: mountd ${_SERVICE} rpcbind
.if empty(NFS_RESERVED_PORT_ONLY:tl:Mno)
	sysctl vfs.nfs.nfs_privport=1
.endif


1
2
3
4
5
6
7
8
9


10
11
12
13
14
15



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OTHER_TARGETS+=_service_pre

STARTER?=svc

_service_pre: .USEBEFORE
	# check whether service is enabled
	if [ -z "$${DAEMON_$@_ENABLE}" ]; then \
		exit 0; \
	fi; \


	echo "MRC:$@> Starting service."

	# kldload modules if any
	if [ -n "${DAEMON_$@_MODULES}" ]; then \
		kldload -n ${DAEMON_$@_MODULES}; \
	fi; \




.for starter_source in ${:!find /etc/mrc -name '*.starter.mk'!:S/\/etc\/mrc\///}
starter:=${starter_source:S/.starter.mk$//}
Starter:=${starter:tu}

OTHER_TARGETS:=${OTHER_TARGETS} _service_${starter} _service_${starter}_exit _service_${starter}_status

_SERVICE_${Starter}:=_service_pre DAEMON _service_${starter}
_EARLYSERVICE_${Starter}:=_service_pre SERVICE _service_${starter}
_SERVICE_${Starter}_EXIT:=_service_${starter}_exit

.if "${STARTER}" == "${starter}"
_SERVICE:=_service_pre DAEMON _service_${starter}
_EARLYSERVICE:=_service_pre SERVICE _service_${starter}
_SERVICE_EXIT:=_service_${starter}_exit
.endif

.export
.include "${starter_source}"
.endfor




|



|
>
>





|
>
>
>







|
|
|


|
|
|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
OTHER_TARGETS+=_service_pre

STARTER?=svc

_service_check: .USEBEFORE
	# check whether service is enabled
	if [ -z "$${DAEMON_$@_ENABLE}" ]; then \
		exit 0; \
	fi

_service_pre: .USEBEFORE
	echo "MRC:$@> Starting service."

	# kldload modules if any
	if [ -n "${DAEMON_$@_MODULES}" ]; then \
		kldload -n ${DAEMON_$@_MODULES}; \
	fi

_service_post_exit: .USE
	echo "MRC:${@:S/_exit//}> stopped."

.for starter_source in ${:!find /etc/mrc -name '*.starter.mk'!:S/\/etc\/mrc\///}
starter:=${starter_source:S/.starter.mk$//}
Starter:=${starter:tu}

OTHER_TARGETS:=${OTHER_TARGETS} _service_${starter} _service_${starter}_exit _service_${starter}_status

_SERVICE_${Starter}:=_service_pre DAEMON _service_${starter} _service_check
_EARLYSERVICE_${Starter}:=_service_pre SERVICE _service_${starter} _service_check
_SERVICE_${Starter}_EXIT:=_service_${starter}_exit _service_post_exit

.if "${STARTER}" == "${starter}"
_SERVICE:=_service_pre DAEMON _service_${starter} _service_check
_EARLYSERVICE:=_service_pre SERVICE _service_${starter} _service_check
_SERVICE_EXIT:=_service_${starter}_exit _service_post_exit
.endif

.export
.include "${starter_source}"
.endfor
1
2
3
4
5
6
7
8

9
_service_svc: .USE
	svc list $@ | grep -q $@ || \
	svc -u ${DAEMON_$@_USER:Uroot} -g ${DAEMON_$@_GROUP:Uwheel} ${DAEMON_$@_RESTART:D-r} ${DAEMON_$@_RESTART} init $@ ${DAEMON_$@_COMMAND} ${DAEMON_$@_FLAGS} ${DAEMON_$@_FOREGROUND}

_service_svc_status: .USE
	svc status $@

_service_svc_exit: .USEBEFORE

	svc exit $@


|


|


>
|
1
2
3
4
5
6
7
8
9
10
_service_svc: .USE
	svc list $@ | grep -q $@ || \
		svc -u ${DAEMON_$@_USER:Uroot} -g ${DAEMON_$@_GROUP:Uwheel} ${DAEMON_$@_RESTART:D-r} ${DAEMON_$@_RESTART} init $@ ${DAEMON_$@_COMMAND} ${DAEMON_$@_FLAGS} ${DAEMON_$@_FOREGROUND}

_service_svc_status: .USE
	svc status ${@:S/_status//}

_service_svc_exit: .USEBEFORE
	svc list ${@:S/_exit//} | grep -q ${@:S/_exit//} || true && \
		svc -s exit ${@:S/_exit//}