Accepting request 178039 from server:http

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/178039
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/uwsgi?expand=0&rev=4
This commit is contained in:
Stephan Kulow 2013-06-13 20:48:37 +00:00 committed by Git OBS Bridge
commit 1c4b41109d
14 changed files with 775 additions and 498 deletions

View File

@ -2,17 +2,25 @@
openSUSE uWSGI Notes openSUSE uWSGI Notes
==================== ====================
Upgrading from 1.2.6
--------------------
The init script and the sysconfig file /etc/sysconfig/uwsgi are now deprecated
in favor of a systemd service and a default configuration file
/etc/uwsgi/uwsgi.ini.
Emperor Mode Emperor Mode
------------ ------------
The included init script runs uWSGI in Emperor mode. It will monitor the The included uwsgi service runs uWSGI in Emperor mode by defgault. It will
/etc/uwsgi/vassals directory for configurations and will automatically load monitor the /etc/uwsgi/vassals directory for configurations and will
and restart uWSGI processes when configuration files are placed there or automatically load and restart uWSGI processes when configuration files are
modified. Some example configurations are provided in the directory. To enable placed there or modified. Some example configurations are provided in the
one, rename it without the .example at the end and edit for your application. directory. To enable one, rename it without the .example at the end and edit
for your application.
For more information on Emperor mode, see For more information on Emperor mode, see
http://projects.unbit.it/uwsgi/wiki/Emperor https://uwsgi-docs.readthedocs.org/en/latest/Emperor.html
Plugins Plugins
@ -32,4 +40,3 @@ encounters options for those plugins in the configuration. To enable that, use
the following in the configuration: the following in the configuration:
autoload = 1 autoload = 1

View File

