d8511a3d7c 2022-05-30 1: OTHER_TARGETS+=_service_pre
d8511a3d7c 2022-05-30 2:
d8511a3d7c 2022-05-30 3: STARTER?=svc
d8511a3d7c 2022-05-30 4:
04f7295047 2022-05-30 5: _service_check: .USEBEFORE
d8511a3d7c 2022-05-30 6: # check whether service is enabled
4d5a9b2632 2022-05-30 7: if [ -z "$${DAEMON_$@_ENABLE}" -a -z "${FORCE}" ]; then \
4d5a9b2632 2022-05-30 8: exit 0 ;\
adf4eb9997 2023-11-04 9: fi
adf4eb9997 2023-11-04 10: # check for first present executable
5066f4e4fd 2023-11-04 11: for CHECK_CMD in ${DAEMON_$@_COMMAND}; do \
5066f4e4fd 2023-11-04 12: if [ -x $${CHECK_CMD} ]; then \
5066f4e4fd 2023-11-04 13: export CMD="$${CHECK_CMD}" ;\
cbff0b494f 2023-08-18 14: break ;\
cbff0b494f 2023-08-18 15: fi ;\
adf4eb9997 2023-11-04 16: done
adf4eb9997 2023-11-04 17: # bail out if binary not found
adf4eb9997 2023-11-04 18: if [ -z $${CMD} ]; then \
5066f4e4fd 2023-11-04 19: echo "MRC:$@> Executable not found." ;\
adf4eb9997 2023-11-04 20: exit 0 ;\
adf4eb9997 2023-11-04 21: fi
adf4eb9997 2023-11-04 22: # check for rtprio/idprio
adf4eb9997 2023-11-04 23: if [ -n "$${DAEMON_$@_IDPRIO}" ]; then \
adf4eb9997 2023-11-04 24: export CMD="/usr/sbin/idprio $${DAEMON_$@_IDPRIO} $${CMD}" ;\
adf4eb9997 2023-11-04 25: elif [ -n "$${DAEMON_$@_RTPRIO}" ]; then \
adf4eb9997 2023-11-04 26: export CMD="/usr/sbin/rtprio $${DAEMON_$@_RTPRIO} $${CMD}" ;\
adf4eb9997 2023-11-04 27: fi
d8511a3d7c 2022-05-30 28:
04f7295047 2022-05-30 29: _service_pre: .USEBEFORE
d8511a3d7c 2022-05-30 30: # kldload modules if any
cbff0b494f 2023-08-18 31: echo "MRC:$@> Starting service." ;\
d8511a3d7c 2022-05-30 32: if [ -n "${DAEMON_$@_MODULES}" ]; then \
d8511a3d7c 2022-05-30 33: kldload -n ${DAEMON_$@_MODULES}; \
04f7295047 2022-05-30 34: fi
04f7295047 2022-05-30 35:
04f7295047 2022-05-30 36: _service_post_exit: .USE
04f7295047 2022-05-30 37: echo "MRC:${@:S/_exit//}> stopped."
d8511a3d7c 2022-05-30 38:
d8511a3d7c 2022-05-30 39: .for starter_source in ${:!find /etc/mrc -name '*.starter.mk'!:S/\/etc\/mrc\///}
d8511a3d7c 2022-05-30 40: starter:=${starter_source:S/.starter.mk$//}
d8511a3d7c 2022-05-30 41: Starter:=${starter:tu}
d8511a3d7c 2022-05-30 42:
d8511a3d7c 2022-05-30 43: OTHER_TARGETS:=${OTHER_TARGETS} _service_${starter} _service_${starter}_exit _service_${starter}_status
d8511a3d7c 2022-05-30 44:
f2a642cc7a 2025-02-22 45: # here we are inheriting pieces of different targets into one single target, so
f2a642cc7a 2025-02-22 46: # everything is appended in the order, but gets organized a little bit
f2a642cc7a 2025-02-22 47: # differently, all targets with .USEBEFORE are added before current target
f2a642cc7a 2025-02-22 48: # script, so after "_service_pre _service_check" we got that order inverted
f2a642cc7a 2025-02-22 49:
04f7295047 2022-05-30 50: _SERVICE_${Starter}:=_service_pre DAEMON _service_${starter} _service_check
04f7295047 2022-05-30 51: _EARLYSERVICE_${Starter}:=_service_pre SERVICE _service_${starter} _service_check
04f7295047 2022-05-30 52: _SERVICE_${Starter}_EXIT:=_service_${starter}_exit _service_post_exit
04f7295047 2022-05-30 53:
f2a642cc7a 2025-02-22 54: . if "${STARTER}" == "${starter}"
04f7295047 2022-05-30 55: _SERVICE:=_service_pre DAEMON _service_${starter} _service_check
04f7295047 2022-05-30 56: _EARLYSERVICE:=_service_pre SERVICE _service_${starter} _service_check
04f7295047 2022-05-30 57: _SERVICE_EXIT:=_service_${starter}_exit _service_post_exit
f2a642cc7a 2025-02-22 58: . endif
04f7295047 2022-05-30 59:
f2a642cc7a 2025-02-22 60: . export
f2a642cc7a 2025-02-22 61: . include "${starter_source}"
d8511a3d7c 2022-05-30 62: .endfor