# # spec file for package uwsgi # # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ Name: uwsgi Version: 1.2.6 Release: 0 License: GPL-2.0+ Summary: Application Container Server for Networked/Clustered Web Applications Url: http://projects.unbit.it/uwsgi/wiki Group: Productivity/Networking/Web/Servers Source: http://projects.unbit.it/downloads/uwsgi-%{version}.tar.gz Source1: opensuse.ini.in Source2: uwsgi.init Source3: django.ini.example Source4: rails.yml.example Source5: trac.ini.example Source6: werkzeug.xml.example Source7: README.openSUSE # PATCH-FIX-OPENSUSE uwsgi-1.2.6-plugin_build_path.patch - Don't attempt to install plugins to target dest during build Patch0: uwsgi-1.2.6-plugin_build_path.patch BuildRequires: gcc-c++ BuildRequires: java-devel BuildRequires: libxml2-devel BuildRequires: pam-devel BuildRequires: postgresql-devel BuildRequires: python-devel BuildRequires: ruby-devel %if 0%{?suse_version} && 0%{?suse_version} > 1210 BuildRequires: lua51-devel BuildRequires: erlang %else BuildRequires: lua-devel %endif %if 0%{?suse_version} && 0%{?suse_version} > 1140 BuildRequires: python-greenlet-devel %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} && 0%{?suse_version} <= 1110 %{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %endif %description uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. Born as a WSGI-only server, over time it has evolved in a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi (all lowercase, already included by default in the Nginx and Cherokee releases) protocol for all the networking/interprocess communications, but it can speak other protocols as well (http, fastcgi, mongrel2...) It can be run in preforking mode, threaded, asynchronous/evented and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Stackless, Gevent and Fiber). Sysadmins will love it as it can be configured via several methods: command line, environment variables, XML, .ini, yaml, json, sqlite3 database and via LDAP. On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. %package carbon Summary: Carbon Plugin for Graphite Integration for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description carbon uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains the carbon plugin for integration with the Graphite realtime graphing server. See http://projects.unbit.it/uwsgi/wiki/Carbon for more info. %package cgi Summary: CGI Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description cgi uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains the CGI plugin to support legacy CGI scripts. See http://projects.unbit.it/uwsgi/wiki/CGI for more info. %package fastrouter Summary: Fastrouter Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description fastrouter uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains the fastrouter plugin for using uWSGI as a proxy/load-balancer/router speaking the uwsgi protocol. See http://projects.unbit.it/uwsgi/wiki/FastRouter for more info. %package gevent Summary: Gevent Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} Requires: %{name}-python = %{version} %description gevent uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains support for Python Gevent, which is a non-blocking networking framework. See http://projects.unbit.it/uwsgi/wiki/Gevent for more info. %package graylog2 Summary: Graylog2 Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description graylog2 uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains support for logging to Graylog2 log servers. %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 Summary: JVM Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description jvm uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains support for embedding a Java virtual machine in uWSGI. See http://projects.unbit.it/uwsgi/wiki/JVM for more info. %package jwsgi 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 Requires: %{name} = %{version} %description logsocket uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains the logsocket plugin for logging to UNIX and UDP sockets. See http://projects.unbit.it/uwsgi/wiki/SocketLogging for more info. %package lua Summary: Lua Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description lua uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. 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 Summary: PAM Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description pam uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. 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 Summary: PSGI Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} %description psgi uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains the PSGI plugin for running Perl applications that 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. %package pyerl Summary: Python-Erlang Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} Requires: %{name}-erlang = %{version} Requires: %{name}-python = %{version} %description pyerl uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains the pyerl module for accessing Erlang functionality to Python applications. See http://projects.unbit.it/uwsgi/wiki/ErlangIntegration for more info. %endif %if 0%{?suse_version} && 0%{?suse_version} > 1140 %package greenlet Summary: Greenlet Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} Requires: %{name}-python = %{version} %description greenlet uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains support for the Python Greenlet non-blocking network framework. See http://projects.unbit.it/uwsgi/wiki/AsyncSupport for more info. %endif %prep %setup -q -n uwsgi-%{version} %patch0 -p1 # Generate a config that builds all plugins except for examples and stuff we # can't satisfy the requirements for excluded_plugins="cheaper_backlog2 cplusplus dummy example mono pyuwsgi stackless pypy php" %if 0%{?suse_version} && 0%{?suse_version} <= 1210 excluded_plugins="$excluded_plugins fiber ruby19 erlang pyerl" %endif %if 0%{?suse_version} && 0%{?suse_version} <= 1140 excluded_plugins="$excluded_plugins greenlet" %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) sed -e "s#@@LIBDIR@@#%{_libdir}#" -e "s#@@PLUGINS@@#$plugins#" %{SOURCE1} > buildconf/opensuse.ini # README.openSUSE cp %{SOURCE7} . %build # Find correct location for libjvm jvmlib=$(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" python uwsgiconfig.py --build opensuse %install install -D -m 0755 uwsgi %{buildroot}%{_sbindir}/uwsgi install -d -m 0755 %{buildroot}%{_libdir}/uwsgi install -m 0755 *_plugin.so %{buildroot}%{_libdir}/uwsgi install -D -m 0755 %{SOURCE2} %{buildroot}%{_sysconfdir}/init.d/uwsgi ln -sf %{_sysconfdir}/init.d/uwsgi %{buildroot}%{_sbindir}/rcuwsgi install -d -m 0755 %{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/cc.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/cc.ini.example install -m 0644 vassals/multi.xml %{buildroot}%{_sysconfdir}/uwsgi/vassals/multi.xml.example %post %fillup_and_insserv uwsgi %preun %stop_on_removal uwsgi %postun %restart_on_update uwsgi %insserv_cleanup %files %defattr(-,root,root,-) %doc CONTRIBUTORS ChangeLog LICENSE README uwsgi_API.txt README.openSUSE %{_sbindir}/uwsgi %dir %{_sysconfdir}/uwsgi/ %dir %{_sysconfdir}/uwsgi/vassals %{_sysconfdir}/uwsgi/vassals/* %dir %{_libdir}/uwsgi %config %{_sysconfdir}/init.d/uwsgi %{_sbindir}/rcuwsgi %{_libdir}/uwsgi/admin_plugin.so %{_libdir}/uwsgi/cache_plugin.so %{_libdir}/uwsgi/echo_plugin.so %{_libdir}/uwsgi/notfound_plugin.so %{_libdir}/uwsgi/ping_plugin.so %{_libdir}/uwsgi/probeconnect_plugin.so %{_libdir}/uwsgi/router_basicauth_plugin.so %{_libdir}/uwsgi/router_redirect_plugin.so %{_libdir}/uwsgi/router_uwsgi_plugin.so %{_libdir}/uwsgi/rpc_plugin.so %{_libdir}/uwsgi/signal_plugin.so %{_libdir}/uwsgi/spooler_plugin.so %{_libdir}/uwsgi/symcall_plugin.so %files carbon %defattr(-,root,root,-) %{_libdir}/uwsgi/carbon_plugin.so %files cgi %defattr(-,root,root,-) %{_libdir}/uwsgi/cgi_plugin.so %files fastrouter %defattr(-,root,root,-) %{_libdir}/uwsgi/fastrouter_plugin.so %files gevent %defattr(-,root,root,-) %{_libdir}/uwsgi/gevent_plugin.so %files graylog2 %defattr(-,root,root,-) %{_libdir}/uwsgi/graylog2_plugin.so %files http %defattr(-,root,root,-) %{_libdir}/uwsgi/http_plugin.so %files jvm %defattr(-,root,root,-) %{_libdir}/uwsgi/jvm_plugin.so %files jwsgi %defattr(-,root,root,-) %{_libdir}/uwsgi/jwsgi_plugin.so %files logsocket %defattr(-,root,root,-) %{_libdir}/uwsgi/logsocket_plugin.so %files lua %defattr(-,root,root,-) %{_libdir}/uwsgi/lua_plugin.so %files nagios %defattr(-,root,root,-) %{_libdir}/uwsgi/nagios_plugin.so %files pam %defattr(-,root,root,-) %{_libdir}/uwsgi/pam_plugin.so %files probepg %defattr(-,root,root,-) %{_libdir}/uwsgi/probepg_plugin.so %files psgi %defattr(-,root,root,-) %{_libdir}/uwsgi/psgi_plugin.so %files python %defattr(-,root,root,-) %{_libdir}/uwsgi/python_plugin.so %files ruby %defattr(-,root,root,-) %{_libdir}/uwsgi/rack_plugin.so %if 0%{?suse_version} && 0%{?suse_version} > 1210 %{_libdir}/uwsgi/ruby19_plugin.so %endif %files redislog %defattr(-,root,root,-) %{_libdir}/uwsgi/redislog_plugin.so %files rrdtool %defattr(-,root,root,-) %{_libdir}/uwsgi/rrdtool_plugin.so %files rsyslog %defattr(-,root,root,-) %{_libdir}/uwsgi/rsyslog_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