aboutsummaryrefslogtreecommitdiff
path: root/devel/buildbot-slave
diff options
context:
space:
mode:
authorKubilay Kocak <koobs@FreeBSD.org>2016-02-18 17:31:57 +0000
committerKubilay Kocak <koobs@FreeBSD.org>2016-02-18 17:31:57 +0000
commite1115db0c5757b7fea40e8a7c2462446685de40a (patch)
tree28617c78998a2ac9b524910d5ed61f3a9fda4608 /devel/buildbot-slave
parenta192eb5b863a9f5953a2266f0cb81a40a802f75c (diff)
downloadports-e1115db0c5757b7fea40e8a7c2462446685de40a.tar.gz
ports-e1115db0c5757b7fea40e8a7c2462446685de40a.zip
Notes
Diffstat (limited to 'devel/buildbot-slave')
-rw-r--r--devel/buildbot-slave/Makefile5
-rw-r--r--devel/buildbot-slave/files/buildslave.in119
2 files changed, 123 insertions, 1 deletions
diff --git a/devel/buildbot-slave/Makefile b/devel/buildbot-slave/Makefile
index a9071e12a2a5..21850164b92e 100644
--- a/devel/buildbot-slave/Makefile
+++ b/devel/buildbot-slave/Makefile
@@ -3,7 +3,7 @@
PORTNAME= buildbot-slave
PORTVERSION= 0.8.12
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
@@ -19,6 +19,9 @@ TEST_DEPENDS= trial:${PORTSDIR}/devel/py-twisted \
USES= python:-2.7
USE_PYTHON= autoplist distutils
+USE_RC_SUBR= buildslave
+
+SUB_LIST+= PYTHON_CMD=${PYTHON_CMD}
NO_ARCH= yes
diff --git a/devel/buildbot-slave/files/buildslave.in b/devel/buildbot-slave/files/buildslave.in
new file mode 100644
index 000000000000..d394101d8e4a
--- /dev/null
+++ b/devel/buildbot-slave/files/buildslave.in
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+# $FreeBSD$
+# PROVIDE: buildslave
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf to run buildslave:
+#
+# buildslave_enable (bool): Set to "YES" to enable buildslave.
+# Default: "NO"
+#
+# buildslave_flags (flags): Set extra command flags here. See buildslave(8)
+# Default: Empty ("").
+#
+# buildslave_uid (user): User to run buildslave as.
+# Default: "buildbot"
+#
+# buildslave_gid (group): Group to run buildslave as.
+# Default: "buildbot"
+#
+# buildslave_basedir (path): Location for buildslave base directory
+# Default: %%PREFIX%%/etc/buildslave
+#
+# buildslave_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:
+#
+# buildslave_profiles="foo bar"
+#
+# buildslave_foo_enable="YES"
+# buildslave_foo_basedir="/usr/home/foo/buildbot"
+# buildslave_foo_uid="foo"
+# buildslave_foo_gid="foo"
+#
+# buildslave_bar_enable="YES"
+# buildslave_bar_basedir="/usr/home/buildbot/"
+
+. /etc/rc.subr
+
+name=buildslave
+desc="Buildbot Buildslave"
+rcvar=buildslave_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="${buildslave_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 "${buildslave_profiles}" ]; then
+ eval buildslave_enable="\${buildslave_${profile}_enable:-${buildslave_enable}}"
+ eval buildslave_flags="\${buildslave_${profile}_flags:-${buildslave_flags}}"
+ eval buildslave_uid="\${buildslave_${profile}_uid:-${buildslave_uid}}"
+ eval buildslave_gid="\${buildslave_${profile}_gid:-${buildslave_gid}}"
+ eval buildslave_basedir="\${buildslave_${profile}_basedir:-${buildslave_basedir}}"
+ eval pidfile="\${buildslave_${profile}_basedir:-${buildslave_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 "${buildslave_profiles}" ]; then
+ # Loop through them
+ for profile in ${buildslave_profiles}; do
+ eval _enable="\${buildslave_${profile}_enable}"
+ case "${_enable:-${buildslave_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=buildslave_enable
+ else
+ _var=buildslave_"${profile}"_enable
+ fi
+ warn "Bad value" \
+ "'${_enable:-${buildslave_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_buildslave_flags="${buildslave_flags}"
+buildslave_flags=""
+command_args="--uid=${buildslave_uid} --gid=${buildslave_gid} --pidfile=${pidfile} --python=${buildslave_basedir}/buildbot.tac ${actual_buildslave_flags}"
+run_rc_command "$1"