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/