diff --git a/devel/buildbot-worker/Makefile b/devel/buildbot-worker/Makefile new file mode 100644 index 000000000000..0e3e55f55e3a --- /dev/null +++ b/devel/buildbot-worker/Makefile @@ -0,0 +1,38 @@ +# Created by: Frederic Praca +# $FreeBSD$ + +PORTNAME= buildbot-worker +PORTVERSION= 0.9.4 +PORTREVISION= 3 +CATEGORIES= devel python +MASTER_SITES= CHEESESHOP + +MAINTAINER= grembo@FreeBSD.org +COMMENT= Continuous Integration Framework (Worker) + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}future>=0.15.2:devel/py-future \ + ${PYTHON_PKGNAMEPREFIX}twisted>=14.0.1:devel/py-twisted + +TEST_DEPENDS= trial:devel/py-twisted \ + ${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock + +USES= python:-2.7 +USE_PYTHON= autoplist distutils +USE_RC_SUBR= buildbot-worker + +SUB_LIST+= PYTHON_CMD=${PYTHON_CMD} + +NO_ARCH= yes + +PLIST_FILES= man/man1/buildbot-worker.1.gz + +post-install: + ${INSTALL_MAN} ${WRKSRC}/docs/buildbot-worker.1 ${STAGEDIR}${MANPREFIX}/man/man1 + +do-test: + @cd ${WRKSRC} && trial buildbot_worker.test + +.include diff --git a/devel/buildbot-worker/distinfo b/devel/buildbot-worker/distinfo new file mode 100644 index 000000000000..8067872b4669 --- /dev/null +++ b/devel/buildbot-worker/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1488896679 +SHA256 (buildbot-worker-0.9.4.tar.gz) = 129e0d3fa9ee34f0f227487b6d1645820d2d4853099a1b0aed56587d3acab965 +SIZE (buildbot-worker-0.9.4.tar.gz) = 100889 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" diff --git a/devel/buildbot-worker/files/patch-setup.py b/devel/buildbot-worker/files/patch-setup.py new file mode 100644 index 000000000000..8fe0b3d2be8f --- /dev/null +++ b/devel/buildbot-worker/files/patch-setup.py @@ -0,0 +1,12 @@ +--- setup.py.orig 2017-02-08 10:06:13.000000000 +0100 ++++ setup.py 2017-03-07 15:28:03.225761995 +0100 +@@ -104,9 +104,6 @@ + "buildbot_worker.test.unit", + "buildbot_worker.test.util", + ], +- # mention data_files, even if empty, so install_data is called and +- # VERSION gets copied +- 'data_files': [("buildbot_worker", [])], + 'cmdclass': { + 'install_data': our_install_data, + 'sdist': our_sdist diff --git a/devel/buildbot-worker/pkg-descr b/devel/buildbot-worker/pkg-descr new file mode 100644 index 000000000000..07b879844954 --- /dev/null +++ b/devel/buildbot-worker/pkg-descr @@ -0,0 +1,6 @@ +This port is the worker part of BuildBot. For the buildmaster, install the +devel/buildbot port + +For more information, please see: http://buildbot.net/trac + +WWW: http://buildbot.net