All,

here is an updated version of the eclass after receiving feedback on
IRC.

Let me know what you think.

Thanks,

William

# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

# @ECLASS: s6.eclass
# @MAINTAINER:
# William Hubbs <willi...@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) ;;
        *) 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}.eclassYou 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}.eclassYou 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}.eclassYou must specify the s6 service name."

        (
        touch "$T"/nosetsid || die
        local servicepath="$(_s6_get_servicedir)/$name"
        insinto "$servicepath"
        doins "$T"/nosetsid
        )
}

Attachment: signature.asc
Description: Digital signature

Reply via email to