Mercurial > hgrepos > FreeBSD > ports > www > uwsginl
changeset 0:748e69c58ee3 origin
Added the FreeBSD port www/uwsgi as of 2017-09-13 as origin port
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Wed, 13 Sep 2017 17:09:22 +0200 |
| parents | |
| children | 494c9468dabc 16556170d9cd |
| files | Makefile distinfo files/patch-uwsgiconfig.py files/uwsgi.in pkg-descr |
| diffstat | 5 files changed, 251 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Wed Sep 13 17:09:22 2017 +0200 @@ -0,0 +1,64 @@ +# Created by: Daniel Gerzo <danger@FreeBSD.org> +# $FreeBSD: head/www/uwsgi/Makefile 448482 2017-08-21 17:49:01Z ultima $ + +PORTNAME= uwsgi +PORTVERSION= 2.0.15 +PORTREVISION= 2 +CATEGORIES= www python +MASTER_SITES= http://projects.unbit.it/downloads/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Developer-friendly WSGI server which uses uwsgi protocol + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= pkgconfig python ssl +USE_PYTHON= distutils +USE_RC_SUBR= uwsgi + +CFLAGS+= -I${OPENSSLINC} +LDFLAGS+= ${OPENSSL_LDFLAGS} +MAKE_ENV+= CPUCOUNT=${MAKE_JOBS_NUMBER} UWSGI_EMBED_PLUGINS=cgi + +PYSETUP= uwsgiconfig.py +PYDISTUTILS_BUILD_TARGET= --build +PYDISTUTILS_BUILDARGS= --verbose + +USERS= uwsgi +GROUPS= uwsgi + +PLIST_FILES= bin/uwsgi \ + %%PYTHON_SITELIBDIR%%/uwsgidecorators.py + +OPTIONS_DEFINE= DEBUG JSON PCRE XML + +DEBUG_VARS= PYDISTUTILS_BUILDARGS+=--debug + +JSON_VARS= BUILDCONF_JSON=jansson +JSON_LIB_DEPENDS= libjansson.so:devel/jansson + +PCRE_VARS= BUILDCONF_PCRE=true +PCRE_LIB_DEPENDS= libpcre.so:devel/pcre + +XML_VARS= BUILDCONF_XML=libxml2 +XML_LIB_DEPENDS= libxml2.so:textproc/libxml2 + +LIB_DEPENDS+= libjansson.so:devel/jansson libpcre.so:devel/pcre libxml2.so:textproc/libxml2 + +.include <bsd.port.options.mk> + +post-patch: +.for var in JSON PCRE XML + @${REINPLACE_CMD} -e '/^${var:tl} =/ s|= .*|= ${BUILDCONF_${var}:Ufalse}|' ${WRKSRC}/buildconf/base.ini +.endfor + +do-configure: + @${DO_NADA} + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/ + @${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} + ${INSTALL_DATA} ${WRKSRC}/uwsgidecorators.py ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} + +.include <bsd.port.mk>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/distinfo Wed Sep 13 17:09:22 2017 +0200 @@ -0,0 +1,3 @@ +TIMESTAMP = 1495495189 +SHA256 (uwsgi-2.0.15.tar.gz) = 572ef9696b97595b4f44f6198fe8c06e6f4e6351d930d22e5330b071391272ff +SIZE (uwsgi-2.0.15.tar.gz) = 795070
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/files/patch-uwsgiconfig.py Wed Sep 13 17:09:22 2017 +0200 @@ -0,0 +1,18 @@ +--- uwsgiconfig.py.orig 2015-10-07 04:34:01 UTC ++++ uwsgiconfig.py +@@ -784,15 +784,6 @@ class uConf(object): + self.cflags.append('-DUWSGI_HAS_IFADDRS') + report['ifaddrs'] = True + +- if uwsgi_os in ('FreeBSD', 'OpenBSD'): +- if self.has_include('execinfo.h') or os.path.exists('/usr/local/include/execinfo.h'): +- if os.path.exists('/usr/local/include/execinfo.h'): +- self.cflags.append('-I/usr/local/include') +- self.ldflags.append('-L/usr/local/lib') +- self.cflags.append('-DUWSGI_HAS_EXECINFO') +- self.libs.append('-lexecinfo') +- report['execinfo'] = True +- + if uwsgi_os == 'GNU/kFreeBSD': + if self.has_include('execinfo.h'): + self.cflags.append('-DUWSGI_HAS_EXECINFO')
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/files/uwsgi.in Wed Sep 13 17:09:22 2017 +0200 @@ -0,0 +1,159 @@ +#!/bin/sh +# +# $FreeBSD: head/www/uwsgi/files/uwsgi.in 448482 2017-08-21 17:49:01Z ultima $ +# +# PROVIDE: uwsgi +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable uwsgi: +# +# uwsgi_enable (bool): Set it to "YES" to enable uwsgi +# Default is "NO". +# uwsgi_socket (path/str): Set the path to the uwsgi unix socket +# Default is /tmp/uwsgi.sock. +# uwsgi_socket_mode (int): Set the mode of the socket. +# Default is 660. +# uwsgi_socket_owner (str): Set the owner of the socket. +# Default is uwsgi:www. +# uwsgi_emperor (bool): Set it to "YES" to run uwsgi in emperor mode +# Default is "NO". +# uwsgi_configfile (path): Set the path to the config file +# Default is %%PREFIX%%/etc/uwsgi/uwsgi.ini. +# uwsgi_vassals_dir (path): Set the path to the vassals directory +# Default is %%PREFIX%%/etc/uwsgi/vassals. +# uwsgi_logfile (path): Set the path to the uwsgi log file +# Default is /var/log/uwsgi.log. +# uwsgi_pidfile (path): Set the path to the uwsgi pid file +# Default is /var/run/uwsgi.pid. +# uwsgi_uid (int): Set the UID of the process to run with +# Default is uwsgi. +# uwsgi_gid (int): Set the GID of the process to run with +# Default is uwsgi. +# uwsgi_flags (str): Set the uwsgi command line arguments +# Default is "-L". +# uwsgi_procname (str): Define to "uWSGI" if you start uwsgi with +# --auto-procname option. +# +# If you would like to have multiple uWSGI instances running, you can +# define multiple profiles: +# +# uwsgi_profiles (str): Set the list of uwsgi profiles +# Default is "". +# +# For each profile you can then define different options (except for +# uwsgi_enable) using the syntax uwsgi_<profile>_<option> + +. /etc/rc.subr + +name="uwsgi" +rcvar=uwsgi_enable + +load_rc_config $name + +command=%%PREFIX%%/bin/uwsgi + +: ${uwsgi_enable="NO"} +: ${uwsgi_socket="/tmp/${name}.sock"} +: ${uwsgi_socket_mode="660"} +: ${uwsgi_socket_owner="uwsgi:www"} +: ${uwsgi_configfile="%%PREFIX%%/etc/uwsgi/uwsgi.ini"} +: ${uwsgi_profiles=""} +: ${uwsgi_logfile="/var/log/${name}.log"} +: ${uwsgi_pidfile="/var/run/${name}.pid"} +: ${uwsgi_uid="uwsgi"} +: ${uwsgi_gid="uwsgi"} +: ${uwsgi_flags="-L"} +: ${uwsgi_emperor="NO"} +: ${uwsgi_vassals_dir="%%PREFIX%%/etc/uwsgi/vassals"} + +is_uwsgi_profile() { + local profile + + for profile in $uwsgi_profiles; do + if [ "$profile" = "$1" ]; then + return 0 + fi + done + + return 1 +} + +if [ -n "${uwsgi_profiles}" ]; then + if [ -n "$2" ]; then + profile="$2" + if ! is_uwsgi_profile $profile; then + echo "$0: no such profile defined in uwsgi_profiles." + exit 1 + fi + eval uwsgi_socket=\${uwsgi_${profile}_socket:-"/tmp/${name}-${profile}.sock"} + eval uwsgi_socket_mode=\${uwsgi_${profile}_socket_mode:-${uwsgi_socket_mode}} + eval uwsgi_socket_owner=\${uwsgi_${profile}_socket_owner:-${uwsgi_socket_owner}} + eval uwsgi_logfile=\${uwsgi_${profile}_logfile:-"/var/log/${name}-${profile}.log"} + eval uwsgi_pidfile=\${uwsgi_${profile}_pidfile:-"/var/run/${name}-${profile}.pid"} + eval uwsgi_uid=\${uwsgi_${profile}_uid:-"${uwsgi_uid}"} + eval uwsgi_gid=\${uwsgi_${profile}_gid:-"${uwsgi_uid}"} + eval uwsgi_flags=\${uwsgi_${profile}_flags:-"${uwsgi_flags}"} + eval uwsgi_procname=\${uwsgi_${profile}_procname:-"${uwsgi_procname}"} + eval uwsgi_emperor=\${uwsgi_${profile}_emperor:-"${uwsgi_emperor}"} + eval uwsgi_vassals_dir=\${uwsgi_${profile}_vassals_dir:-"${uwsgi_vassals_dir}"} + eval uwsgi_configfile=\${uwsgi_${profile}_configfile:-"${uwsgi_configfile}"} + elif [ -n "$1" ]; then + for profile in ${uwsgi_profiles}; do + echo "Processing ${name} profile: ${profile}" + %%PREFIX%%/etc/rc.d/uwsgi $1 ${profile} + done + exit 0 + fi +fi + +pidfile=${uwsgi_pidfile} +start_precmd=start_precmd +stop_postcmd=stop_postcmd +reload_precmd=reload_precmd +brutalreload_cmd=brutalreload_cmd +sig_stop="INT" +extra_commands="reload brutalreload" +procname=${uwsgi_procname} + +start_precmd() +{ + rc_flags="" + if [ -e ${uwsgi_configfile} ]; then + rc_flags="--ini ${uwsgi_configfile} " + fi + + if checkyesno uwsgi_emperor; then + echo "Running uWSGI as Emperor. Vassals loaded from "$uwsgi_vassals_dir + required_dirs=${uwsgi_vassals_dir} + rc_flags=${rc_flags}"--emperor-pidfile ${uwsgi_pidfile} -d ${uwsgi_logfile} --emperor ${uwsgi_vassals_dir}" + rc_flags=${rc_flags}" --vassals-set uid=${uwsgi_uid} --vassals-set gid=${uwsgi_gid}" + rc_flags=${rc_flags}" --vassals-set chmod-socket=${uwsgi_socket_mode} --vassals-set chown-socket=${uwsgi_socket_owner}" + else + rc_flags=${rc_flags}"--master --uid ${uwsgi_uid} --gid ${uwsgi_gid} --pidfile ${uwsgi_pidfile} -d ${uwsgi_logfile}" + rc_flags=${rc_flags}" -s ${uwsgi_socket} --chmod-socket=${uwsgi_socket_mode} --chown-socket=${uwsgi_socket_owner}" + fi + + rc_flags=${rc_flags}" ${uwsgi_flags}" +} + +stop_postcmd() +{ + rm -f ${uwsgi_pidfile} ${uwsgi_socket} +} + +reload_precmd() +{ + echo "Gracefully reloading ${name} without closing the main sockets." +} + +brutalreload_cmd() +{ + echo "Reloading ${name} without closing the main sockets." + + reload_precmd="" + sig_reload="TERM" + run_rc_command ${rc_prefix}reload $rc_extra_args || return 1 +} + +run_rc_command "$1"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkg-descr Wed Sep 13 17:09:22 2017 +0200 @@ -0,0 +1,7 @@ +uWSGI is a fast (pure C), self-healing, developer-friendly WSGI server, +aimed for professional python webapps deployment and development. Over +time it has evolved in a complete stack for networked/clustered python +applications, implementing message/object passing, RPC and process +management. + +WWW: http://projects.unbit.it/uwsgi/
