diff options
Diffstat (limited to 'devel/buildbot-worker/files/buildbot-worker.in')
-rw-r--r-- | devel/buildbot-worker/files/buildbot-worker.in | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/devel/buildbot-worker/files/buildbot-worker.in b/devel/buildbot-worker/files/buildbot-worker.in new file mode 100644 index 000000000000..09186bc0209b --- /dev/null +++ b/devel/buildbot-worker/files/buildbot-worker.in @@ -0,0 +1,121 @@ +#!/bin/sh + +# $FreeBSD$ +# PROVIDE: buildbot-worker +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to run buildbot-worker: +# +# buildbot_worker_enable (bool): Set to "YES" to enable buildbot-worker. +# Default: "NO" +# +# buildbot_worker_flags (flags): Set extra command flags here. See buildbot-worker(8) +# Default: Empty (""). +# +# buildbot_worker_uid (user): User to run buildbot-worker as. +# Default: "buildbot" +# +# buildbot_worker_gid (group): Group to run buildbot-worker as. +# Default: "buildbot" +# +# buildbot_worker_basedir (path): Location for buildbot-worker base directory +# Default: %%PREFIX%%/etc/buildbot-worker +# +# buildbot_worker_profiles (str): Define profiles names. Space-delimited. +# Default: Empty ("") +# +# This rc.d script supports multiple "profiles". When profiles are +# specified, the non-profile specific parameters become defaults. +# +# Example: +# +# buildbot_worker_profiles="foo bar" +# +# buildbot_worker_foo_enable="YES" +# buildbot_worker_foo_basedir="/usr/home/foo/buildbot" +# buildbot_worker_foo_uid="foo" +# buildbot_worker_foo_gid="foo" +# +# buildbot_worker_bar_enable="YES" +# buildbot_worker_bar_basedir="/usr/home/buildbot/" + +. /etc/rc.subr + +export PATH=${PATH}:%%LOCALBASE%%/bin + +name=buildbot-worker +desc="Buildbot Buildworker" +rcvar=buildbot_worker_enable + +load_rc_config ${name} + +# These are just the defaults, they might get overriden for a specific profile. +eval ": \${${name}_enable:=\"NO\"}" +eval ": \${${name}_flags:=\"\"}" +eval ": \${${name}_uid:=\"buildbot\"}" +eval ": \${${name}_gid:=\"buildbot\"}" +eval ": \${${name}_basedir:=\"%%PREFIX%%/etc/${name}\"}" + +command="%%PREFIX%%/bin/twistd" +command_interpreter="%%PYTHON_CMD%%" +pidfile="${buildbot_worker_basedir}/twistd.pid" + + # A specific profile is specified in the command + if [ -n "$2" ]; then + profile="$2" + # Override defaults with profile-specific values + if [ -n "${buildbot_worker_profiles}" ]; then + eval buildbot_worker_enable="\${buildbot_worker_${profile}_enable:-${buildbot_worker_enable}}" + eval buildbot_worker_flags="\${buildbot_worker_${profile}_flags:-${buildbot_worker_flags}}" + eval buildbot_worker_uid="\${buildbot_worker_${profile}_uid:-${buildbot_worker_uid}}" + eval buildbot_worker_gid="\${buildbot_worker_${profile}_gid:-${buildbot_worker_gid}}" + eval buildbot_worker_basedir="\${buildbot_worker_${profile}_basedir:-${buildbot_worker_basedir}}" + eval pidfile="\${buildbot_worker_${profile}_basedir:-${buildbot_worker_basedir}}/twistd.pid" + else + echo "%%PREFIX%%/etc/rc.d/${name}: extra argument ignored" + fi + # A specific profile is not in the command + else + # Check if any profiles are defined + if [ -n "$1" -a -n "${buildbot_worker_profiles}" ]; then + # Loop through them + for profile in ${buildbot_worker_profiles}; do + eval _enable="\${buildbot_worker_${profile}_enable}" + case "${_enable:-${buildbot_worker_enable}}" in + [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) + continue + ;; + [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) + ;; + *) + if test -z "$_enable"; then + _var=buildbot_worker_enable + else + _var=buildbot_worker_"${profile}"_enable + fi + warn "Bad value" \ + "'${_enable:-${buildbot_worker_enable}}'" \ + "for ${_var}. " \ + "Profile ${profile} skipped." + continue + ;; + esac + echo "===> ${name} profile: ${profile}" + if %%PREFIX%%/etc/rc.d/${name} $1 ${profile}; then + success="${profile} ${success:-}" + else + failed="${profile} (${retcode}) ${failed:-}" + fi + done + # Exit so that non-profile rc.d is not started when there are profiles + exit 0 + fi + fi + +# run_rc_command would send ${name}_flags as parameters to $command (daemon) +# This ensures they are actually passed to fcgiwrap instead. +actual_buildbot_worker_flags="${buildbot_worker_flags}" +buildbot_worker_flags="" +command_args="--uid=${buildbot_worker_uid} --gid=${buildbot_worker_gid} --pidfile=${pidfile} --python=${buildbot_worker_basedir}/buildbot.tac ${actual_buildbot_worker_flags}" +run_rc_command "$1" |