diff --git a/www/py-gunicorn/Makefile b/www/py-gunicorn/Makefile index 29a2828b1fe3..a94bea8c475d 100644 --- a/www/py-gunicorn/Makefile +++ b/www/py-gunicorn/Makefile @@ -1,52 +1,52 @@ PORTNAME= gunicorn DISTVERSION= 23.0.0 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= www python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= bofh@FreeBSD.org COMMENT= WSGI HTTP Server for UNIX WWW= https://gunicorn.org/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= ${PY_SETUPTOOLS} \ ${PYTHON_PKGNAMEPREFIX}setuptools-scm>=6.4.0:devel/py-setuptools-scm@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR} RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiohttp>0:www/py-aiohttp@${PY_FLAVOR} USES= cpe python USE_PYTHON= autoplist concurrent pep517 pytest USE_RC_SUBR= gunicorn NO_ARCH= yes SUB_LIST= USERS="${USERS}" GROUPS="${GROUPS}" USERS= gunicorn GROUPS= gunicorn OPTIONS_DEFINE= PROCTITLE OPTIONS_DEFAULT= PROCTITLE OPTIONS_GROUP= WORKERS OPTIONS_GROUP_WORKERS= EVENTLET GEVENT TORNADO EVENTLET_DESC= Eventlet async worker GEVENT_DESC= Greenlet worker PROCTITLE_DESC= Custom process titles with setproctitle(3) TORNADO_DESC= Tornado async worker EVENTLET_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}eventlet>=0.24.1:net/py-eventlet@${PY_FLAVOR} GEVENT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gevent>=1.4.0:devel/py-gevent@${PY_FLAVOR} PROCTITLE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setproctitle>0:devel/py-setproctitle@${PY_FLAVOR} TORNADO_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}tornado>=0.2:www/py-tornado@${PY_FLAVOR} post-install: @${MKDIR} ${STAGEDIR}${PREFIX}/etc/${PORTNAME} ${INSTALL_DATA} ${WRKSRC}/examples/example_config.py \ ${STAGEDIR}${PREFIX}/etc/${PORTNAME}/gunicorn.conf.py.sample @${ECHO} "@sample etc/gunicorn/gunicorn.conf.py.sample" >> ${TMPPLIST} .include diff --git a/www/py-gunicorn/files/gunicorn.in b/www/py-gunicorn/files/gunicorn.in index cb2c8dabaa8e..9ccf3fbc59f5 100644 --- a/www/py-gunicorn/files/gunicorn.in +++ b/www/py-gunicorn/files/gunicorn.in @@ -1,45 +1,81 @@ #!/bin/sh # # PROVIDE: gunicorn # REQUIRE: DAEMON # BEFORE: LOGIN # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf to enable gunicorn: # gunicorn_enable (bool): Set to "NO" by default. # Set it to "YES" to enable gunicorn. # # gunicorn_config (str): Path to gunicorn config file. # # gunicorn_user (str): User to run gunicorn as. # # gunicorn_group (str): Group to run gunicorn as. +# +# gunicorn_profiles (str): Set to "" by default. +# Define your profiles here. . /etc/rc.subr name=gunicorn rcvar=gunicorn_enable # set defaults load_rc_config $name : ${gunicorn_enable:=NO} : ${gunicorn_config:=%%PREFIX%%/etc/gunicorn/gunicorn.conf.py} : ${gunicorn_user:=%%USERS%%} : ${gunicorn_group:=%%GROUPS%%} -pidfile="/var/run/${name}.pid" -cpidfile="/var/run/${name}-worker.pid" +_pidprefix="/var/run/gunicorn" +pidfile="${_pidprefix}/${name}.pid" +cpidfile="${_pidprefix}/${name}-worker.pid" command=/usr/sbin/daemon command_args="-P ${pidfile} -p ${cpidfile} -f -ST ${name} %%PREFIX%%/bin/gunicorn -c ${gunicorn_config}" required_files="${gunicorn_config}" start_precmd="gunicorn_precmd" +if [ -n "$2" ]; then + profile="$2" + if [ "x${gunicorn_profiles}" != "x" ]; then + pidfile="${_pidprefix}/gunicorn-${profile}.pid" + cpidfile="${_pidprefix}/gunicorn-${profile}-worker.pid" + eval gunicorn_config="\${gunicorn_${profile}_config:-}" + if [ "x${gunicorn_config}" = "x" ]; then + echo "You must define a configuration file (gunicorn_${profile}_config)" + exit 1 + fi + required_files="${gunicorn_config}" + command_args="-P ${pidfile} -p ${cpidfile} -f -ST ${name} /usr/local/bin/gunicorn -c ${gunicorn_config}" + eval gunicorn_enable="\${gunicorn_${profile}_enable:-${gunicorn_enable}}" + else + echo "$0: extra argument ignored" + fi +else + if [ "x${gunicorn_profiles}" != "x" -a "x$1" != "x" ]; then + for profile in ${gunicorn_profiles}; do + echo "===> gunicorn profile: ${profile}" + %%PREFIX%%/etc/rc.d/gunicorn $1 ${profile} + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + fi +fi + gunicorn_precmd() { install -o ${gunicorn_user} /dev/null ${pidfile} install -o ${gunicorn_user} /dev/null ${cpidfile} } run_rc_command "$1"