uwsgi/uwsgi.spec

638 lines
19 KiB
RPMSpec
Raw Normal View History

#
# 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
Summary: Application Container Server for Networked/Clustered Web Applications
License: GPL-2.0+
Group: Productivity/Networking/Web/Servers
Url: http://projects.unbit.it/uwsgi/wiki
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
Source8: uwsgi.sysconfig
# 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: erlang
BuildRequires: lua51-devel
%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
install -D -m 0644 uwsgidecorators.py %{buildroot}%{python_sitelib}/uwsgidecorators.py
%py_compile %{buildroot}%{python_sitelib}
install -D -m 0644 %{SOURCE8} %{buildroot}/%{_var}/adm/fillup-templates/sysconfig.uwsgi
%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
%{_var}/adm/fillup-templates/sysconfig.uwsgi
%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
%{python_sitelib}/uwsgidecorators.py*
%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