@ -1,11 +0,0 @@
--- a/uwsgiconfig.py
+++ b/uwsgiconfig.py
@@ -902,7 +902,7 @@ def build_plugin(path, uc, cflags, ldfla
except:
pass
- plugin_dest = uc.get('plugin_dir') + '/' + name + '_plugin'
+ plugin_dest = name + '_plugin'
shared_flag = '-shared'

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:49d2fbedbd42b3c95a684f7ddf43302f881297f3614c7edd0af4a4c44e2032a5
size 515869

View File

@ -0,0 +1,12 @@
--- a/plugins/emperor_amqp/amqp.c
+++ b/plugins/emperor_amqp/amqp.c
@@ -453,7 +453,8 @@ static int amqp_wait_connection_tune(int
static char *amqp_simple_get_frame(int fd, struct amqp_frame_header *fh) {
char *ptr = (char *) fh;
- ssize_t len = 0, rlen;
+ size_t len = 0;
+ ssize_t rlen;
while(len < 7) {
rlen = recv(fd, ptr, 7-len, 0);

View File

@ -0,0 +1,56 @@
--- a/plugins/jvm/uwsgiplugin.py
+++ b/plugins/jvm/uwsgiplugin.py
@@ -59,11 +59,6 @@ if "-framework JavaVM" in JVM_LIBPATH:
GCC_LIST = ['jvm_plugin']
-if 'LD_RUN_PATH' in os.environ:
- os.environ['LD_RUN_PATH'] += ':' + JVM_LIBPATH[0][2:]
-else:
- os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:]
-
def post_build(config):
if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0:
os._exit(1)
--- a/plugins/php/uwsgiplugin.py
+++ b/plugins/php/uwsgiplugin.py
@@ -22,7 +22,6 @@ CFLAGS = [os.popen(PHPPATH + ' --include
LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split()
if ld_run_path:
LDFLAGS.append('-L%s' % ld_run_path)
- os.environ['LD_RUN_PATH'] = ld_run_path
LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp5']
--- a/plugins/python/uwsgiplugin.py
+++ b/plugins/python/uwsgiplugin.py
@@ -44,10 +44,8 @@ if not 'UWSGI_PYTHON_NOLIB' in os.enviro
else:
try:
LDFLAGS.append("-L%s" % sysconfig.get_config_var('LIBDIR'))
- os.environ['LD_RUN_PATH'] = "%s" % (sysconfig.get_config_var('LIBDIR'))
except:
LDFLAGS.append("-L%s/lib" % sysconfig.PREFIX)
- os.environ['LD_RUN_PATH'] = "%s/lib" % sysconfig.PREFIX
LIBS.append('-lpython%s' % get_python_version())
else:
--- a/plugins/rack/uwsgiplugin.py
+++ b/plugins/rack/uwsgiplugin.py
@@ -44,7 +44,6 @@ LIBS = os.popen(RUBYPATH + " -e \"requir
if has_shared == 'yes':
LDFLAGS.append('-L' + libpath )
- os.environ['LD_RUN_PATH'] = libpath
LIBS.append(os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip())
else:
GCC_LIST.append("%s/%s" % (libpath, os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LIBRUBY_A']\"" % rbconfig).read().rstrip()))
--- a/plugins/ruby19/uwsgiplugin.py
+++ b/plugins/ruby19/uwsgiplugin.py
@@ -40,6 +40,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"req
libpath = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['libdir']\"" % rbconfig).read().rstrip()
LDFLAGS.append('-L' + libpath )
-os.environ['LD_RUN_PATH'] = libpath
LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip().split()

View File

@ -0,0 +1,14 @@
--- a/uwsgiconfig.py
+++ b/uwsgiconfig.py
@@ -1128,10 +1128,7 @@ def build_plugin(path, uc, cflags, ldfla
except:
pass
- if uc:
- plugin_dest = uc.get('plugin_dir') + '/' + name + '_plugin'
- else:
- plugin_dest = name + '_plugin'
+ plugin_dest = name + '_plugin'
shared_flag = '-shared'

View File

@ -0,0 +1,9 @@
--- a/plugins/systemd_logger/systemd_logger.c
+++ b/plugins/systemd_logger/systemd_logger.c
@@ -1,5 +1,6 @@
#include "../../uwsgi.h"
+#include <syslog.h>
#include <systemd/sd-journal.h>
ssize_t uwsgi_systemd_logger(struct uwsgi_logger *ul, char *message, size_t len) {

3
uwsgi-1.9.11.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e566163a7ffd18f341a0de8462d22410ee58b1f5f54c468e3019f47b7e5c4aa4
size 634255

View File

@ -1,3 +1,321 @@
-------------------------------------------------------------------
Fri May 31 18:52:08 UTC 2013 - jfunk@funktronics.ca
- Fix path to uwsgi binary in service file
- Install uwsgi.ini
- Fix signed/unsigned comparison in emperor_amqp
-------------------------------------------------------------------
Wed May 29 17:26:24 UTC 2013 - jfunk@funktronics.ca
- Deprecated init script and sysconfig file in favor of systemd service and a
default configuration file /etc/uwsgi/uwsgi.ini
- Update README to describe important changes
- Removed separate packages for plugins that have no uncommon requirements
- Update to 1.9.11
* Fixed Python 3 stdout/stderr buffering
* Fixed mule messages (@mulefunc is now reliable)
* Fixed SCRIPT_NAME handling in dynamic mode
* Fixed X-Sendfile with gzip static mode
* Fixed cache item maximum size with custom block size
* Fixed cache path handling
* Added the new high-performance PyPy plugin
* You can now avoid overlapping crons using --unique-cron. The uWSGI master
will track death of a single task, and until its death the same cron will
not be triggered
* A key/value variant of the --cron option is now available
* When using the cron2 option you are allowed to set a harakiri timeout for a
cron task. Just add harakiri=n to the options
* Added support for GNU Hurd
* A new offload engine named "memory" allows to offload memory transfers. The
cache router automatically supports it. To enable it just add
--offload-threads <n>
* An example websocket chat using Redis has been added to the repository
* You can now define a routing table to be executed as soon as you set the
HTTP status code in your plugin
* Generally the wsgi.file_wrapper callable expects a file-like object. PEP
333/3333 reports a special pattern when the object is not a file (call
read() until the object is consumed). uWSGI now supports this pattern (even
if in a hacky way)
* When using --http-keepalive you can now hold the connection open even if
the request has a body
* You can now set a harakiri timer for each request using internal routing
* The RPC plugin has been extended to allows interoperation with other
standards. Currently a simple HTTP wrapper and an XML-RPC one are exposed
- 1.9.10
* fixed alarm threads during reloads
* fixed uninitialized memory in --touch-* options
* fixed a regression in --attach-daemon
* Added gccgo plugin. As Go 1.1 will be no no more compatible with uWSGI,
gccgo will became the official way for running go apps
* You can now run routing rules after a request. Obviously not all of the
exposed actions make sense after the request but you should be able to
write even more complex setup
- 1.9.9
* Special warning: The router_basicauth plugin has changed its default
behaviour to return "break" if authorization fails. The "basicauth-next"
action, uses the old behaviour (returning "next"). This new approach should
reduce security problems caused by wrong configurations
* do not increment "tx" statistics counter for "unaccountable" plugins
* fixed --backtrace-depth
* fixed cache-sync parsing
* fixed mule farms initialization
* fixed multithreading bug when regexp conditional route is used
* fixed default-app usage in the psgi plugin
* fixed python dynamic mode + threads
* fixed error reporting in corerouter when retry is in place
* correctly report harakiri condition for gateways
* Added the WebDav plugin
* Added support for Go 1.1. Albeit you can successfully embed go 1.1 apps in
uWSGI, go 1.1 will be completely fork() unsafe. That means you are not able
to use multiprocessing, the master, mules and so on
* Stackless, Greenlet and Fiber support have been updated to support new
async features
* You can now authenticate over radius servers using the router_radius plugin
* Added another authentication backend, using SPNEGO (kerberos)
* Added the ldap authenticator
* Removed the GOON action, as it was messy and basically useless with the new
authentication approach
* The "setscriptname" action has been added to override the internally
computed SCRIPT_NAME (not only the var)
* The "donotlog" action forces uWSGI to not log the current request
* The "regexp" routing conditions has been improved to allows grouping. Now
you can easily manipulate strings and adding them as new request VARS
* uwsgi.atexit hook is now honoured by the gevent plugin (Author: André Cruz)
* Transformations can be applied on the fly (no buffering involved)
* The xattr plugin allows you to reference files extended attributes in the
internal routing subsystem
* Added airbrake plugin. Currently at early stage of development, it allows
sending uWSGI exceptions and alarms to airbrake servers
* Added legion daemons, allowing you to run external processes only when an
instance is a lord
* A new "touch" option (like --touch-reload) is available, triggering the
execution of a command
* You can now use the caching subsystem to store 64bit signed numbers and
apply atomic operations on them
- 1.9.8
* fixed a crash when reloading the master
* fixed a crash in async mode + uGreen
* the 'mime' routing var requires a request var (not a raw string)
- 1.9.7
* fixed teajs engine build
* fixed offloading status code (set to 202 when a request is offloaded)
* execute cron tasks within 60 second resolution, instead of 61 seconds
* fixed websocket proxy
* check for python3 unicode encoding (instead of crashing...)
* fixed ipcsem removal on reload
* fixed kqueue timer on OpenBSD, NetBSD and DragonFlyBSD
* fixed/reimplemented perl uwsgi::register_rpc
* fixed fd leak on sendfile() error
* fixed Content-Length when gzip file variant is used
* allows non-request plugins to register rpc functions
* more robust error checking for cgroups
* honour SCRIPT_NAME the in the PSGI plugin when multiple perl apps are
mounted
* Added legion cron to force only one instance of an application in legion
mode to execute cron tasks
* The curl_cron plugin has been added allowing the cron subsystem to call
urls (via libcurl) instead of unix commands
* The cachestore routing function can now directly store items in gzip format
* Added --skip-atexit to avoid calling atexit() hooks to workaround a bug in the
mongodb client library
* The http and uwsgi routing instructions are now more smart. You can cache
their output and get the right status code in the logs
* Added a generic api for manipulating the response has been added
(cachestore uses it)
* You can now trigger alarms when an fd is ready for read with --alarm-fd
* The spooler server plugin and the cheaper busyness algorithm are now
compiled in by default
- 1.9.6
* workaround for building the python plugin with gcc 4.8
* Sqlite and LDAP configuration moved to plugins
* New instructions added to allow for dynamic apps using internal routing
* You can now configure how the carbon plugin send the response average when
no requests have been managed
* Added numeric checks for the internal routing
* Added math and time support in the internal routing
* Added non-standard seek() and tell() to wsgi.input (post-buffering
required)
* You can invoke the ipython shell instead of the default one when using
--pyshell
* Added the 'rpcraw' routing instruction (dangerous)
* Added preliminary support for the HTTP Range header
* Added the 'lord' routing condition for Legion
* Added GridFS authentication
* Added the 'uwsgi' routing var for accessing internal uWSGI parameters
* Added the 'alarm' routing action for triggering alarms from the routing
subsystem
* Added --rbshell for accessing a Ruby shell
* Added --lua-shell for accessing a Lua shell
* Removed the old (and useless) probe subsystem
* Two new hooks have been added to the Legion subsystem: --legion-node-joined
and --legion-node-left
* --socket-sndbuf and --socket-rcvbuf have been added to allow tuning of the
send and receive buffers of the uWSGI sockets (use with caution)
* V8 plugin improvements
- 1.9.5
* fixed a memory leak with cachestore routing instruction (Riccardo
Magliocchetti)
* fixed a memory leak in carbon plugin (Riccardo Magliocchetti)
* fixed a memory leak in the cgi plugin (Riccardo Magliocchetti)
* fixed old-style python dynamic apps
* force the emperor to honour --max-fd for vassals
* improved PSGI seek with post-buffering
* fixed kvlist escaping
* Added the GridFS plugin
* Improved V8 plugin
* Added the 'cgi' routing instruction to call CGI scripts directly
- 1.9.4
* fixed cache statistics exported by the stats subsystem (Łukasz Mierzwa)
* fixed CoroEV bug in after_request (Tom Molesworth and John Berthels)
* update cache items after a restore from persistent storage (Łukasz Mierzwa)
* fixed signal handling in non-worker processes
* fixed thundering herd in multiple mules setup
* ported the cplusplus skeletal plugin to the new api
* fixed uWSGI reloading when build as a shared library
* From now on, SmartOS is included in the officially supported operating
systems
* Support for JavaScript routing rules and configurations using V8
* Added the rpcnext routing action
* Legion improvements
- 1.9.3
* fixed imports in the JVM build system when virtualenvs are used (Ryan
Kaskel)
* fixed mod_proxy_uwsgi with apache 2.4
* fixed php headers generation when Status is created from the php app itself
* Pluggable configuration system (with Lua support)
* Immediate setuid and setgid with new options --immediate-uid and
--immediate-gid
* The option --emperor-tyrant-nofollow has been added forcing the emperor to
now follow symlinks when searching for uid/gid in tyrant mode
* Added the "rpcret" routing action to usa Lua to write advanced rules
- 1.9.2
* Fixed python3 response headers managament (wrong refcnt)
* Fixed readline() on request body when postbuffering is in place
* Fixed ruby fiber plugin
* You can now store responses automatically in the uWSGI cache using
route-run and the cachestore routing action
* routing access to cookie and query string
* Added empty internal routing condition
* Added the Geoip plugin
* Added the SSI plugin (beta)
- 1.9.1
* Fixed --req-logger after a graceful reload
* Fixed a crash with the carbon plugin
* Fixed signal handling when multiple workers + copy on write is in place
* Fixed exception handling in the Rack plugin
* The XSLT plugin has been added. It allows to apply XML transformation via
request plugin or uWSGI internal routing
* Legion scrolls api
* On demand vassals in Emperor mode
* The --exec-post-app hook has been added allowing you to run commands after
the load of an application
* The cache router plugin has been improved
* Added a crypto logger allowing for encryption in logging to remote hosts
via UDP
* The "rpc" routing instruction has been added, allowing you to call rpc
functions directly from the routing subsystem and forward they output to
the client
* Preliminary support for name resolving in the carbon plugin
* New routing conditions have been added (equal,startswith,endswith,regexp)
* You can reference the uWSGI version string using the %V magic var in your
configurations
* Added the 'mongodb' generic plugin
- 1.9
* From now on, all of the request plugins need to be non-blocking
* Added Coro::AnyEvent plugin for Perl. Requires Coro::Anyevent package
* We have finally a truly working JVM infrastructure
* The first Mono plugin attempt (in 2010) was a total failure. Now we have a
new shining implementation
* Language independent HTTP body manage
* Faster uwsgi/HTTP/FastCGI/SCGI native sockets
* Can split request/error logging
* Chain reloading of workers
* Offloading improvements
* Better static files management/serving
* New Generation Cache subsystem (cache2)
* The Legion subsystem is a new whole addition to the uWSGI project. It has
superseeded the old Clustering subsystem
* Cygwin (windows) support
* Advanced Exceptions subsystem
* SPDY, SSL and SNI support
* HTTP router keepalive, auto-chunking, auto-gzip and transparent websockets
* The SSL router (sslrouter) for SSL virtual hosting
* New Websockets API
* New Programmable Internal Routing (turing complete ?)
* A new imperial monitor has been added allowing vassals to be governed over
zeromq messages
* Total introspection via the stats server
* Ping requests sent using nagios plugin will no longer be counted in apps
request stats
* The --app option has been removed. To load applications on specific
mountpoints use the --mount option
* The --static-offload-to-thread option has been removed. Use the more
versatile --offload-threads
* The grunt mode has been removed. To accomplish the same behaviour just use
threads or directly call fork() and uwsgi.disconnect()
* The send_message/recv_message api has been removed (use language-supplied
functions)
- 1.5
* added --not-alarm-log
* support for TCP_FASTOPEN (Linux-only)
* improved emperor reloading
* added --get
* Legion subsystem
* emperor_zeromq plugin
* SNI support
* distributed SSL session cache
- 1.4.1
* fixed typos in corerouter plugins
* fixed offloading when the number of threads is higher than 1
* fixed static_maps for non-existent paths
* fixed uwsgi_connect() on modern Linux systems to reset the socket to blocking mode
- 1.4
* gevent improvements
* improved http/https router and fastrouter
* Go official support
* a new set of infos are exported to the stats system
* improved systemd support
* log filtering and routing
* improved tracebacker
* offload transfer for static files, and network transfers
* matheval support
* plugins can be written in Obj-C
* smart attach daemon
* added support for PEP 405 virtualenvs
* rawrouter with xclient support
* internal routing plugin for cache
- 1.3
* python tracebacker
* user-governed harakiri
* simplified external plugin development
* Linux namespace mountpoint improvements
* secured subscription system
* merged routers codebase (fastrouter, http, rawrouter)
* https support in the http router
* config report at the end of uWSGI build process
* improved subscription system (multicast and unix socket)
* custom options
* graceful reloads on shared sockets
* configurable log-master buffer size
* extreme-optimizations for the stats subsystem
* redislog and mongodblog plugins
* added python logger
* mongodb and postgres imperial monitors
* implemented psgix.logger and psgix.cleanup
* full rack spec compliance
* preliminary ipv6 support
* gevent graceful reloads
* support for multiple loggers and logformat
* lazy-apps to load apps after fork() but without changing reloading subsystem
* emperor heartbeat subsystem
* cheaper busyness plugin
* pluggable clock sources
* added router_rewrite and router_http plugins
* external spoolers
* support for section:// and fd:// loaders
* alarm subsystem (with curl and xmpp plugins)
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Sep 11 22:13:54 UTC 2012 - jfunk@funktronics.ca Tue Sep 11 22:13:54 UTC 2012 - jfunk@funktronics.ca

3
uwsgi.ini Normal file
View File

@ -0,0 +1,3 @@
[uwsgi]
# Directory containing application configs
emperor = /etc/uwsgi/vassals

View File

@ -1,99 +0,0 @@
#!/bin/sh
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# Author: James Oakley
#
# /etc/init.d/uwsgi
# and its symbolic link
# /(usr/)sbin/rcuwsgi
#
# LSB compatible service control script; see http://www.linuxbase.org/spec/
#
### BEGIN INIT INFO
# Provides: uwsgi
# Required-Start: $syslog $remote_fs
# Should-Start: $time ypbind smtp
# Required-Stop: $syslog $remote_fs
# Should-Stop: ypbind smtp
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Application Container Server for Networked/Clustered Web Applications
# Description: Application Container Server for Networked/Clustered Web Applications
### END INIT INFO
# Check for missing binaries (stale symlinks should not happen)
UWSGI_BIN=/usr/sbin/uwsgi
test -x $UWSGI_BIN || { echo "$UWSGI_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
UWSGI_CONFIG=/etc/sysconfig/uwsgi
test -r $UWSGI_CONFIG || { echo "$UWSGI_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
. $UWSGI_CONFIG
UWSGI_OPTIONS="$UWSGI_OPTIONS --autoload"
if [ "$UWSGI_EMPEROR_MODE" = "true" ] ; then
UWSGI_OPTIONS="$UWSGI_OPTIONS --emperor $UWSGI_VASSALS"
fi
. /etc/rc.status
rc_reset
case "$1" in
start)
echo -n "Starting uWSGI "
/sbin/startproc $UWSGI_BIN $UWSGI_OPTIONS
rc_status -v
;;
stop)
echo -n "Shutting down uWSGI "
/sbin/killproc $UWSGI_BIN
rc_status -v
;;
try-restart|condrestart)
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset
fi
rc_status
;;
restart)
$0 stop
$0 start
rc_status
;;
force-reload)
echo -n "Reload service uWSGI "
/sbin/killproc -HUP $UWSGI_BIN
rc_status -v
;;
reload)
echo -n "Reload service uWSGI "
/sbin/killproc -HUP $UWSGI_BIN
rc_status -v
;;
status)
echo -n "Checking for service uWSGI "
/sbin/checkproc $UWSGI_BIN
rc_status -v
;;
probe)
echo -n "uWSGI does not support probe "
rc_failed 3
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
exit 1
;;
esac
rc_exit

11
uwsgi.service Normal file
View File

@ -0,0 +1,11 @@
[Unit]
Description=Application Container Server for Networked/Clustered Web Applications
[Service]
ExecStart=/usr/sbin/uwsgi --autoload --ini /etc/uwsgi/uwsgi.ini
Restart=always
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target

View File

@ -1,7 +1,7 @@
# #
# spec file for package uwsgi # spec file for package uwsgi
# #
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -17,7 +17,7 @@
Name: uwsgi Name: uwsgi
Version: 1.2.6 Version: 1.9.11
Release: 0 Release: 0
Summary: Application Container Server for Networked/Clustered Web Applications Summary: Application Container Server for Networked/Clustered Web Applications
License: GPL-2.0+ License: GPL-2.0+
@ -25,36 +25,98 @@ Group: Productivity/Networking/Web/Servers
Url: http://projects.unbit.it/uwsgi/wiki Url: http://projects.unbit.it/uwsgi/wiki
Source: http://projects.unbit.it/downloads/uwsgi-%{version}.tar.gz Source: http://projects.unbit.it/downloads/uwsgi-%{version}.tar.gz
Source1: opensuse.ini.in Source1: opensuse.ini.in
Source2: uwsgi.init Source2: uwsgi.service
Source3: django.ini.example Source3: django.ini.example
Source4: rails.yml.example Source4: rails.yml.example
Source5: trac.ini.example Source5: trac.ini.example
Source6: werkzeug.xml.example Source6: werkzeug.xml.example
Source7: README.openSUSE Source7: README.openSUSE
Source8: uwsgi.sysconfig Source8: uwsgi.ini
# PATCH-FIX-OPENSUSE uwsgi-1.2.6-plugin_build_path.patch - Don't attempt to install plugins to target dest during build # PATCH-FIX-OPENSUSE uwsgi-1.9.11-plugin_build_path.patch - Don't attempt to install plugins to target dest during build
Patch0: uwsgi-1.2.6-plugin_build_path.patch Patch0: uwsgi-1.9.11-plugin_build_path.patch
BuildRequires: gcc-c++ # PATCH-FIX-OPENSUSE uwsgi-1.9.11-no-LD_RUN_PATH.patch - Disable invalid rpath in plugins
BuildRequires: java-devel Patch1: uwsgi-1.9.11-no-LD_RUN_PATH.patch
BuildRequires: libxml2-devel # PATCH-FIX-UPSTREAM uwsgi-1.9.11-emperor_amqp-fix-comparison.patch - Fix signed/unsigned comparison
BuildRequires: pam-devel Patch2: uwsgi-1.9.11-emperor_amqp-fix-comparison.patch
BuildRequires: postgresql-devel # PATCH-FIX-OPENSUSE uwsgi-1.9.11-systemd_logger-old_systemd.patch - Older systemd in 12.2 does not implicity include syslog.h
BuildRequires: python-devel Patch3: uwsgi-1.9.11-systemd_logger-old_systemd.patch
BuildRequires: ruby-devel %if 0%{?suse_version} > 1210
%if 0%{?suse_version} && 0%{?suse_version} > 1210
BuildRequires: erlang BuildRequires: erlang
%endif
BuildRequires: gcc-c++
#BuildRequires: go
BuildRequires: java-devel
#BuildRequires: krb5-devel
BuildRequires: libGeoIP-devel
BuildRequires: libattr-devel
BuildRequires: libcap-devel
BuildRequires: libcurl-devel
%if 0%{?suse_version} > 1210
BuildRequires: libjansson-devel
%endif
#BuildRequires: libmono-2_0-devel
BuildRequires: libuuid-devel
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
BuildRequires: libyaml-devel
%if 0%{?suse_version} > 1210
BuildRequires: lua51-devel BuildRequires: lua51-devel
%else %else
BuildRequires: lua-devel BuildRequires: lua-devel
%endif %endif
%if 0%{?suse_version} && 0%{?suse_version} > 1140 #BuildRequires: mono-web
BuildRequires: openldap2-devel
BuildRequires: openssl-devel
BuildRequires: pam-devel
BuildRequires: pcre-devel
#BuildRequires: php5-devel
BuildRequires: pkg-config
BuildRequires: postgresql-devel
BuildRequires: python-devel
BuildRequires: python-greenlet-devel BuildRequires: python-greenlet-devel
%if 0%{?suse_version} > 1210
BuildRequires: ruby19-devel
%endif %endif
BuildRequires: sqlite3-devel
%if 0%{?suse_version} > 1210
BuildRequires: systemd-devel
%else
BuildRequires: systemd
%endif
BuildRequires: tcpd-devel
BuildRequires: v8-devel
BuildRequires: zeromq-devel
BuildRequires: zlib-devel
%{?systemd_requires}
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} && 0%{?suse_version} <= 1110 Provides: uwsgi-carbon = %{version}
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} Obsoletes: uwsgi-carbon < 1.9.11
%{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} Provides: uwsgi-cgi = %{version}
%endif Obsoletes: uwsgi-cgi < 1.9.11
Provides: uwsgi-fastrouter = %{version}
Obsoletes: uwsgi-fastrouter < 1.9.11
Provides: uwsgi-graylog2 = %{version}
Obsoletes: uwsgi-graylog2 < 1.9.11
Provides: uwsgi-http = %{version}
Obsoletes: uwsgi-http < 1.9.11
Provides: uwsgi-logsocket = %{version}
Obsoletes: uwsgi-logsocket < 1.9.11
Provides: uwsgi-nagios = %{version}
Obsoletes: uwsgi-nagios < 1.9.11
Provides: uwsgi-probepg = %{version}
Obsoletes: uwsgi-probepg < 1.9.11
Provides: uwsgi-redislog = %{version}
Obsoletes: uwsgi-redislog < 1.9.11
Provides: uwsgi-rrdtool = %{version}
Obsoletes: uwsgi-rrdtool < 1.9.11
Provides: uwsgi-rsyslog = %{version}
Obsoletes: uwsgi-rsyslog < 1.9.11
Provides: uwsgi-syslog = %{version}
Obsoletes: uwsgi-syslog < 1.9.11
Provides: uwsgi-ugreen = %{version}
Obsoletes: uwsgi-ugreen < 1.9.11
Provides: uwsgi-zergpool = %{version}
Obsoletes: uwsgi-zergpool < 1.9.11
%description %description
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
@ -81,48 +143,57 @@ different plugins can be used in order to add compatibility with tons of
different technology on top of the same core. different technology on top of the same core.
%package carbon %package emperor_pg
Summary: Carbon Plugin for Graphite Integration for uWSGI Summary: PostgreSQL Emperor Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description carbon %description emperor_pg
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C. container server coded in pure C.
This package contains the carbon plugin for integration with the Graphite This package contains an emperor plugin allowing for configuration of
realtime graphing server. applications (vassals) in a PostgreSQL database.
See http://projects.unbit.it/uwsgi/wiki/Carbon for more info.
%package cgi %package emperor_zeromq
Summary: CGI Plugin for uWSGI Summary: ZeroMQ Emperor Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description cgi %description emperor_zeromq
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C. container server coded in pure C.
This package contains the CGI plugin to support legacy CGI scripts. This package contains an emperor plugin allowing for configuration of
applications (vassals) via ZeroMQ.
See http://projects.unbit.it/uwsgi/wiki/CGI for more info.
%package fastrouter %if 0%{?suse_version} > 1210
Summary: Fastrouter Plugin for uWSGI %package erlang
Summary: Erlang Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description fastrouter %description erlang
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C. container server coded in pure C.
This package contains the fastrouter plugin for using uWSGI as a This package contains support for uWSGI to act as an Erlang C-Node and exchange
proxy/load-balancer/router speaking the uwsgi protocol. messages and rpc with Erlang nodes.
%endif
See http://projects.unbit.it/uwsgi/wiki/FastRouter for more info. %package geoip
Summary: GeoIP Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
Requires: %{name}-python = %{version}
%description geoip
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for GeoIP routing.
%package gevent %package gevent
@ -138,39 +209,27 @@ container server coded in pure C.
This package contains support for Python Gevent, which is a non-blocking This package contains support for Python Gevent, which is a non-blocking
networking framework. networking framework.
See http://projects.unbit.it/uwsgi/wiki/Gevent for more info.
%package greenlet
%package graylog2 Summary: Greenlet Plugin for uWSGI
Summary: Graylog2 Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
Requires: %{name}-python = %{version}
%description graylog2 %description greenlet
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C. container server coded in pure C.
This package contains support for logging to Graylog2 log servers. This package contains support for the Python Greenlet non-blocking network
framework.
%package http
Summary: HTTP Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description http
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for using uWSGI as a HTTP server.
See http://projects.unbit.it/uwsgi/wiki/HTTPserver for more info.
%package jvm %package jvm
Summary: JVM Plugin for uWSGI Summary: JVM Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
Provides: uwsgi-jwsgi = %{version}
Obsoletes: uwsgi-jwsgi < 1.9.11
%description jvm %description jvm
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
@ -178,36 +237,17 @@ container server coded in pure C.
This package contains support for embedding a Java virtual machine in uWSGI. This package contains support for embedding a Java virtual machine in uWSGI.
See http://projects.unbit.it/uwsgi/wiki/JVM for more info.
%package ldap
%package jwsgi Summary: LDAP Plugin for uWSGI
Summary: Java WSGI Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
Requires: %{name}-jvm = %{version}
%description jwsgi
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for WSGI-style Java applications.
See http://projects.unbit.it/uwsgi/wiki/jwsgi for more info.
%package logsocket
Summary: Socket Logging Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description logsocket %description ldap
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C. container server coded in pure C.
This package contains the logsocket plugin for logging to UNIX and UDP sockets. This package contains support for configuring uWSGI via LDAP.
See http://projects.unbit.it/uwsgi/wiki/SocketLogging for more info.
%package lua %package lua
@ -221,22 +261,6 @@ container server coded in pure C.
This package contains support for Lua applications via the wsapi interface. This package contains support for Lua applications via the wsapi interface.
See http://projects.unbit.it/uwsgi/wiki/Lua for more info.
%package nagios
Summary: Nagios Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description nagios
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Nagios monitoring of the uWSGI server.
See http://projects.unbit.it/uwsgi/wiki/Nagios for more info.
%package pam %package pam
Summary: PAM Plugin for uWSGI Summary: PAM Plugin for uWSGI
@ -250,18 +274,6 @@ container server coded in pure C.
This package contains support for PAM authentication. This package contains support for PAM authentication.
%package probepg
Summary: PostgreSQL Probe Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description probepg
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for probing PostgreSQL servers.
%package psgi %package psgi
Summary: PSGI Plugin for uWSGI Summary: PSGI Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
@ -274,147 +286,8 @@ container server coded in pure C.
This package contains the PSGI plugin for running Perl applications that This package contains the PSGI plugin for running Perl applications that
support the PSGI protocol. support the PSGI protocol.
See http://projects.unbit.it/uwsgi/wiki/PSGI for more info.
%package python
Summary: Python Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description python
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Python applications via the WSGI protocol.
See http://projects.unbit.it/uwsgi/wiki/Quickstart for more info.
%package ruby
Summary: Ruby Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description ruby
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Ruby applications.
See http://projects.unbit.it/uwsgi/wiki/Rack for more info.
%package redislog
Summary: Redis Logging Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description redislog
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for logging to a Redis server.
%package rrdtool
Summary: RRDTool Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description rrdtool
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for saving statistics in RRD bastabase files.
%package rsyslog
Summary: Rsyslog Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description rsyslog
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for logging to Rsyslog servers.
%package syslog
Summary: Syslog Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description syslog
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for logging to syslog servers.
%package ugreen
Summary: Green Threads Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
Requires: %{name}-python = %{version}
%description ugreen
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for green threads in Python applications.
See http://projects.unbit.it/uwsgi/wiki/uGreen for more info.
%package zergpool
Summary: Zerg Mode Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description zergpool
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Zerg mode, which allows for dynamically added
workers under load.
See http://projects.unbit.it/uwsgi/wiki/ZergMode for more info.
%if 0%{?suse_version} && 0%{?suse_version} > 1210
%package fiber
Summary: Ruby Fibers Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
Requires: %{name}-ruby = %{version}
%description fiber
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Ruby fibers. Fibers are a form of coroutine,
useful for implementing cooperative multitasking in your apps.
See http://projects.unbit.it/uwsgi/wiki/FiberLoop for more info.
%package erlang
Summary: Erlang Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description erlang
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for uWSGI to act as an Erlang C-Node and exchange
messages and rpc with Erlang nodes.
See http://projects.unbit.it/uwsgi/wiki/ErlangIntegration for more info.
%if 0%{?suse_version} > 1210
%package pyerl %package pyerl
Summary: Python-Erlang Plugin for uWSGI Summary: Python-Erlang Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
@ -428,210 +301,329 @@ container server coded in pure C.
This package contains the pyerl module for accessing Erlang functionality to This package contains the pyerl module for accessing Erlang functionality to
Python applications. Python applications.
See http://projects.unbit.it/uwsgi/wiki/ErlangIntegration for more info.
%endif %endif
%if 0%{?suse_version} && 0%{?suse_version} > 1140 %package pypy
%package greenlet Summary: PyPy Plugin for uWSGI
Summary: Greenlet Plugin for uWSGI
Group: Productivity/Networking/Web/Servers Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version} Requires: %{name} = %{version}
Requires: %{name}-python = %{version}
%description greenlet %description pypy
uWSGI is a fast, self-healing and developer/sysadmin-friendly application uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C. container server coded in pure C.
This package contains support for the Python Greenlet non-blocking network This package contains support for Python applications using PyPy.
framework.
See http://projects.unbit.it/uwsgi/wiki/AsyncSupport for more info.
%package python
Summary: Python Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description python
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Python applications via the WSGI protocol.
%if 0%{?suse_version} > 1210
%package ruby
Summary: Ruby Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
Requires: ruby19
Provides: uwsgi-fiber = %{version}
Obsoletes: uwsgi-fiber < 1.9.11
%description ruby
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for Ruby applications.
%endif %endif
%package sqlite3
Summary: SQLite3 Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description sqlite3
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for storing application configuration in SQLite3
databases.
%package v8
Summary: V8 JavaScript Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description v8
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for JavaScript using V8.
%package xslt
Summary: XSLT Plugin for uWSGI
Group: Productivity/Networking/Web/Servers
Requires: %{name} = %{version}
%description xslt
uWSGI is a fast, self-healing and developer/sysadmin-friendly application
container server coded in pure C.
This package contains support for rendering XML content using XSLT.
%prep %prep
%setup -q -n uwsgi-%{version} %setup -q -n uwsgi-%{version}
%patch0 -p1 %patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
# Generate a config that builds all plugins except for examples and stuff we # Generate a config that builds all plugins except for examples and stuff we
# can't satisfy the requirements for # can't satisfy the requirements for or are just broken
excluded_plugins="cheaper_backlog2 cplusplus dummy example mono pyuwsgi stackless pypy php" excluded_plugins=""
# Still no mongodb in Factory
excluded_plugins="$excluded_plugins stats_pusher_mongodb emperor_mongodb mongodb mongodblog gridfs"
# Mono plugin builds private key during build. It would not be a good idea to
# distribute the same key to multiple systems
excluded_plugins="$excluded_plugins mono"
# Only for OSX
excluded_plugins="$excluded_plugins alarm_speech"
# No libphp on openSUSE for some reason
excluded_plugins="$excluded_plugins php"
# No stackless in openSUSE
excluded_plugins="$excluded_plugins stackless"
# No perl-Coro in Factory (there is a broken unmaintained one under d:l:perl:CPAN-C)
excluded_plugins="$excluded_plugins coroae"
# Requires libgloox, which is not in Factory
excluded_plugins="$excluded_plugins alarm_xmpp"
# No build config for gccgo ATM
excluded_plugins="$excluded_plugins gccgo"
# These plugins require a libuwsgi, which appears to conflict with core...
excluded_plugins="$excluded_plugins go pyuwsgi"
# The SPNEGO router is not complete
excluded_plugins="$excluded_plugins router_spnego"
# These are example plugins and shouldn't be distributed
excluded_plugins="$excluded_plugins cplusplus dummy example"
%if 0%{?suse_version} && 0%{?suse_version} <= 1210 %if 0%{?suse_version} && 0%{?suse_version} <= 1210
excluded_plugins="$excluded_plugins fiber ruby19 erlang pyerl" # Requirements missing on openSUSE <= 12.1
%endif excluded_plugins="$excluded_plugins erlang fiber pyerl rack ruby19 systemd_logger"
%if 0%{?suse_version} && 0%{?suse_version} <= 1140
excluded_plugins="$excluded_plugins greenlet"
%endif %endif
plugins=$(python -c "import sys, os; print ', '.join([p for p in os.listdir('plugins') if p not in sys.argv[1:]])" $excluded_plugins) plugins=$(python -c "import sys, os; print ', '.join([p for p in os.listdir('plugins') if p not in sys.argv[1:]])" $excluded_plugins)
sed -e "s#@@LIBDIR@@#%{_libdir}#" -e "s#@@PLUGINS@@#$plugins#" %{SOURCE1} > buildconf/opensuse.ini sed -e "s#@@LIBDIR@@#%{_libdir}#" -e "s#@@PLUGINS@@#$plugins#" %{SOURCE1} > buildconf/opensuse.ini
# README.openSUSE # README.openSUSE
cp %{SOURCE7} . cp %{SOURCE7} .
%build %build
# Find correct location for libjvm # Find correct location for libjvm
jvmlib=$(dirname $(find %{_jvmdir}/java/jre/lib -name "libjvm.so" | grep server)) export UWSGICONFIG_JVM_LIBPATH=$(dirname $(find %{_jvmdir}/java/jre/lib -name "libjvm.so" | grep server))
export CFLAGS="%{optflags} -I$(echo %{_libdir}/erlang/lib/erl_interface-*/include) -I%{_jvmdir}/java/include/ -I%{_jvmdir}/java/include/linux -L$jvmlib" export UWSGICONFIG_JVM_INCPATH="%{_jvmdir}/java/include"
export UWSGICONFIG_LUALIB="lua"
export UWSGICONFIG_RUBYPATH="ruby1.9"
export CFLAGS="%{optflags} -I$(echo %{_libdir}/erlang/lib/erl_interface-*/include) -I%{_jvmdir}/java/include/linux -L$UWSGICONFIG_JVM_LIBPATH/jli"
%{?jobs:export CPUCOUNT=%jobs}
python uwsgiconfig.py --build opensuse python uwsgiconfig.py --build opensuse
%install %install
install -D -m 0755 uwsgi %{buildroot}%{_sbindir}/uwsgi install -D -m 0755 uwsgi %{buildroot}%{_sbindir}/uwsgi
install -d -m 0755 %{buildroot}%{_libdir}/uwsgi install -d -m 0755 %{buildroot}%{_libdir}/uwsgi
install -m 0755 *_plugin.so %{buildroot}%{_libdir}/uwsgi install -m 0755 *_plugin.so %{buildroot}%{_libdir}/uwsgi
install -D -m 0755 %{SOURCE2} %{buildroot}%{_sysconfdir}/init.d/uwsgi install -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service
ln -sf %{_sysconfdir}/init.d/uwsgi %{buildroot}%{_sbindir}/rcuwsgi
install -d -m 0755 %{buildroot}%{_sysconfdir}/uwsgi/vassals install -d -m 0755 %{buildroot}%{_sysconfdir}/uwsgi/vassals
install -D -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/uwsgi/uwsgi.ini
install -m 0644 %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{buildroot}%{_sysconfdir}/uwsgi/vassals install -m 0644 %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{buildroot}%{_sysconfdir}/uwsgi/vassals
install -m 0644 vassals/broodlord.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/broodlord.ini.example install -m 0644 vassals/broodlord.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/broodlord.ini.example
install -m 0644 vassals/cc.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/cc.ini.example install -m 0644 vassals/cc.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/cc.ini.example
install -m 0644 vassals/multi.xml %{buildroot}%{_sysconfdir}/uwsgi/vassals/multi.xml.example install -m 0644 vassals/multi.xml %{buildroot}%{_sysconfdir}/uwsgi/vassals/multi.xml.example
install -D -m 0644 uwsgidecorators.py %{buildroot}%{python_sitelib}/uwsgidecorators.py install -D -m 0644 uwsgidecorators.py %{buildroot}%{python_sitelib}/uwsgidecorators.py
%py_compile %{buildroot}%{python_sitelib} %py_compile %{buildroot}%{python_sitelib}
install -D -m 0644 %{SOURCE8} %{buildroot}/%{_var}/adm/fillup-templates/sysconfig.uwsgi install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar
%pre
%service_add_pre uwsgi.service
%post %post
%fillup_and_insserv uwsgi %service_add_post uwsgi.service
%preun %preun
%stop_on_removal uwsgi %service_del_preun uwsgi.service
%postun %postun
%restart_on_update uwsgi %service_del_postun uwsgi.service
%insserv_cleanup
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc CONTRIBUTORS ChangeLog LICENSE README uwsgi_API.txt README.openSUSE %doc CONTRIBUTORS LICENSE README uwsgi_API.txt contrib examples README.openSUSE
%{_sbindir}/uwsgi %{_sbindir}/uwsgi
%dir %{_sysconfdir}/uwsgi/ %dir %{_sysconfdir}/uwsgi/
%config(noreplace) %{_sysconfdir}/uwsgi/uwsgi.ini
%dir %{_sysconfdir}/uwsgi/vassals %dir %{_sysconfdir}/uwsgi/vassals
%{_sysconfdir}/uwsgi/vassals/* %{_sysconfdir}/uwsgi/vassals/*
%dir %{_libdir}/uwsgi %dir %{_libdir}/uwsgi
%config %{_sysconfdir}/init.d/uwsgi %{_unitdir}/uwsgi.service
%{_sbindir}/rcuwsgi
%{_libdir}/uwsgi/admin_plugin.so %{_libdir}/uwsgi/admin_plugin.so
%{_libdir}/uwsgi/airbrake_plugin.so
%{_libdir}/uwsgi/alarm_curl_plugin.so
%{_libdir}/uwsgi/cache_plugin.so %{_libdir}/uwsgi/cache_plugin.so
%{_libdir}/uwsgi/carbon_plugin.so
%{_libdir}/uwsgi/cgi_plugin.so
%{_libdir}/uwsgi/cheaper_backlog2_plugin.so
%{_libdir}/uwsgi/cheaper_busyness_plugin.so
%{_libdir}/uwsgi/clock_monotonic_plugin.so
%{_libdir}/uwsgi/clock_realtime_plugin.so
%{_libdir}/uwsgi/corerouter_plugin.so
%{_libdir}/uwsgi/curl_cron_plugin.so
%{_libdir}/uwsgi/dumbloop_plugin.so
%{_libdir}/uwsgi/emperor_amqp_plugin.so
%{_libdir}/uwsgi/exception_log_plugin.so
%{_libdir}/uwsgi/fastrouter_plugin.so
%{_libdir}/uwsgi/echo_plugin.so %{_libdir}/uwsgi/echo_plugin.so
%{_libdir}/uwsgi/graylog2_plugin.so
%{_libdir}/uwsgi/http_plugin.so
%{_libdir}/uwsgi/legion_cache_fetch_plugin.so
%{_libdir}/uwsgi/logcrypto_plugin.so
%{_libdir}/uwsgi/logfile_plugin.so
%{_libdir}/uwsgi/logsocket_plugin.so
%{_libdir}/uwsgi/nagios_plugin.so
%{_libdir}/uwsgi/notfound_plugin.so %{_libdir}/uwsgi/notfound_plugin.so
%{_libdir}/uwsgi/ping_plugin.so %{_libdir}/uwsgi/ping_plugin.so
%{_libdir}/uwsgi/probeconnect_plugin.so %{_libdir}/uwsgi/rawrouter_plugin.so
%{_libdir}/uwsgi/redislog_plugin.so
%{_libdir}/uwsgi/router_access_plugin.so
%{_libdir}/uwsgi/router_basicauth_plugin.so %{_libdir}/uwsgi/router_basicauth_plugin.so
%{_libdir}/uwsgi/router_cache_plugin.so
%{_libdir}/uwsgi/router_http_plugin.so
%{_libdir}/uwsgi/router_memcached_plugin.so
%{_libdir}/uwsgi/router_radius_plugin.so
%{_libdir}/uwsgi/router_redirect_plugin.so %{_libdir}/uwsgi/router_redirect_plugin.so
%{_libdir}/uwsgi/router_rewrite_plugin.so
%{_libdir}/uwsgi/router_static_plugin.so
%{_libdir}/uwsgi/router_uwsgi_plugin.so %{_libdir}/uwsgi/router_uwsgi_plugin.so
%{_libdir}/uwsgi/rpc_plugin.so %{_libdir}/uwsgi/rpc_plugin.so
%{_libdir}/uwsgi/rrdtool_plugin.so
%{_libdir}/uwsgi/rsyslog_plugin.so
%{_libdir}/uwsgi/signal_plugin.so %{_libdir}/uwsgi/signal_plugin.so
%{_libdir}/uwsgi/spooler_plugin.so %{_libdir}/uwsgi/spooler_plugin.so
%{_libdir}/uwsgi/ssi_plugin.so
%{_libdir}/uwsgi/sslrouter_plugin.so
%{_libdir}/uwsgi/stats_pusher_statsd_plugin.so
%{_libdir}/uwsgi/symcall_plugin.so %{_libdir}/uwsgi/symcall_plugin.so
%{_var}/adm/fillup-templates/sysconfig.uwsgi %{_libdir}/uwsgi/syslog_plugin.so
%if 0%{?suse_version} > 1210
%{_libdir}/uwsgi/systemd_logger_plugin.so
%endif
%{_libdir}/uwsgi/transformation_chunked_plugin.so
%{_libdir}/uwsgi/transformation_gzip_plugin.so
%{_libdir}/uwsgi/transformation_tofile_plugin.so
%{_libdir}/uwsgi/transformation_toupper_plugin.so
%{_libdir}/uwsgi/ugreen_plugin.so
%{_libdir}/uwsgi/webdav_plugin.so
%{_libdir}/uwsgi/xattr_plugin.so
%{_libdir}/uwsgi/zergpool_plugin.so
%files carbon %files emperor_pg
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/carbon_plugin.so %{_libdir}/uwsgi/emperor_pg_plugin.so
%files cgi %files emperor_zeromq
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/cgi_plugin.so %{_libdir}/uwsgi/emperor_zeromq_plugin.so
%files fastrouter %if 0%{?suse_version} > 1210
%files erlang
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/fastrouter_plugin.so %{_libdir}/uwsgi/erlang_plugin.so
%endif
%files geoip
%defattr(-,root,root,-)
%{_libdir}/uwsgi/geoip_plugin.so
%files gevent %files gevent
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/gevent_plugin.so %{_libdir}/uwsgi/gevent_plugin.so
%files graylog2 %files greenlet
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/graylog2_plugin.so %{_libdir}/uwsgi/greenlet_plugin.so
%files http
%defattr(-,root,root,-)
%{_libdir}/uwsgi/http_plugin.so
%files jvm %files jvm
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/jvm_plugin.so %{_libdir}/uwsgi/jvm_plugin.so
%files jwsgi
%defattr(-,root,root,-)
%{_libdir}/uwsgi/jwsgi_plugin.so %{_libdir}/uwsgi/jwsgi_plugin.so
%{_libdir}/uwsgi/ring_plugin.so
%{_javadir}/uwsgi.jar
%files logsocket %files ldap
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/logsocket_plugin.so %{_libdir}/uwsgi/ldap_plugin.so
%files lua %files lua
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/lua_plugin.so %{_libdir}/uwsgi/lua_plugin.so
%files nagios
%defattr(-,root,root,-)
%{_libdir}/uwsgi/nagios_plugin.so
%files pam %files pam
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/pam_plugin.so %{_libdir}/uwsgi/pam_plugin.so
%files probepg
%defattr(-,root,root,-)
%{_libdir}/uwsgi/probepg_plugin.so
%files psgi %files psgi
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/psgi_plugin.so %{_libdir}/uwsgi/psgi_plugin.so
%if 0%{?suse_version} > 1210
%files pyerl
%defattr(-,root,root,-)
%{_libdir}/uwsgi/pyerl_plugin.so
%endif
%files pypy
%defattr(-,root,root,-)
%{_libdir}/uwsgi/pypy_plugin.so
%files python %files python
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/python_plugin.so %{_libdir}/uwsgi/python_plugin.so
%{python_sitelib}/uwsgidecorators.py* %{python_sitelib}/uwsgidecorators.py*
%if 0%{?suse_version} > 1210
%files ruby %files ruby
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/fiber_plugin.so
%{_libdir}/uwsgi/rack_plugin.so %{_libdir}/uwsgi/rack_plugin.so
%if 0%{?suse_version} && 0%{?suse_version} > 1210
%{_libdir}/uwsgi/ruby19_plugin.so %{_libdir}/uwsgi/ruby19_plugin.so
%endif %endif
%files redislog %files sqlite3
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/redislog_plugin.so %{_libdir}/uwsgi/sqlite3_plugin.so
%files rrdtool %files v8
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/rrdtool_plugin.so %{_libdir}/uwsgi/v8_plugin.so
%files rsyslog %files xslt
%defattr(-,root,root,-) %defattr(-,root,root,-)
%{_libdir}/uwsgi/rsyslog_plugin.so %{_libdir}/uwsgi/xslt_plugin.so
%files syslog
%defattr(-,root,root,-)
%{_libdir}/uwsgi/syslog_plugin.so
%files ugreen
%defattr(-,root,root,-)
%{_libdir}/uwsgi/ugreen_plugin.so
%files zergpool
%defattr(-,root,root,-)
%{_libdir}/uwsgi/zergpool_plugin.so
%if 0%{?suse_version} && 0%{?suse_version} > 1210
%files fiber
%defattr(-,root,root,-)
%{_libdir}/uwsgi/fiber_plugin.so
%files erlang
%defattr(-,root,root,-)
%{_libdir}/uwsgi/erlang_plugin.so
%files pyerl
%defattr(-,root,root,-)
%{_libdir}/uwsgi/pyerl_plugin.so
%endif
%if 0%{?suse_version} && 0%{?suse_version} > 1140
%files greenlet
%defattr(-,root,root,-)
%{_libdir}/uwsgi/greenlet_plugin.so
%endif
%changelog %changelog

View File

@ -1,35 +0,0 @@
## Path: Network/WWW/uWSGI
## Description: Run uWSGI in Emperor Mode
## Type: boolean
## Default: true
#
# uWSGI emperor mode is a method of running many different applications
# (vassals) in individual uWSGI processes, managed by a single master (emperor)
# process. It is recommended in most cases.
#
UWSGI_EMPEROR_MODE=true
## Path: Network/WWW/uWSGI
## Description: uWSGI Vassals Directory
## Type: string
## Default: /etc/uwsgi/vassals
#
# When uWSGI is running in emperor mode, this is the directory where individual
# application configurations (vassals) are found. Configuration files can be in
# xml, ini, yaml, and json format. Vassals are started automatically when a
# file is placed in this directory and restarted if a file is changed.
#
UWSGI_VASSALS="/etc/uwsgi/vassals/"
## Path: Network/WWW/uWSGI
## Description: Additional uWSGI Options
## Type: string
## Default: ""
#
# Specify additional uWSGI options here. This is normally unnecessary since
# options can be specified in per-application configuration files when running
# in emperor mode. However, if emperor mode is disabled, this option will be
# necessary. If emperor mode is enabled, these options are specified in
# addition to the emperor mode settings.
#
UWSGI_OPTIONS=""