123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- # Copyright 1999-2015 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- # @ECLASS: s6.eclass
- # @MAINTAINER:
- # William Hubbs <williamh@gentoo.org>
- # @BLURB: helper functions to install s6 services
- # @DESCRIPTION:
- # This eclass provides helpers to install s6 services.
- # @EXAMPLE:
- #
- # @CODE
- # inherit s6
- #
- # src_install() {
- # ...
- # s6_install_service myservice "${FILESDIR}"/run-s6 "${FILESDIR}"/finish-s6
- # ...
- # If you want a service to be logged, install the log service as
- # shown here.
- # s6_install_service myservice/log "${FILESDIR}"/log-run-s6 \
- # "${FILESDIR}"/log-finish-s6
- # ...
- # }
- # @CODE
- case ${EAPI:-0} in
- 5|6) ;;
- *) die "${ECLASS}.eclass: API in EAPI ${EAPI} not yet established" ;;
- esac
- # @FUNCTION: _s6_get_servicedir
- # @INTERNAL
- # @DESCRIPTION:
- # Get unprefixed servicedir.
- _s6_get_servicedir() {
- echo /var/svc.d
- }
- # @FUNCTION: s6_get_servicedir
- # @DESCRIPTION:
- # Output the path for the s6 service directory (not including ${D}).
- s6_get_servicedir() {
- debug-print-function ${FUNCNAME} "${@}"
- echo "${EPREFIX}$(_s6_get_servicedir)"
- }
- # @FUNCTION: s6_install_service
- # @USAGE: servicename run finish
- # @DESCRIPTION:
- # Install an s6 service.
- # servicename is the name of the service.
- # run is the run script for the service.
- # finish is the optional finish script for the service.
- s6_install_service() {
- debug-print-function ${FUNCNAME} "${@}"
- local name="$1"
- local run="$2"
- local finish="$3"
- [[ $name ]] ||
- die "${ECLASS}.eclass: you must specify the s6 service name"
- [[ $run ]] ||
- die "${ECLASS}.eclass: you must specify the s6 service run script"
- (
- local servicepath="$(_s6_get_servicedir)/$name"
- exeinto "$servicepath"
- newexe "$run" run
- [[ $finish ]] && newexe "$finish" finish
- )
- }
- # @FUNCTION: s6_service_down
- # @USAGE: servicename
- # @DESCRIPTION:
- # Install the "down" flag so this service will not be started by
- # default.
- # servicename is the name of the service.
- s6_service_down() {
- debug-print-function ${FUNCNAME} "${@}"
- local name="$1"
- [[ $name ]] ||
- die "${ECLASS}.eclass: you must specify the s6 service name"
- (
- touch "$T"/down || die
- local servicepath="$(_s6_get_servicedir)/$name"
- insinto "$servicepath"
- doins "$T"/down
- )
- }
- # @FUNCTION: s6_service_nosetsid
- # @USAGE: servicename
- # @DESCRIPTION:
- # Install the "nosetsid" flag so this service will not be made a session
- # leader.
- # servicename is the name of the service.
- s6_service_nosetsid() {
- debug-print-function ${FUNCNAME} "${@}"
- local name="$1"
- [[ $name ]] ||
- die "${ECLASS}.eclass: you must specify the s6 service name"
- (
- touch "$T"/nosetsid || die
- local servicepath="$(_s6_get_servicedir)/$name"
- insinto "$servicepath"
- doins "$T"/nosetsid
- )
- }
|