diff --git a/devel/py-buildbot-worker/Makefile b/devel/py-buildbot-worker/Makefile index 0f699317ddd3..1aa458bb946d 100644 --- a/devel/py-buildbot-worker/Makefile +++ b/devel/py-buildbot-worker/Makefile @@ -1,49 +1,48 @@ PORTNAME= buildbot-worker -PORTVERSION= 3.5.0 -PORTREVISION= 2 +PORTVERSION= 3.7.0 CATEGORIES= devel python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= bofh@FreeBSD.org COMMENT= Buildbot Worker Daemon WWW= https://buildbot.net LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}autobahn>=20.12.3:www/py-autobahn@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}future>=0:devel/py-future@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}msgpack>0.6.0:devel/py-msgpack@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}twisted>=17.9.0:devel/py-twisted@${PY_FLAVOR} TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR} USES= python:3.6+ USE_PYTHON= autoplist concurrent distutils USE_RC_SUBR= buildbot-worker NO_ARCH= yes SUB_LIST+= PYTHON_CMD=${PYTHON_CMD} \ PYTHON_VER=${PYTHON_VER} BUILDBOT_REMOVE_ME= ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;}/buildbot_worker USERS= buildbot GROUPS= buildbot POST_PLIST+= fix-plist PLIST_FILES= man/man1/buildbot-worker.1.gz # XXX fixup plist. see: # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205056 fix-plist: ${REINPLACE_CMD} -e 's|^${BUILDBOT_REMOVE_ME}$$||' ${TMPPLIST} post-install: ${INSTALL_MAN} ${WRKSRC}/docs/buildbot-worker.1 ${STAGEDIR}${MANPREFIX}/man/man1 do-test: ${MKDIR} ${WRKDIR}/tmp cd ${WRKDIR}/tmp && PYTHONPATH=${WRKSRC} ${PYTHON_CMD} -m twisted.trial buildbot_worker.test .include diff --git a/devel/py-buildbot-worker/distinfo b/devel/py-buildbot-worker/distinfo index b1448604213a..ae28e9f560b6 100644 --- a/devel/py-buildbot-worker/distinfo +++ b/devel/py-buildbot-worker/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1646763855 -SHA256 (buildbot-worker-3.5.0.tar.gz) = 1d91f74dd1f9761af77fa7afdb93b74a03cf35b88518c980a7d0c7c1c6ffd8c0 -SIZE (buildbot-worker-3.5.0.tar.gz) = 111349 +TIMESTAMP = 1670859600 +SHA256 (buildbot-worker-3.7.0.tar.gz) = 2dcf8536b7d72df7849c3a8d06cf51f7a8eda0510e086daf2d15862a2a7ff953 +SIZE (buildbot-worker-3.7.0.tar.gz) = 120972 diff --git a/devel/py-buildbot-worker/files/buildbot-worker.in b/devel/py-buildbot-worker/files/buildbot-worker.in index 6b19fbfb3455..4b6dd5c4a9e9 100644 --- a/devel/py-buildbot-worker/files/buildbot-worker.in +++ b/devel/py-buildbot-worker/files/buildbot-worker.in @@ -1,120 +1,131 @@ #!/bin/sh # PROVIDE: buildbot-worker # REQUIRE: LOGIN # KEYWORD: shutdown + # -# Add the following lines to /etc/rc.conf to run buildbot-worker: +# Add the following lines to /etc/rc.conf to enable buildbot-worker: # # buildbot_worker_enable (bool): Set to "YES" to enable buildbot-worker. -# Default: "NO" -# +# 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 (""). +# buildbot_worker_user (user): User to run buildbot-worker as. +# Default: "buildbot" +# buildbot_worker_basedir (path): Location for buildbot-worker base directory +# Default: /usr/local/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_foo_basedir="/var/db/buildbot/workers/foo" +# buildbot_worker_foo_user="foo" # # buildbot_worker_bar_enable="YES" -# buildbot_worker_bar_basedir="/usr/home/buildbot/" +# buildbot_worker_bar_basedir="/var/db/buildbot/workers/bar" . /etc/rc.subr export PATH=${PATH}:%%LOCALBASE%%/bin -name=buildbot_worker +name="buildbot_worker" desc="Buildbot Buildworker" rcvar=buildbot_worker_enable - +command="/usr/local/bin/buildbot-worker-3.9" 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}\"}" +eval ": \${${name}_user:=\"buildbot\"}" +eval ": \${${name}_basedir:=\"/var/db/buildbot/workers\"}" + +reload_cmd="${name}_reload" +start_precmd="${name}_prestart" +stop_precmd="${name}_prestop" -command="%%PREFIX%%/bin/twistd-%%PYTHON_VER%%" -command_interpreter="%%PYTHON_CMD%%" pidfile="${buildbot_worker_basedir}/twistd.pid" +procname="%%PYTHON_CMD%%" # 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 buildbot_worker_user="\${buildbot_worker_${profile}_user:-${buildbot_worker_user}}" + eval buildbot_worker_basedir="\${buildbot_worker_${profile}_basedir:-${buildbot_worker_basedir}/${profile}}" eval pidfile="\${buildbot_worker_${profile}_basedir:-${buildbot_worker_basedir}}/twistd.pid" else echo "$0: 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 $0 $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}" +buildbot_worker_prestart() +{ + if [ ! -f "${buildbot_worker_basedir}/buildbot.tac" ]; then + echo "Worker is not configured." + echo "Run the following command to create a new worker:" + echo "su -m ${buildbot_worker_user} -c \"exec ${command} create-worker ${buildbot_worker_basedir} \"" + exit 1 + fi + rc_flags="start ${buildbot_worker_basedir} ${rc_flags}" +} + +buildbot_worker_prestop() +{ + rc_flags="stop ${buildbot_worker_basedir} ${rc_flags}" +} + +buildbot_worker_reload() +{ + rc_flags="${buildbot_worker_basedir} ${rc_flags}" + ${command} sighup ${rc_flags} +} + run_rc_command "$1"