diff options
author | Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org> | 2015-02-06 13:58:54 +0100 |
---|---|---|
committer | Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org> | 2015-02-06 14:06:33 +0100 |
commit | 118f492905a2b3959cfffd25449b8804491f2a69 (patch) | |
tree | 2a1b51d69274604cd690b43901b28dfe090e9749 /testing | |
parent | 59118cbe114e7a8016aaf6532ed214e8a2d239aa (diff) | |
download | aports-118f492905a2b3959cfffd25449b8804491f2a69.tar.bz2 aports-118f492905a2b3959cfffd25449b8804491f2a69.tar.xz |
testing/uwsgi: enable python3 plugin
Diffstat (limited to 'testing')
-rw-r--r-- | testing/uwsgi/0001-use-portable-pthread-functions-instead-of-the-non-po.patch | 40 | ||||
-rw-r--r-- | testing/uwsgi/0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch | 31 | ||||
-rw-r--r-- | testing/uwsgi/0003-always-define-_GNU_SOURCE-for-linux.patch | 64 | ||||
-rw-r--r-- | testing/uwsgi/0004-define-WAIT_ANY-if-missing.patch | 34 | ||||
-rw-r--r-- | testing/uwsgi/APKBUILD | 114 | ||||
-rw-r--r-- | testing/uwsgi/musl-fix-python.patch | 13 | ||||
-rw-r--r-- | testing/uwsgi/musl-locking-fix.patch | 12 | ||||
-rw-r--r-- | testing/uwsgi/uwsgi.confd | 63 | ||||
-rw-r--r-- | testing/uwsgi/uwsgi.initd | 144 |
9 files changed, 515 insertions, 0 deletions
diff --git a/testing/uwsgi/0001-use-portable-pthread-functions-instead-of-the-non-po.patch b/testing/uwsgi/0001-use-portable-pthread-functions-instead-of-the-non-po.patch new file mode 100644 index 0000000000..cab800620a --- /dev/null +++ b/testing/uwsgi/0001-use-portable-pthread-functions-instead-of-the-non-po.patch @@ -0,0 +1,40 @@ +From 1a09a7264026339d8e0c4899a2f9ff488c0bd97d Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Mon, 10 Feb 2014 12:13:00 +0000 +Subject: [PATCH 1/4] use portable pthread functions instead of the + non-portable + +The pthread functions pthread_mutexattr_setrobust and +pthread_mutex_consistent are in posix nowdays. Use those instead of their +non-portable synonyms. + +Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> +--- + core/lock.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/core/lock.c b/core/lock.c +index d368148..f806b2c 100644 +--- a/core/lock.c ++++ b/core/lock.c +@@ -99,7 +99,7 @@ retry: + exit(1); + } + if (uwsgi_pthread_robust_mutexes_enabled) { +- if (pthread_mutexattr_setrobust_np(&attr, PTHREAD_MUTEX_ROBUST)) { ++ if (pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST)) { + uwsgi_log("unable to make the mutex 'robust'\n"); + exit(1); + } +@@ -161,7 +161,7 @@ void uwsgi_lock_fast(struct uwsgi_lock_item *uli) { + #ifdef EOWNERDEAD + if (pthread_mutex_lock((pthread_mutex_t *) uli->lock_ptr) == EOWNERDEAD) { + uwsgi_log("[deadlock-detector] a process holding a robust mutex died. recovering...\n"); +- pthread_mutex_consistent_np((pthread_mutex_t *) uli->lock_ptr); ++ pthread_mutex_consistent((pthread_mutex_t *) uli->lock_ptr); + } + #else + pthread_mutex_lock((pthread_mutex_t *) uli->lock_ptr); +-- +1.8.5.3 + diff --git a/testing/uwsgi/0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch b/testing/uwsgi/0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch new file mode 100644 index 0000000000..8ab4d9ffff --- /dev/null +++ b/testing/uwsgi/0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch @@ -0,0 +1,31 @@ +From ab68dc90d3a6e3ae660adb65cf8a020d91eb8f09 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Mon, 10 Feb 2014 12:17:18 +0000 +Subject: [PATCH 2/4] Check for GNU libc instead of linux for use of execinfo.h + +Since execinfo.h is a GNU extension it makes more sense to check for GNU +than to assume that linux is GNU. + +This is needed for building on linux with musl libc. + +Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> +--- + core/uwsgi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/core/uwsgi.c b/core/uwsgi.c +index 67b175b..b3b25ae 100644 +--- a/core/uwsgi.c ++++ b/core/uwsgi.c +@@ -1690,7 +1690,7 @@ void uwsgi_plugins_atexit(void) { + + void uwsgi_backtrace(int depth) { + +-#if defined(__linux__) || (defined(__APPLE__) && !defined(NO_EXECINFO)) || defined(UWSGI_HAS_EXECINFO) ++#if defined(__GLIBC__) || (defined(__APPLE__) && !defined(NO_EXECINFO)) || defined(UWSGI_HAS_EXECINFO) + + #include <execinfo.h> + +-- +1.8.5.3 + diff --git a/testing/uwsgi/0003-always-define-_GNU_SOURCE-for-linux.patch b/testing/uwsgi/0003-always-define-_GNU_SOURCE-for-linux.patch new file mode 100644 index 0000000000..5b02cb6ef4 --- /dev/null +++ b/testing/uwsgi/0003-always-define-_GNU_SOURCE-for-linux.patch @@ -0,0 +1,64 @@ +From c6ddb3e4ca72f6ec8662f8a18674eb4d861561b8 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Mon, 10 Feb 2014 13:03:50 +0000 +Subject: [PATCH 3/4] always define _GNU_SOURCE for linux + +We are using various extenstions that the spec say depends on _GNU_SOURCE, +for example unshare, CPU_SET, CPU_ZERO, cpu_set_t. We enable those always +for linux and we never unset it. + +Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> +--- + uwsgi.h | 18 +++++------------- + 1 file changed, 5 insertions(+), 13 deletions(-) + +diff --git a/uwsgi.h b/uwsgi.h +index b3ce4f7..3131a0f 100644 +--- a/uwsgi.h ++++ b/uwsgi.h +@@ -149,29 +149,22 @@ extern "C" { + #endif + #endif + ++#ifdef __linux__ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif +-#include <stdio.h> +-#ifdef __UCLIBC__ +-#include <sched.h> ++#ifndef __USE_GNU ++#define __USE_GNU ++#endif + #endif +-#undef _GNU_SOURCE + ++#include <stdio.h> + #include <stdlib.h> + #include <stddef.h> + #include <signal.h> + #include <math.h> + + #include <sys/types.h> +-#ifdef __linux__ +-#ifndef _GNU_SOURCE +-#define _GNU_SOURCE +-#endif +-#ifndef __USE_GNU +-#define __USE_GNU +-#endif +-#endif + #include <sys/socket.h> + #include <net/if.h> + #ifdef __linux__ +@@ -179,7 +172,6 @@ extern "C" { + #define MSG_FASTOPEN 0x20000000 + #endif + #endif +-#undef _GNU_SOURCE + #include <netinet/in.h> + + #include <termios.h> +-- +1.8.5.3 + diff --git a/testing/uwsgi/0004-define-WAIT_ANY-if-missing.patch b/testing/uwsgi/0004-define-WAIT_ANY-if-missing.patch new file mode 100644 index 0000000000..1281752111 --- /dev/null +++ b/testing/uwsgi/0004-define-WAIT_ANY-if-missing.patch @@ -0,0 +1,34 @@ +From 393de27d01710718ffedf46cbbe20c5a1d559c9e Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Mon, 10 Feb 2014 13:15:07 +0000 +Subject: [PATCH 4/4] define WAIT_ANY if missing + +POSIX uses -1 and does not define WAIT_ANY so we need to define it if +needed. + +See: +http://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html +http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_wait.h.html + +Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> +--- + uwsgi.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/uwsgi.h b/uwsgi.h +index 3131a0f..7a0d93e 100644 +--- a/uwsgi.h ++++ b/uwsgi.h +@@ -257,6 +257,9 @@ extern int pivot_root(const char *new_root, const char *put_old); + #include <stdint.h> + + #include <sys/wait.h> ++#ifndef WAIT_ANY ++#define WAIT_ANY (-1) ++#endif + + #ifdef __APPLE__ + #ifndef MAC_OS_X_VERSION_MIN_REQUIRED +-- +1.8.5.3 + diff --git a/testing/uwsgi/APKBUILD b/testing/uwsgi/APKBUILD new file mode 100644 index 0000000000..362caa88b8 --- /dev/null +++ b/testing/uwsgi/APKBUILD @@ -0,0 +1,114 @@ +# Contributor: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> +# Maintainer: Natanael Copa <ncopa@alpinelinux.org> +pkgname=uwsgi +pkgver=2.0.9 +pkgrel=1 +pkgdesc="uWSGI application container server" +url=http://projects.unbit.it/uwsgi/ +arch=all +license=GPL-2 +depends=mailcap +makedepends="linux-headers lua5.2-dev python python-dev zeromq-dev paxctl + pcre-dev python3 python3-dev" +source="http://projects.unbit.it/downloads/uwsgi-${pkgver}.tar.gz + uwsgi.initd uwsgi.confd + + 0001-use-portable-pthread-functions-instead-of-the-non-po.patch + 0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch + 0003-always-define-_GNU_SOURCE-for-linux.patch + 0004-define-WAIT_ANY-if-missing.patch + musl-fix-python.patch + musl-locking-fix.patch + " + +_plugins="lua python python3 router_uwsgi" +subpackages="" +for _p in $_plugins ; do + subpackages="$subpackages uwsgi-$_p:_$_p" +done + +_builddir=$srcdir/$pkgname-$pkgver +prepare() { + local i + cd "$_builddir" + for i in $source; do + case $i in + *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; + esac + done +} + +build() { + cd "$_builddir" + + msg "building core" + # ccache seems to trigger some weird bug on musl + CC="gcc" python uwsgiconfig.py --build core || return 1 + + export UWSGICONFIG_LUAPC="lua5.2" + for i in ${_plugins/python3}; do + msg "building $i plugin" + python uwsgiconfig.py --plugin plugins/$i core || return 1 + done + + # build python3 plugin + python3 uwsgiconfig.py --plugin plugins/python core python3 || return 1 +} + +package() { + cd "$_builddir" + + local bindir=$pkgdir/usr/sbin + install -d "$bindir" + install uwsgi "$bindir" + + local libdir=$pkgdir/usr/lib/uwsgi + install -d "$libdir" + install *_plugin.so "$libdir" + + install -Dm755 "$srcdir"/uwsgi.initd \ + "$pkgdir"/etc/init.d/uwsgi || return 1 + install -Dm644 "$srcdir"/uwsgi.confd \ + "$pkgdir"/etc/conf.d/uwsgi || return 1 + + # disable emutramp/mprotect, this is needed for luajit and cffi + paxctl -czxm "$bindir"/uwsgi +} + +_plugin() { + depends=uwsgi + mkdir -p "$subpkgdir"/usr/lib/uwsgi + mv "$pkgdir/usr/lib/uwsgi/$1_plugin.so" "$subpkgdir/usr/lib/uwsgi" || return 1 +} + +for _p in $_plugins; do + eval "_$_p() { _plugin $_p; }" +done + +md5sums="44a5b044ea8416e7af310df0dea9caf8 uwsgi-2.0.9.tar.gz +23b476a8ad6aab93b162e8eeec50c859 uwsgi.initd +3d6afe6a8c52556d1d6c52384fc38d9a uwsgi.confd +a7f98e2775e9f38a0f16c28332745836 0001-use-portable-pthread-functions-instead-of-the-non-po.patch +b40fe76f34674874815c39a7e611f259 0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch +43e4edbe50bde1096e8ca03297a1f271 0003-always-define-_GNU_SOURCE-for-linux.patch +1ee8996f7cced9dc88515c69c04dd79a 0004-define-WAIT_ANY-if-missing.patch +87c16f6fe482c9b0eac0d33c51873f45 musl-fix-python.patch +0ad5fe4340891bb9e1ee2d598add7a4a musl-locking-fix.patch" +sha256sums="fe0489bca0a8b95653908be2297e35699fb9e992f728e382224587ee6b918295 uwsgi-2.0.9.tar.gz +df99bc13609a526432afaeb16661086c73f49394e069a19ccb7423bbd025168f uwsgi.initd +4cb047e311aecd0f498da1d6a4c0947dd6dc7cc98575d54cb2ef150cacf8425c uwsgi.confd +b61bf4da3d022ddfd93a73196300cb86d962f8f6198079d11b727f61c0f8acb4 0001-use-portable-pthread-functions-instead-of-the-non-po.patch +360ede589ad228f31dd06fbf8dc17d86d60e968ae76a61b3ca258a2c5ae6f007 0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch +6cefd10432900518b3c19ee7f2a20b6b1f722b6d6e7ad43e4c3ad1be3daf43ee 0003-always-define-_GNU_SOURCE-for-linux.patch +82a2c13162387efcafa388038602d783f8a7e71c28d56ab3ac6b94abeba474d3 0004-define-WAIT_ANY-if-missing.patch +3838e8e3926a1f6271bb5aa88d309837a3bcd06cd570c499b72ca549326c682e musl-fix-python.patch +1540ceee3eadb4c62ca1a9d7a585cb4d4bd6cb01d206773c0a938ca6300f0b5a musl-locking-fix.patch" +sha512sums="8afb6ca51aa2113e2c9fc0b90e11ce8c1aeddb38f41c7b0d5da6811d7ef93aa8b9e015abfd29b1ced35b0f6a00fd7285b8140b855fc3ee79804e2513e94a9fb5 uwsgi-2.0.9.tar.gz +5d8eadba7c6ee17f86c3dbb6b7c98131ecf9db173156e3196909550954dd09be2191285f46fd4e558f0c47a0cbe7831cde71d3d4c63862d11b819660cc418131 uwsgi.initd +9f00afb2aa574bbc59040f945475712b8c40da0c06eeb5699de5510aa116148e35ab0429fa891084cf0cd7868876d5a80e1601b7c85d0e2e9ea2a1f54cdde619 uwsgi.confd +d105c487d8bd0b496cfac2dad6090f0e420805a83dca514bfbea97c687be26d7a8b9545add0f999cb67eb66818b05995405f9a874b970f53aa38ff5ce3bbdc02 0001-use-portable-pthread-functions-instead-of-the-non-po.patch +f4038ab866f445a94e155f4b73d308959c402e81227401bc7a5fe2165b888a2c8d95141245a2c10b186782934a4103c785769afaf4091fe3fe5524ed3c270fcf 0002-Check-for-GNU-libc-instead-of-linux-for-use-of-execi.patch +fc13550528121a1c8ecd530b38ea63f3802cb6d829ec18e55e485acb592b29bed8afe4d23a5f8b9baf8076a00f72d45e8b48c5c56e8c05299b7a1ea7a0ee2e77 0003-always-define-_GNU_SOURCE-for-linux.patch +deb9fb2f125b80534e8176d32ec7cd85d49225339ccd989cfb463f5b38aa0869841c4bf9a2a97e0ed1c38b999599edb057b9aae17bdad96dad68970362e8bbc3 0004-define-WAIT_ANY-if-missing.patch +de68b16b44e554a79c073c9befa10566796316dbf4c375b4d6b633d80b0282694cca233f0a70f3d6570584324f14276826bbeb8f38b550c00087a05f9ba9227f musl-fix-python.patch +9c786eb9c51e34cde32c9980c01bc3ebee380524d0897be1f40d85a9e0f4cafc974b58a00cc914f7275a712712d2fb12fd0f91bc8f9f48d33d6414f2ed19c0c4 musl-locking-fix.patch" diff --git a/testing/uwsgi/musl-fix-python.patch b/testing/uwsgi/musl-fix-python.patch new file mode 100644 index 0000000000..b4b8fd240f --- /dev/null +++ b/testing/uwsgi/musl-fix-python.patch @@ -0,0 +1,13 @@ +diff --git a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h +index 0c5c1c8..5c0dc6d 100644 +--- a/plugins/python/uwsgi_python.h ++++ b/plugins/python/uwsgi_python.h +@@ -1,4 +1,8 @@ + #include <uwsgi.h> ++/* seems like Python.h explicitlyl redefines _GNU_SOURCE */ ++#ifdef _GNU_SOURCE ++#undef _GNU_SOURCE ++#endif + #include <Python.h> + + #include <frameobject.h> diff --git a/testing/uwsgi/musl-locking-fix.patch b/testing/uwsgi/musl-locking-fix.patch new file mode 100644 index 0000000000..ba4a474ad0 --- /dev/null +++ b/testing/uwsgi/musl-locking-fix.patch @@ -0,0 +1,12 @@ +--- uwsgi-2.0.4.orig/core/lock.c ++++ uwsgi-2.0.4/core/lock.c +@@ -96,7 +96,9 @@ + #endif + if (pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT)) { + uwsgi_log("unable to set PTHREAD_PRIO_INHERIT\n"); ++#if 0 + exit(1); ++#endif + } + if (uwsgi_pthread_robust_mutexes_enabled) { + if (pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST)) { diff --git a/testing/uwsgi/uwsgi.confd b/testing/uwsgi/uwsgi.confd new file mode 100644 index 0000000000..7759361981 --- /dev/null +++ b/testing/uwsgi/uwsgi.confd @@ -0,0 +1,63 @@ +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/www-servers/uwsgi/files/uwsgi.confd-r3,v 1.1 2013/03/01 09:50:06 ultrabug Exp $ + +# YOU SHOULD ONLY MODIFY THIS FILE IF YOU USE THE UWSGI EMPEROR MODE! +# IF YOU WANT TO RUN A SINGLE APP INSTANCE, CREATE A COPY AND MODIFY THAT INSTEAD! + +# Path (or name) of UNIX/TCP socket to bind to +# Example : UWSGI_SOCKET=127.0.0.1:1234 +UWSGI_SOCKET= + +# Enable threads? (1 = yes, 0 = no). The default is 0 +# +UWSGI_THREADS=0 + +# The path to your uWSGI application. +# +UWSGI_PROGRAM= + +# The path to your uWSGI xml config file. +# +UWSGI_XML_CONFIG= + +# The number of child processes to spawn. The default is 1. +# +UWSGI_PROCESSES=1 + +# The log file path. If empty, log only errors +# +UWSGI_LOG_FILE= + +# If you want to run your application inside a chroot then specify the +# directory here. Leave this blank otherwise. +# +UWSGI_CHROOT= + +# If you want to run your application from a specific directiory specify +# it here. Leave this blank otherwise. +# +UWSGI_DIR= + +# The user to run your application as. If you do not specify these, +# the application will be run as user root. +# +UWSGI_USER= + +# The group to run your application as. If you do not specify these, +# the application will be run as group root. +# +UWSGI_GROUP= + +# Run the uwsgi emperor which loads vassals dynamically from this PATH +# see http://projects.unbit.it/uwsgi/wiki/Emperor +# The advised Gentoo folder is /etc/uwsgi.d/ +UWSGI_EMPEROR_PATH= + +# The group the emperor should run as. This is different from the UWSGI_GROUP +# as you could want your apps share some sockets with other processes such as +# www servers while preserving your emperor logs from being accessible by them. +UWSGI_EMPEROR_GROUP= + +# Additional options you might want to pass to uWSGI +# +UWSGI_EXTRA_OPTIONS= diff --git a/testing/uwsgi/uwsgi.initd b/testing/uwsgi/uwsgi.initd new file mode 100644 index 0000000000..0f330d5689 --- /dev/null +++ b/testing/uwsgi/uwsgi.initd @@ -0,0 +1,144 @@ +#!/sbin/runscript +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/www-servers/uwsgi/files/uwsgi.initd-r3,v 1.1 2013/03/01 09:50:06 ultrabug Exp $ + +PROGNAME=${SVCNAME#*.} + +UWSGI_EXEC=/usr/sbin/uwsgi +if [ "${SVCNAME}" == "uwsgi" ]; then + PIDPATH=/var/run/uwsgi +else + PIDPATH="/var/run/uwsgi_${PROGNAME}" +fi +PIDFILE="${PIDPATH}/${PROGNAME}.pid" + +extra_started_commands="${opts} reload stats" + +depend() { + need net +} + +start_pre() { + checkpath -d -m 0750 -o "${UWSGI_USER}":"${UWSGI_GROUP}" "${PIDPATH}" +} + +start_emperor() { + local OPTIONS + OPTIONS="--daemonize" + + if [ -n "${UWSGI_LOG_FILE}" ]; then + OPTIONS="${OPTIONS} ${UWSGI_LOG_FILE}" + else + OPTIONS="${OPTIONS} /dev/null --disable-logging" + fi + + [ -z "${UWSGI_DIR}" ] && UWSGI_DIR="/" + [ -z "${UWSGI_USER}" ] && UWSGI_USER="root" + [ -z "${UWSGI_GROUP}" ] && UWSGI_GROUP="root" + + if [ -n "${UWSGI_EXTRA_OPTIONS}" ]; then + OPTIONS="${OPTIONS} ${UWSGI_EXTRA_OPTIONS}" + fi + + ebegin "Starting uWSGI emperor" + cd "${UWSGI_DIR}" && \ + start-stop-daemon --start --user "${UWSGI_USER}" --exec "${UWSGI_EXEC}" \ + --group ${UWSGI_EMPEROR_GROUP:-${UWSGI_GROUP}} \ + -- --emperor "${UWSGI_EMPEROR_PATH}" ${OPTIONS} --pidfile "${PIDFILE}" + return $? +} + +start_app() { + local OPTIONS + OPTIONS="--master --daemonize" + + if [ -n "${UWSGI_LOG_FILE}" ]; then + OPTIONS="${OPTIONS} ${UWSGI_LOG_FILE}" + else + OPTIONS="${OPTIONS} /dev/null --disable-logging" + fi + + [ -z "${UWSGI_DIR}" ] && UWSGI_DIR="/" + [ -z "${UWSGI_USER}" ] && UWSGI_USER="root" + [ -z "${UWSGI_GROUP}" ] && UWSGI_GROUP="root" + + if [ -n "${UWSGI_EXTRA_OPTIONS}" ]; then + OPTIONS="${OPTIONS} ${UWSGI_EXTRA_OPTIONS}" + fi + + if [ "${UWSGI_THREADS}" = "1" ]; then + OPTIONS="${OPTIONS} --enable-threads" + fi + + if [ -n "${UWSGI_SOCKET}" ]; then + OPTIONS="${OPTIONS} --socket ${UWSGI_SOCKET}" + fi + + if [ -n "${UWSGI_PROCESSES}" ]; then + OPTIONS="${OPTIONS} --processes ${UWSGI_PROCESSES}" + fi + + if [ -n "${UWSGI_CHROOT}" ]; then + OPTIONS="${OPTIONS} --chroot ${UWSGI_CHROOT}" + fi + + if [ -n "${UWSGI_PROGRAM}" ]; then + OPTIONS="${OPTIONS} --fileserve-mode ${UWSGI_PROGRAM}" + fi + + if [ -n "${UWSGI_XML_CONFIG}" ]; then + OPTIONS="${OPTIONS} --xmlconfig ${UWSGI_XML_CONFIG}" + fi + + ebegin "Starting uWSGI application ${PROGNAME}" + cd "${UWSGI_DIR}" && \ + start-stop-daemon --start --user "${UWSGI_USER}" --group "${UWSGI_GROUP}" \ + --exec "${UWSGI_EXEC}" -- ${OPTIONS} --pidfile "${PIDFILE}" + return $? +} + +start() { + if [ "${SVCNAME}" == "uwsgi" ]; then + if [ -n "${UWSGI_EMPEROR_PATH}" ]; then + start_emperor + eend $? + else + eerror "You are not supposed to run this script directly unless you" + eerror "want to run in Emperor mode. In that case please set the UWSGI_EMPEROR_PATH." + eerror "Otherwise create a symlink for the uwsgi application you want to run as well as" + eerror "a copy of the configuration file and modify it appropriately like so..." + eerror + eerror " ln -s uwsgi /etc/init.d/uwsgi.trac" + eerror " cp /etc/conf.d/uwsgi /etc/conf.d/uwsgi.trac" + eerror " nano /etc/conf.d/uwsgi.trac" + eerror + return 1 + fi + else + start_app + eend $? + fi +} + +stop() { + if [ -n "${UWSGI_EMPEROR_PATH}" ]; then + ebegin "Stopping uWSGI emperor" + else + ebegin "Stopping uWSGI application ${PROGNAME}" + fi + start-stop-daemon --stop --signal QUIT --pidfile "${PIDFILE}" + eend $? +} + +reload() { + ebegin "Reloading uWSGI" + start-stop-daemon --signal HUP --pidfile "${PIDFILE}" + eend $? +} + +stats() { + ebegin "Logging uWSGI statistics" + start-stop-daemon --signal USR1 --pidfile "${PIDFILE}" + eend $? +} |