diff --git a/.gitignore b/.gitignore deleted file mode 100644 index cceb6ff..0000000 --- a/.gitignore +++ /dev/null @@ -1,72 +0,0 @@ -*.src.rpm -*.swp -*~ -*.log -/results_uwsgi -/uwsgi-1.0.4.tar.gz -/uwsgi-1.2.3.tar.gz -/uwsgi-wiki-doc-v41.txt -/uwsgi-1.2.4.tar.gz -/uwsgi-wiki-doc-v43.txt -/uwsgi-1.2.6.tar.gz -/uwsgi-1.4.5.tar.gz -/uwsgi-1.9.8.tar.gz -/1.9.17.tar.gz -/uwsgi-doc-1.9.17.tar.gz -/uwsgi-1.9.17.tar.gz -/uwsgi-docs-b86b3f7.tar.gz -/uwsgi-1.9.18.2.tar.gz -/uwsgi-docs-71f2d78.tar.gz -/uwsgi-1.9.19.tar.gz -/uwsgi-docs-119b215.tar.gz -/uwsgi-2.0.6.tar.gz -/uwsgi-docs-d2c4969.tar.gz -/uwsgi-2.0.7.tar.gz -/uwsgi-docs-f551708.tar.gz -/uwsgi-2.0.9.tar.gz -/uwsgi-docs-bc49905.tar.gz -/uwsgi-docs-4ac8256.tar.gz -/uwsgi-2.0.11.tar.gz -/uwsgi-docs-c96716d.tar.gz -/uwsgi-docs-85d6b16.tar.gz -/uwsgi-2.0.11.1.tar.gz -/uwsgi-2.0.11.2.tar.gz -/uwsgi-docs-2d5b92a.tar.gz -/uwsgi-docs-5f5f899.tar.gz -/uwsgi-2.0.12.tar.gz -/uwsgi-2.0.13.1.tar.gz -/uwsgi-docs-0326082.tar.gz -/uwsgi-2.0.14.tar.gz -/uwsgi-docs-f6eacc5.tar.gz -/uwsgi-2.0.15.tar.gz -/uwsgi-docs-1610d37.tar.gz -/uwsgi-2.0.16.tar.gz -/uwsgi-docs-eb4ad98.tar.gz -/uwsgi-2.0.17.1.tar.gz -/uwsgi-docs-32a8f73.tar.gz -/uwsgi-2.0.18.tar.gz -/uwsgi-docs-8d868ea.tar.gz -/uwsgi-2.0.20.tar.gz -/uwsgi-docs-9b4ef5f.tar.gz -/uwsgi-2.0.21.tar.gz -/uwsgi-docs-47e1794.tar.gz -/uwsgi-2.0.22.tar.gz -/uwsgi-docs-9c89fef.tar.gz -/uwsgi-2.0.23.tar.gz -/uwsgi-docs-3be14d3.tar.gz -/uwsgi-2.0.24.tar.gz -/uwsgi-docs-4e23afe.tar.gz -/2.0.25.1.tar.gz -/uwsgi-docs-8dcaacd.tar.gz -/2.0.26.tar.gz -/uwsgi-docs-59e6cd1.tar.gz -/2.0.27.tar.gz -/uwsgi-docs-c0f17cd.tar.gz -/2.0.28.tar.gz -/uwsgi-docs-9606cb0.tar.gz -/2.0.29.tar.gz -/uwsgi-docs-b9da5ea.tar.gz -/2.0.30.tar.gz -/uwsgi-docs-f728a25.tar.gz -/uwsgi-docs-5784c30.tar.gz -/2.0.31.tar.gz diff --git a/README.Fedora b/README.Fedora deleted file mode 100644 index 1a12a2c..0000000 --- a/README.Fedora +++ /dev/null @@ -1,6 +0,0 @@ -The build profile used to build this package is shipped along with the --devel subpackage and is located in the ``buildconf`` subdirectory in the -src directory. -A copy of the documentation can be obtained by installing the ``uwsgi-docs`` -package. The documentation is a copy as of the git SHA: - diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..a72aec0 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +epel8-playground decommissioned : https://pagure.io/epel/issue/136 diff --git a/emperor.ini b/emperor.ini deleted file mode 100644 index d348937..0000000 --- a/emperor.ini +++ /dev/null @@ -1,7 +0,0 @@ -[uwsgi] -uid = uwsgi -gid = uwsgi -emperor = /etc/uwsgi.d -chmod-socket = 660 -emperor-tyrant = true -cap = setgid,setuid diff --git a/fedora.ini b/fedora.ini deleted file mode 100644 index 7c3cda6..0000000 --- a/fedora.ini +++ /dev/null @@ -1,79 +0,0 @@ -[uwsgi] -inherit = core -bin_name = uwsgi -xml = libxml2 -yaml = libyaml -json = jansson -pcre = auto -routing = auto -ssl = auto -malloc_implementation = libc -embedded_plugins = corerouter, echo, ping -plugins = airbrake, - alarm_curl, - cache, - carbon, - cgi, - cheaper_busyness, - cplusplus, - curl_cron, - dumbloop, - dummy, - emperor_amqp, - fastrouter, - forkptyrouter, - graylog2, - http, - ldap, - logcrypto, - logfile, - logpipe, - logsocket, - lua, - msgpack, - nagios, - notfound, - pam, - pty, - rawrouter, - redislog, - router_basicauth, - router_cache, - router_expires, - router_hash, - router_http, - router_memcached, - router_metrics, - router_radius, - router_redirect, - router_redis, - router_rewrite, - router_spnego, - router_static, - router_uwsgi, - router_xmldir, - rpc, - rrdtool, - rsyslog, - ruby19, - spooler, - sqlite3, - ssi, - sslrouter, - stats_pusher_file, - stats_pusher_socket, - stats_pusher_statsd, - syslog, - systemd_logger, - transformation_chunked, - transformation_gzip, - transformation_offload, - transformation_template, - transformation_tofile, - transformation_toupper, - ugreen, - webdav, - xattr, - xslt, - zabbix, - zergpool diff --git a/sources b/sources deleted file mode 100644 index 6394bca..0000000 --- a/sources +++ /dev/null @@ -1,2 +0,0 @@ -SHA512 (uwsgi-docs-5784c30.tar.gz) = 4f966da4a867e45043a0eb4a123b439c8ab1f7ce6e8b32d770545ff7fae586e4e7dd011106aa6ed0ec82a6c6192937e0fd12ed681443332205566fc329e11cd8 -SHA512 (2.0.31.tar.gz) = d4d327f36455438e165298cb5a7d483c951f4acd3d834b46ceeda105bd3664792ead226b02e06db62e92c210544778119bf75a55d9d4f30f8fba896c7de51e6d diff --git a/uwsgi-2.0.27-graceful-reload.patch b/uwsgi-2.0.27-graceful-reload.patch deleted file mode 100644 index dcec832..0000000 --- a/uwsgi-2.0.27-graceful-reload.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -uNr a/core/master_utils.c b/core/master_utils.c ---- a/core/master_utils.c 2024-09-23 22:05:33.000000000 +0200 -+++ b/core/master_utils.c 2024-10-14 19:57:00.233290804 +0200 -@@ -54,12 +54,6 @@ - - uwsgi_detach_daemons(); - -- for (i = 1; i <= uwsgi.numproc; i++) { -- if (uwsgi.workers[i].pid > 0) { -- waitpid(uwsgi.workers[i].pid, &waitpid_status, 0); -- } -- } -- - for (i = 0; i < ushared->gateways_cnt; i++) { - if (ushared->gateways[i].pid > 0) { - kill(ushared->gateways[i].pid, SIGKILL); -diff -uNr a/core/uwsgi.c b/core/uwsgi.c ---- a/core/uwsgi.c 2024-09-23 22:05:33.000000000 +0200 -+++ b/core/uwsgi.c 2024-10-14 19:57:00.134291181 +0200 -@@ -1319,6 +1319,8 @@ - // gracefully destroy - void gracefully_kill_them_all(int signum) { - -+ int waitpid_status; -+ - if (uwsgi_instance_is_dying) return; - uwsgi.status.gracefully_destroying = 1; - -@@ -1341,6 +1343,12 @@ - } - } - -+ -+ for (i = 1; i <= uwsgi.numproc; i++) { -+ if (uwsgi.workers[i].pid > 0) { -+ waitpid(uwsgi.workers[i].pid, &waitpid_status, 0); -+ } -+ } - uwsgi_destroy_processes(); - } - diff --git a/uwsgi.init b/uwsgi.init deleted file mode 100644 index dc9c445..0000000 --- a/uwsgi.init +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/sh -# -# uwsgi - this script starts and stops the uwsgi emperor -# -# chkconfig: - 85 15 -# description: Fast, self-healing, application container server -# processname: uwsgi -# config: /etc/uwsgi.ini -# config: /etc/uwsgi.d - -# Source function library. -. /etc/rc.d/init.d/functions - -PATH=/sbin:/bin:/usr/sbin:/usr/bin -PROG=/usr/sbin/uwsgi -OWNER=uwsgi -NAME=uwsgi -DESC="Fast, self-healing, application container server" -DAEMON_OPTS="--ini /etc/uwsgi.ini --pidfile /var/run/uwsgi/uwsgi.pid --stats /var/run/uwsgi/stats.sock --daemonize /var/log/uwsgi.log" - -[ -f /etc/sysconfig/uwsgi ] && . /etc/sysconfig/uwsgi - -lockfile=/var/lock/subsys/uwsgi - -start () { - echo -n "Starting $NAME $DESC: " - daemon $PROG $DAEMON_OPTS - retval=$? - echo - [ $retval -eq 0 ] && touch $lockfile - return $retval -} - -stop () { - echo -n "Stopping $NAME $DESC: " - # uWSGI docs say INT is a gentler way to stop - killproc $PROG -INT - retval=$? - echo - [ $retval -eq 0 ] && rm -f $lockfile - return $retval -} - -reload () { - echo "Reloading $NAME" - killproc $PROG -HUP - RETVAL=$? - echo -} - -restart () { - stop - start -} - -rh_status () { - status $PROG -} - -rh_status_q() { - rh_status >/dev/null 2>&1 -} - -case "$1" in - start) - rh_status_q && exit 0 - $1 - ;; - stop) - rh_status_q || exit 0 - $1 - ;; - restart) - $1 - ;; - reload) - rh_status_q || exit 7 - $1 - ;; - status) - rh_status - ;; - condrestart|try-restart) - rh_status_q || exit 0 - restart - ;; - *) - echo "Usage: $0 {start|stop|restart|condrestart|try-restart|reload|status}" >&2 - exit 2 - ;; -esac -exit 0 diff --git a/uwsgi.service b/uwsgi.service deleted file mode 100644 index dec058d..0000000 --- a/uwsgi.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=uWSGI Emperor Service -After=syslog.target - -[Service] -EnvironmentFile=-/etc/sysconfig/uwsgi -ExecStart=/usr/sbin/uwsgi --ini /etc/uwsgi.ini --pidfile /run/uwsgi/uwsgi.pid --stats /run/uwsgi/stats.sock -ExecReload=/bin/kill -HUP $MAINPID -KillSignal=SIGINT -Restart=always -Type=notify -NotifyAccess=all - -[Install] -WantedBy=multi-user.target diff --git a/uwsgi.spec b/uwsgi.spec deleted file mode 100644 index 424e718..0000000 --- a/uwsgi.spec +++ /dev/null @@ -1,2822 +0,0 @@ -# Documentation sources: -%global commit 5784c30866a94942a5200db4d5f6c2850afb1caa -%global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global docrepo uwsgi-docs - -# The default compile options of uwsgi and php disagree in subtle ways, -# leading to potential crashes when uwsgi loads the php module, and php itself -# loads certain of its own modules. -# -# The "proper" solution for this would be to change the way php is compiled. -# In the interim, disabling PIE for uwsgi, and enabling PIC for the main -# uwsgi executable can work around the issue. -# -# See https://bugzilla.redhat.com/show_bug.cgi?id=2203863 -%undefine _hardened_build - -%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} -%{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}} - -# This is primarily built for fedora, make it easy right now -%if 0%{?fedora} -%bcond_without go -%bcond_without python3 -%bcond_without python3_greenlet -%bcond_without ruby19 -%bcond_without tuntap -%bcond_without zeromq -%bcond_without perl -%bcond_with perlcoro -%bcond_without glusterfs -%bcond_without php -%bcond_without pq -%bcond_without gloox -%bcond_without geoip -%bcond_without ruby_rack -# javapackages-tools retired (apache-ivy orphanage) -%bcond_with java -# Fedora httpd includes mod_proxy_uwsgi -# https://bugzilla.redhat.com/show_bug.cgi?id=1574335 -%bcond_with mod_proxy_uwsgi -#mono -%ifarch %{mono_arches} -%bcond_without mono -%else -%bcond_with mono -%endif -# mongodblibs -# mongo-cxx-driver-legacy broken in rawhide rhbz#1675407 -%bcond_with mongodblibs -# v8-314 retired -%bcond_with v8 -#mongodblibs dependency -%if %{without mongodblibs} -%bcond_with gridfs -%else -%bcond_without gridfs -%endif -#Fedora endif -%endif - -# epel8 builds pretty similar to Fedora for now -%if 0%{?rhel} == 8 -%bcond_without go -%bcond_without python3 -%bcond_without python3_greenlet -%bcond_without ruby19 -%bcond_without tuntap -%bcond_without zeromq -%bcond_without perl -%bcond_without perlcoro -%bcond_without glusterfs -%bcond_without php -%bcond_without pq -%bcond_without gloox -%bcond_without geoip -%bcond_without ruby_rack -# javapackages-tools retired (apache-ivy orphanage) -%bcond_with java -# Fedora httpd includes mod_proxy_uwsgi -# https://bugzilla.redhat.com/show_bug.cgi?id=1574335 -%bcond_with mod_proxy_uwsgi -#mono -%ifarch %{mono_arches} -%bcond_without mono -%else -%bcond_with mono -%endif -# mongodblibs -# mongo-cxx-driver-legacy broken in rawhide rhbz#1675407 -%bcond_with mongodblibs -# v8-314 retired -%bcond_with v8 -#mongodblibs dependency -%if %{without mongodblibs} -%bcond_with gridfs -%else -%bcond_without gridfs -%endif -#EL8 endif -%endif - -%if 0%{?rhel} == 9 -%bcond_without go -%bcond_without python3 -# EPEL9 does not have python-greenlet-devel any more -%bcond_with python3_greenlet -%bcond_without ruby19 -%bcond_without tuntap -# EPEL9 doesn't have zeromq yet -%bcond_with zeromq -%bcond_without perl -# EPEL9 doesn't have perl-Coro yet -%bcond_with perlcoro -# EPEL9 doesn't have glusterfs yet -%bcond_with glusterfs -%bcond_without php -%bcond_without pq -%bcond_without ruby_rack -# EPEL9 doesn't have gloox yet -%bcond_with gloox -# EPEL9 doesn't have GeoIP yet -%bcond_with geoip -# javapackages-tools retired (apache-ivy orphanage) -%bcond_with java -# Fedora httpd includes mod_proxy_uwsgi -# https://bugzilla.redhat.com/show_bug.cgi?id=1574335 -%bcond_with mod_proxy_uwsgi -#mono -%ifarch %{mono_arches} -%bcond_without mono -%else -%bcond_with mono -%endif -# mongodblibs -# mongo-cxx-driver-legacy broken in rawhide rhbz#1675407 -%bcond_with mongodblibs -# v8-314 retired -%bcond_with v8 -#mongodblibs dependency -%if %{without mongodblibs} -%bcond_with gridfs -%else -%bcond_without gridfs -%endif - -# EL9 has multiple python3 versions -%bcond_without python3_alternate1 -%if %{with python3_alternate1} -%global python3_alternate1_pkgname python3.11 -%global __python3_alternate1 python3.11 -%global python3_alternate1_sitelib %(RPM_BUILD_ROOT= %{__python3_alternate1} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))") -%global python3_alternate1_version 3.11 -%global python3_alternate1_version_nodots 311 -%endif -%bcond_without python3_alternate2 -%if %{with python3_alternate2} -%global python3_alternate2_pkgname python3.12 -%global __python3_alternate2 python3.12 -%global python3_alternate2_sitelib %(RPM_BUILD_ROOT= %{__python3_alternate2} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))") -%global python3_alternate2_version 3.12 -%global python3_alternate2_version_nodots 312 -%endif -%bcond_without python3_alternate3 -%if %{with python3_alternate3} -%global python3_alternate3_pkgname python3.13 -%global __python3_alternate3 python3.13 -%global python3_alternate3_sitelib %(RPM_BUILD_ROOT= %{__python3_alternate3} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))") -%global python3_alternate3_version 3.13 -%global python3_alternate3_version_nodots 313 -%endif -#EL9 endif -%endif - -%if 0%{?rhel} == 10 -# EPEL10 does not have gcc-go -%bcond_with go -%bcond_without python3 -# EPEL10 does not have python-greenlet-devel any more -%bcond_with python3_greenlet -%bcond_without ruby19 -%bcond_without tuntap -# EPEL10 doesn't have zeromq yet -%bcond_with zeromq -%bcond_without perl -# EPEL10 doesn't have perl-Coro yet -%bcond_with perlcoro -# EPEL10 doesn't have glusterfs yet -%bcond_with glusterfs -%bcond_without php -%bcond_without pq -%bcond_without ruby_rack -# EPEL10 doesn't have gloox yet -%bcond_with gloox -# EPEL10 doesn't have GeoIP yet -%bcond_with geoip -# javapackages-tools retired (apache-ivy orphanage) -%bcond_with java -# Fedora httpd includes mod_proxy_uwsgi -# https://bugzilla.redhat.com/show_bug.cgi?id=1574335 -%bcond_with mod_proxy_uwsgi -#mono -# EPEL10 doesn't have mono yet -%ifarch %{mono_arches} -%bcond_with mono -%else -%bcond_with mono -%endif -# mongodblibs -# mongo-cxx-driver-legacy broken in rawhide rhbz#1675407 -%bcond_with mongodblibs -# v8-314 retired -%bcond_with v8 -#mongodblibs dependency -%if %{without mongodblibs} -%bcond_with gridfs -%else -%bcond_without gridfs -%endif - -# EL10 has multiple python3 versions -%bcond_without python3_alternate1 -%if %{with python3_alternate1} -%global python3_alternate1_pkgname python3.12 -%global __python3_alternate1 python3.12 -%global python3_alternate1_sitelib %(RPM_BUILD_ROOT= %{__python3_alternate1} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")} -%global python3_alternate1_version 3.12 -%global python3_alternate1_version_nodots 312 -%endif -#EL9 endif -%endif - -%global manual_py_compile 1 - -# Turn off byte compilation so it doesn't try -# to auto-optimize the code in /usr/src/uwsgi -%if %{manual_py_compile} == 1 -%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') -%endif - -# Set %%__python to the newest possible version -%if %{with python3} -%global __python %{__python3} -%else -%if %{with python3_alternate1} -%global __python %{__python3_alternate1} -%else -%if %{with python3_alternate2} -%global __python %{__python3_alternate2} -%else -%if %{with python3_alternate3} -%global __python %{__python3_alternate3} -%else -%if %{with python2} -%global __python %{__python2} -%else -%global __python /usr/bin/true -%endif -%endif -%endif -%endif -%endif - -Name: uwsgi -Version: 2.0.31 -Release: 5%{?dist} -Summary: Fast, self-healing, application container server -# uwsgi is licensed under GPLv2 with a linking exception -# docs are licensed under MIT -# Automatically converted from old format: GPLv2 with exceptions and MIT - review is highly recommended. -License: LicenseRef-Callaway-GPLv2-with-exceptions AND LicenseRef-Callaway-MIT -URL: https://github.com/unbit/uwsgi - -ExcludeArch: %{ix86} - -Source0: https://github.com/unbit/uwsgi/archive/refs/tags/%{version}.tar.gz -Source1: fedora.ini -Source2: uwsgi.service -Source3: emperor.ini -Source4: https://github.com/unbit/%{docrepo}/archive/%{commit}/%{docrepo}-%{shortcommit}.tar.gz -Source5: README.Fedora -Source7: uwsgi.tmpfiles -Source8: uwsgi.sysusers - -# When adding patches please add to the end, don't -# reuse intermediate numbers -Patch0: uwsgi_trick_chroot_rpmbuild.patch -Patch1: uwsgi_fix_rpath.patch -Patch2: uwsgi_ruby20_compatibility.patch -Patch3: uwsgi_fix_lua.patch -# https://github.com/unbit/uwsgi/issues/882 -Patch5: uwsgi_fix_mongodb.patch -Patch6: uwsgi_v8-314_compatibility.patch -Patch7: uwsgi_fix_mono.patch -Patch13: uwsgi_fix_chroot_chdir.patch -Patch14: uwsgi_python312-2.patch - -BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel -BuildRequires: libyaml-devel, ruby-devel -BuildRequires: libxcrypt-devel -%if %{with tcp_wrappers} -BuildRequires: tcp_wrappers-devel -%endif -%if %{with python2} -BuildRequires: python2-devel -%if %{with python2_greenlet} -BuildRequires: python-greenlet-devel -%endif -%endif -%if %{with python3} -BuildRequires: python%{python3_pkgversion}-devel -%endif -%if %{with python3_greenlet} -BuildRequires: python%{python3_pkgversion}-greenlet-devel -%endif -%if %{with python3_alternate1} -BuildRequires: %{python3_alternate1_pkgname}-devel -%endif -%if %{with python3_alternate2} -BuildRequires: %{python3_alternate2_pkgname}-devel -%endif -%if %{with python3_alternate3} -BuildRequires: %{python3_alternate3_pkgname}-devel -%endif -%if %{with glusterfs} -BuildRequires: glusterfs-devel, glusterfs-api-devel -%endif -BuildRequires: lua-devel, ruby, pcre2-devel -%if %{with php} -BuildRequires: php-devel, php-embedded -%endif -BuildRequires: libedit-devel, krb5-devel -BuildRequires: openssl-devel -BuildRequires: bzip2-devel, gmp-devel, pam-devel -BuildRequires: sqlite-devel, libcap-devel -BuildRequires: httpd-devel, libcurl-devel -BuildRequires: libstdc++-devel -%if %{with gloox} -BuildRequires: gloox-devel -%endif -BuildRequires: libevent-devel, zlib-devel -%if %{with geoip} -BuildRequires: GeoIP-devel -%endif -BuildRequires: openldap-devel, boost-devel -BuildRequires: libattr-devel, libxslt-devel -%if %{with perl} -BuildRequires: perl-devel, perl-ExtUtils-Embed -%if %{with perlcoro} -BuildRequires: perl-Coro -%endif -%endif -%if %{with zeromq} -BuildRequires: zeromq-devel -%endif -%if %{with go} -BuildRequires: gcc-go -%endif -BuildRequires: systemd-devel, systemd-units -%if %{with mono} -BuildRequires: mono-devel, mono-web, glib2-devel -%endif -%if %{with v8} -%if 0%{?fedora} -BuildRequires: v8-314-devel -%else -BuildRequires: v8-devel -%endif -%endif -%if %{with mongodblibs} -%if 0%{?fedora} -BuildRequires: mongo-cxx-driver-legacy-devel -%else -BuildRequires: mongo-cxx-driver-devel -%endif -%endif -%if %{with pq} -BuildRequires: libpq-devel -%endif - -%if 0%{?fedora} -BuildRequires: libargon2-devel -Obsoletes: uwsgi-router-access <= 2.0.16 -%endif - -Obsoletes: uwsgi-loggers <= 1.9.8-1 -Obsoletes: uwsgi-routers <= 2.0.6 -Obsoletes: uwsgi-plugin-erlang <= 1.9.20-1 -Obsoletes: uwsgi-plugin-admin <= 2.0.6 - -%{?systemd_requires} - -%filter_requires_in %{_usrsrc} -%filter_provides_in %{_usrsrc} -%filter_provides_in %{_libdir}/uwsgi/.*\.so$ -%filter_setup - -%description -uWSGI is a fast (pure C), self-healing, developer/sysadmin-friendly -application container server. 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. Can be run in preforking mode, threaded, -asynchronous/evented and supports various form of green threads/co-routine -(like uGreen and Fiber). Sysadmin will love it as it can be configured via -command line, environment variables, xml, .ini and yaml files and via LDAP. -Being fully modular can use tons of different technology on top of the same -core. - -%package -n uwsgi-devel -Summary: uWSGI - Development header files and libraries -Requires: uwsgi = %{version}-%{release} - -%description -n uwsgi-devel -This package contains the development header files and libraries -for uWSGI extensions - -%if %{with python2} -%package -n python2-uwsgidecorators -Summary: Python 2 decorators providing access to the uwsgi API -Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python2 = %{version}-%{release} -Obsoletes: python-uwsgidecorators < 2.0.16-4 -Provides: python-uwsgidecorators = %{version}-%{release} - -%description -n python2-uwsgidecorators -The uwsgidecorators Python 2 module provides higher-level access to the uWSGI API. -%endif - -%if %{with python3} -%package -n python%{python3_pkgversion}-uwsgidecorators -Summary: Python %{python3_version} decorators providing access to the uwsgi API -Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release} -%if 0%{?rhel} == 7 -Obsoletes: python3-uwsgidecorators < 2.0.16-4 -Provides: python3-uwsgidecorators = %{version}-%{release} -%endif - -%description -n python%{python3_pkgversion}-uwsgidecorators -The uwsgidecorators Python %{python3_version} module provides higher-level -access to the uWSGI API. -%endif - -%if %{with python3_alternate1} -%package -n %{python3_alternate1_pkgname}-uwsgidecorators -Summary: Python %{python3_alternate1_version} decorators providing access to the uwsgi API -Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python%{python3_alternate1_version_nodots} = %{version}-%{release} - -%description -n %{python3_alternate1_pkgname}-uwsgidecorators -The uwsgidecorators Python %{python3_alternate1_version} module provides -higher-level access to the uWSGI API. -%endif - -%if %{with python3_alternate2} -%package -n %{python3_alternate2_pkgname}-uwsgidecorators -Summary: Python %{python3_alternate2_version} decorators providing access to the uwsgi API -Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python%{python3_alternate2_version_nodots} = %{version}-%{release} - -%description -n %{python3_alternate2_pkgname}-uwsgidecorators -The uwsgidecorators Python %{python3_alternate2_version} module provides -higher-level access to the uWSGI API. -%endif - -%if %{with python3_alternate3} -%package -n %{python3_alternate3_pkgname}-uwsgidecorators -Summary: Python %{python3_alternate3_version} decorators providing access to the uwsgi API -Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python%{python3_alternate3_version_nodots} = %{version}-%{release} - -%description -n %{python3_alternate3_pkgname}-uwsgidecorators -The uwsgidecorators Python %{python3_alternate3_version} module provides -higher-level access to the uWSGI API. -%endif - -%package -n uwsgi-docs -Summary: uWSGI - Documentation -Requires: uwsgi - -%description -n uwsgi-docs -This package contains the documentation files for uWSGI - -%package -n uwsgi-plugin-common -Summary: uWSGI - Common plugins for uWSGI -Requires: uwsgi = %{version}-%{release} - -%description -n uwsgi-plugin-common -This package contains the most common plugins used with uWSGI. The -plugins included in this package are: cache, CGI, RPC, uGreen - -# Stats pushers - -%package -n uwsgi-stats-pusher-file -Summary: uWSGI - File Stats Pusher for uWSGI -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-stats-pusher-file -This package contains the stats_pusher_file plugin for uWSGI - -%if %{with mongodblibs} -%package -n uwsgi-stats-pusher-mongodb -Summary: uWSGI - MongoDB Stats Pusher for uWSGI -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-stats-pusher-mongodb -This package contains the stats_pusher_mongodb plugin for uWSGI -%endif - -%package -n uwsgi-stats-pusher-socket -Summary: uWSGI - Socket Stats Pusher for uWSGI -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-stats-pusher-socket -This package contains the stats_pusher_socket plugin for uWSGI - -%package -n uwsgi-stats-pusher-statsd -Summary: uWSGI - StatsD Stats Pusher for uWSGI -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-stats-pusher-statsd -This package contains the stats_pusher_statsd plugin for uWSGI - -%package -n uwsgi-stats-pusher-zabbix -Summary: uWSGI - Zabbix Stats Pusher for uWSGI -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-stats-pusher-zabbix -This package contains the zabbix plugin for uWSGI - -# Alarms - -%package -n uwsgi-alarm-curl -Summary: uWSGI - Curl alarm plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-alarm-curl -This package contains the alarm_curl alarm plugin for uWSGI - -%if %{with gloox} -%package -n uwsgi-alarm-xmpp -Summary: uWSGI - Curl alarm plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-alarm-xmpp -This package contains the alarm_xmpp alarm plugin for uWSGI -%endif - -# Transformations - -%package -n uwsgi-transformation-chunked -Summary: uWSGI - Chunked Transformation plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-router-uwsgi = %{version}-%{release} - -%description -n uwsgi-transformation-chunked -This package contains the transformation_chunked plugin for uWSGI - -%package -n uwsgi-transformation-gzip -Summary: uWSGI - GZip Transformation plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-router-uwsgi = %{version}-%{release} - -%description -n uwsgi-transformation-gzip -This package contains the transformation_gzip plugin for uWSGI - -%package -n uwsgi-transformation-offload -Summary: uWSGI - Off-Load Transformation plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-router-uwsgi = %{version}-%{release} - -%description -n uwsgi-transformation-offload -This package contains the transformation_offload plugin for uWSGI - -%package -n uwsgi-transformation-template -Summary: uWSGI - Template Transformation plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-router-uwsgi = %{version}-%{release} - -%description -n uwsgi-transformation-template -This package contains the transformation_template plugin for uWSGI - -%package -n uwsgi-transformation-tofile -Summary: uWSGI - ToFile Transformation plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-router-uwsgi = %{version}-%{release} - -%description -n uwsgi-transformation-tofile -This package contains the transformation_tofile plugin for uWSGI - -%package -n uwsgi-transformation-toupper -Summary: uWSGI - ToUpper Transformation plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-transformation-toupper -This package contains the transformation_toupper plugin for uWSGI - -# Loggers - -%package -n uwsgi-log-encoder-msgpack -Summary: uWSGI - msgpack log encoder plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-log-encoder-msgpack -This package contains the msgpack log encoder plugin for uWSGI - -%package -n uwsgi-logger-crypto -Summary: uWSGI - logcrypto logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-logger-crypto -This package contains the logcrypto logger plugin for uWSGI - -%package -n uwsgi-logger-file -Summary: uWSGI - logfile logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-loggers <= 1.9.8-1 -Provides: uwsgi-loggers = %{version}-%{release} - -%description -n uwsgi-logger-file -This package contains the logfile logger plugin for uWSGI - -%package -n uwsgi-logger-graylog2 -Summary: uWSGI - Graylog2 logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-logger-graylog2 -This package contains the graylog2 logger plugin for uWSGI - -%if %{with mongodblibs} -%package -n uwsgi-logger-mongodb -Summary: uWSGI - mongodblog logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-loggers <= 1.9.8-1 -Provides: uwsgi-loggers = %{version}-%{release} - -%description -n uwsgi-logger-mongodb -This package contains the mongodblog logger plugin for uWSGI -%endif - -%package -n uwsgi-logger-pipe -Summary: uWSGI - logpipe logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-logger-pipe -This package contains the logcrypto logger plugin for uWSGI - -%package -n uwsgi-logger-redis -Summary: uWSGI - redislog logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-loggers <= 1.9.8-1 -Provides: uwsgi-loggers = %{version}-%{release} - -%description -n uwsgi-logger-redis -This package contains the redislog logger plugin for uWSGI - -%package -n uwsgi-logger-rsyslog -Summary: uWSGI - rsyslog logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-plugin-rsyslog <= 1.9.8-1 -Provides: uwsgi-plugin-rsyslog = %{version}-%{release} - -%description -n uwsgi-logger-rsyslog -This package contains the rsyslog logger plugin for uWSGI - -%package -n uwsgi-logger-socket -Summary: uWSGI - logsocket logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-loggers <= 1.9.8-1 -Provides: uwsgi-loggers = %{version}-%{release} - -%description -n uwsgi-logger-socket -This package contains the logsocket logger plugin for uWSGI - -%package -n uwsgi-logger-syslog -Summary: uWSGI - syslog logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-plugin-syslog <= 1.9.8-1 -Provides: uwsgi-plugin-syslog = %{version}-%{release} - -%description -n uwsgi-logger-syslog -This package contains the syslog logger plugin for uWSGI - -%package -n uwsgi-logger-systemd -Summary: uWSGI - systemd journal logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-logger-systemd -This package contains the systemd journal logger plugin for uWSGI - -%if %{with zeromq} -%package -n uwsgi-logger-zeromq -Summary: uWSGI - ZeroMQ logger plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, zeromq - -%description -n uwsgi-logger-zeromq -This package contains the ZeroMQ logger plugin for uWSGI -%endif - -# Plugins - -%package -n uwsgi-plugin-airbrake -Summary: uWSGI - Plugin for AirBrake support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-airbrake -This package contains the airbrake plugin for uWSGI - -%package -n uwsgi-plugin-cache -Summary: uWSGI - Plugin for cache support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-cache -This package contains the cache plugin for uWSGI - -%package -n uwsgi-plugin-carbon -Summary: uWSGI - Plugin for Carbon/Graphite support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-carbon -This package contains the Carbon plugin for uWSGI (to use in graphite) - -%if %{with perl} -%package -n uwsgi-plugin-psgi -Summary: uWSGI - Plugin for PSGI support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-psgi -This package contains the PSGI plugin for uWSGI - -%if %{with perlcoro} -%package -n uwsgi-plugin-coroae -Summary: uWSGI - Plugin for PERL Coro support -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-plugin-psgi = %{version}-%{release}, perl-Coro - -%description -n uwsgi-plugin-coroae -This package contains the coroae plugin for uWSGI -%endif -%endif - -%package -n uwsgi-plugin-cheaper-busyness -Summary: uWSGI - Plugin for Cheaper Busyness algos -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-cheaper-busyness -This package contains the cheaper_busyness plugin for uWSGI - -%package -n uwsgi-plugin-cplusplus -Summary: uWSGI - Plugin for C++ support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-cplusplus -This package contains the cplusplus plugin for uWSGI - -%package -n uwsgi-plugin-curl-cron -Summary: uWSGI - Plugin for CURL Cron support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-curl-cron -This package contains the curl_cron plugin for uWSGI - -%package -n uwsgi-plugin-dumbloop -Summary: uWSGI - Plugin for Dumb Loop support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-dumbloop -This package contains the dumbloop plugin for uWSGI - -%package -n uwsgi-plugin-dummy -Summary: uWSGI - Plugin for Dummy support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-dummy -This package contains the dummy plugin for uWSGI - -%if %{with ruby_rack} -%package -n uwsgi-plugin-fiber -Summary: uWSGI - Plugin for Ruby Fiber support -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-plugin-rack = %{version}-%{release} - -%description -n uwsgi-plugin-fiber -This package contains the fiber plugin for uWSGI -%endif - -%if %{with go} -%package -n uwsgi-plugin-gccgo -Summary: uWSGI - Plugin for GoLang support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-gccgo -This package contains the gccgo plugin for uWSGI -%endif - -%if %{with geoip} -%package -n uwsgi-plugin-geoip -Summary: uWSGI - Plugin for GeoIP support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-geoip -This package contains the geoip plugin for uWSGI -%endif - -%if %{with python2} -%package -n uwsgi-plugin-python2-gevent -Summary: uWSGI - Plugin for Python 2 GEvent support -Requires: uwsgi-plugin-python2 = %{version}-%{release} -Obsoletes: uwsgi-plugin-gevent < 2.0.16-4 -Provides: uwsgi-plugin-gevent = %{version}-%{release} - -%description -n uwsgi-plugin-python2-gevent -This package contains the Python 2 gevent plugin for uWSGI -%endif - -%if %{with python3} -%package -n uwsgi-plugin-python%{python3_pkgversion}-gevent -Summary: uWSGI - Plugin for Python %{python3_version} GEvent support -Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release} - -%description -n uwsgi-plugin-python%{python3_pkgversion}-gevent -This package contains the Python %{python3_version} gevent plugin for uWSGI -%endif - -%if %{with python3_alternate1} -%package -n uwsgi-plugin-python%{python3_alternate1_version_nodots}-gevent -Summary: uWSGI - Plugin for Python %{python3_alternate1_version} GEvent support -Requires: uwsgi-plugin-python%{python3_alternate1_version_nodots} = %{version}-%{release}, libevent - -%description -n uwsgi-plugin-python%{python3_alternate1_version_nodots}-gevent -This package contains the Python %{python3_alternate1_version} gevent plugin for uWSGI -%endif - -%if %{with python3_alternate2} -%package -n uwsgi-plugin-python%{python3_alternate2_version_nodots}-gevent -Summary: uWSGI - Plugin for Python %{python3_alternate2_version} GEvent support -Requires: uwsgi-plugin-python%{python3_alternate2_version_nodots} = %{version}-%{release}, libevent - -%description -n uwsgi-plugin-python%{python3_alternate2_version_nodots}-gevent -This package contains the Python %{python3_alternate2_version} gevent plugin for uWSGI -%endif - -%if %{with python3_alternate3} -%package -n uwsgi-plugin-python%{python3_alternate3_version_nodots}-gevent -Summary: uWSGI - Plugin for Python %{python3_alternate3_version} GEvent support -Requires: uwsgi-plugin-python%{python3_alternate3_version_nodots} = %{version}-%{release}, libevent - -%description -n uwsgi-plugin-python%{python3_alternate3_version_nodots}-gevent -This package contains the Python %{python3_alternate3_version} gevent plugin for uWSGI -%endif - -%if %{with glusterfs} -%package -n uwsgi-plugin-glusterfs -Summary: uWSGI - Plugin for GlusterFS support -Requires: uwsgi-plugin-common = %{version}-%{release}, glusterfs-api - -%description -n uwsgi-plugin-glusterfs -This package contains the glusterfs plugin for uWSGI -%endif - -%if %{with python2} -%if %{with python2_greenlet} -%package -n uwsgi-plugin-python2-greenlet -Summary: uWSGI - Plugin for Python 2 Greenlet support -Requires: python-greenlet, uwsgi-plugin-python2 = %{version}-%{release} -Obsoletes: uwsgi-plugin-greenlet < 2.0.16-4 -Provides: uwsgi-plugin-greenlet = %{version}-%{release} - -%description -n uwsgi-plugin-python2-greenlet -This package contains the Python 2 greenlet plugin for uWSGI -%endif -%endif - -%if %{with python3_greenlet} -%package -n uwsgi-plugin-python%{python3_pkgversion}-greenlet -Summary: uWSGI - Plugin for Python %{python3_version} Greenlet support -Requires: python%{python3_pkgversion}-greenlet, uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release} - -%description -n uwsgi-plugin-python%{python3_pkgversion}-greenlet -This package contains the Python %{python3_version} greenlet plugin for uWSGI -%endif - -%if %{with gridfs} -%package -n uwsgi-plugin-gridfs -Summary: uWSGI - Plugin for GridFS support -Requires: uwsgi-plugin-common = %{version}-%{release}, libmongodb - -%description -n uwsgi-plugin-gridfs -This package contains the gridfs plugin for uWSGI -%endif - -%if %{with java} -%package -n uwsgi-plugin-jvm -Summary: uWSGI - Plugin for JVM support -BuildRequires: java-devel -Requires: uwsgi-plugin-common = %{version}-%{release}, java-headless, jpackage-utils - -%description -n uwsgi-plugin-jvm -This package contains the JVM plugin for uWSGI - -%package -n uwsgi-plugin-jwsgi -Summary: uWSGI - Plugin for JWSGI support -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-plugin-jvm = %{version}-%{release} - -%description -n uwsgi-plugin-jwsgi -This package contains the jwsgi plugin for uWSGI -%endif - -%package -n uwsgi-plugin-ldap -Summary: uWSGI - Plugin for LDAP support -Requires: uwsgi-plugin-common = %{version}-%{release}, openldap - -%description -n uwsgi-plugin-ldap -This package contains the ldap plugin for uWSGI - -%package -n uwsgi-plugin-lua -Summary: uWSGI - Plugin for LUA support -Requires: lua, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-lua -This package contains the lua plugin for uWSGI - -%if %{with zeromq} -%package -n uwsgi-plugin-mongrel2 -Summary: uWSGI - Plugin for Mongrel2 support -Requires: uwsgi-plugin-common = %{version}-%{release}, zeromq - -%description -n uwsgi-plugin-mongrel2 -This package contains the mongrel2 plugin for uWSGI -%endif - -%if %{with mono} -%package -n uwsgi-plugin-mono -Summary: uWSGI - Plugin for Mono / .NET support -Requires: uwsgi-plugin-common = %{version}-%{release}, mono-web - -%description -n uwsgi-plugin-mono -This package contains the mono plugin for uWSGI -%endif - -%package -n uwsgi-plugin-nagios -Summary: uWSGI - Plugin for Nagios support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-nagios -This package contains the nagios plugin for uWSGI - -%package -n uwsgi-plugin-notfound -Summary: uWSGI - Plugin for notfound support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-notfound -This package contains the notfound plugin for uWSGI - -%package -n uwsgi-plugin-pam -Summary: uWSGI - Plugin for PAM support -Requires: uwsgi-plugin-common = %{version}-%{release}, pam - -%description -n uwsgi-plugin-pam -This package contains the PAM plugin for uWSGI - -%if %{with php} -%package -n uwsgi-plugin-php -Summary: uWSGI - Plugin for PHP support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-php -This package contains the PHP plugin for uWSGI -%endif - -%package -n uwsgi-plugin-pty -Summary: uWSGI - Plugin for PTY support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-pty -This package contains the pty plugin for uWSGI - -%if %{with python2} -%package -n uwsgi-plugin-python2 -Summary: uWSGI - Plugin for Python 2 support -Requires: python2, uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-plugin-python < 2.0.16-4 -Provides: uwsgi-plugin-python = %{version}-%{release} - -%description -n uwsgi-plugin-python2 -This package contains the Python 2 plugin for uWSGI -%endif - -%if %{with python3} -%package -n uwsgi-plugin-python%{python3_pkgversion} -Summary: uWSGI - Plugin for Python %{python3_version} support -Requires: python%{python3_pkgversion}, uwsgi-plugin-common = %{version}-%{release} -%if 0%{?rhel} == 7 -Obsoletes: uwsgi-plugin-python3 < 2.0.16-4 -Provides: uwsgi-plugin-python3 = %{version}-%{release} -%endif - -%description -n uwsgi-plugin-python%{python3_pkgversion} -This package contains the Python %{python3_version} plugin for uWSGI -%endif - -%if %{with python3_alternate1} -%package -n uwsgi-plugin-python%{python3_alternate1_version_nodots} -Summary: uWSGI - Plugin for Python %{python3_alternate1_version} support -Requires: %{python3_alternate1_pkgname}, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-python%{python3_alternate1_version_nodots} -This package contains the Python %{python3_alternate1_version} plugin for uWSGI -%endif - -%if %{with python3_alternate2} -%package -n uwsgi-plugin-python%{python3_alternate2_version_nodots} -Summary: uWSGI - Plugin for Python %{python3_alternate2_version} support -Requires: %{python3_alternate2_pkgname}, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-python%{python3_alternate2_version_nodots} -This package contains the Python %{python3_alternate2_version} plugin for uWSGI -%endif - -%if %{with python3_alternate3} -%package -n uwsgi-plugin-python%{python3_alternate3_version_nodots} -Summary: uWSGI - Plugin for Python %{python3_alternate3_version} support -Requires: %{python3_alternate3_pkgname}, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-python%{python3_alternate3_version_nodots} -This package contains the Python %{python3_alternate3_version} plugin for uWSGI -%endif - -%if %{with ruby_rack} -%package -n uwsgi-plugin-rack -Summary: uWSGI - Ruby rack plugin -Requires: rubygem-rack, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-rack -This package contains the rack plugin for uWSGI -%endif - -%package -n uwsgi-plugin-rbthreads -Summary: uWSGI - Ruby native threads support plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, ruby - -%description -n uwsgi-plugin-rbthreads -This package contains the rbthreads plugin for uWSGI - -%if %{with java} -%package -n uwsgi-plugin-ring -Summary: uWSGI - Clojure/Ring request handler support plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-plugin-jvm = %{version}-%{release}, clojure - -%description -n uwsgi-plugin-ring -This package contains the ring plugin for uWSGI -%endif - -%package -n uwsgi-plugin-rpc -Summary: uWSGI - Plugin for RPC support -Requires: rrdtool, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-rpc -This package contains the RPC plugin for uWSGI - -%package -n uwsgi-plugin-rrdtool -Summary: uWSGI - Plugin for RRDTool support -Requires: rrdtool, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-rrdtool -This package contains the RRD Tool plugin for uWSGI - -%package -n uwsgi-plugin-ruby -Summary: uWSGI - Plugin for Ruby support -Requires: ruby, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-ruby -This package contains the ruby19 plugin for uWSGI - -%package -n uwsgi-plugin-spooler -Summary: uWSGI - Plugin for Remote Spooling support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-spooler -This package contains the spooler plugin for uWSGI - -%package -n uwsgi-plugin-sqlite3 -Summary: uWSGI - SQLite3 plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, sqlite - -%description -n uwsgi-plugin-sqlite3 -This package contains the sqlite3 plugin for uWSGI - -%package -n uwsgi-plugin-ssi -Summary: uWSGI - Server Side Includes plugin -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-ssi -This package contains the ssi plugin for uWSGI - -%if %{with python2} -%package -n uwsgi-plugin-python2-tornado -Summary: uWSGI - Plugin for Tornado (Python 2) support -Requires: uwsgi-plugin-common = %{version}-%{release}, python-tornado -Obsoletes: uwsgi-plugin-tornado < 2.0.16-4 -Provides: uwsgi-plugin-tornado = %{version}-%{release} - -%description -n uwsgi-plugin-python2-tornado -This package contains the tornado (Python 2) plugin for uWSGI -%endif - -%if %{with python3} -%package -n uwsgi-plugin-python%{python3_pkgversion}-tornado -Summary: uWSGI - Plugin for Tornado (Python %{python3_version}) support -Requires: uwsgi-plugin-common = %{version}-%{release}, python%{python3_pkgversion}-tornado - -%description -n uwsgi-plugin-python%{python3_pkgversion}-tornado -This package contains the tornado (Python %{python3_version}) plugin for uWSGI -%endif - -%package -n uwsgi-plugin-ugreen -Summary: uWSGI - Plugin for uGreen support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-ugreen -This package contains the uGreen plugin for uWSGI - -%if %{with v8} -%package -n uwsgi-plugin-v8 -Summary: uWSGI - Plugin for v8 support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-v8 -This package contains the v8 plugin for uWSGI -%endif - -%package -n uwsgi-plugin-webdav -Summary: uWSGI - Plugin for WebDAV support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-webdav -This package contains the webdav plugin for uWSGI - -%package -n uwsgi-plugin-xattr -Summary: uWSGI - Plugin for Extra Attributes support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-xattr -This package contains the xattr plugin for uWSGI - -%package -n uwsgi-plugin-xslt -Summary: uWSGI - Plugin for XSLT transformation support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-xslt -This package contains the xslt plugin for uWSGI - -%package -n uwsgi-plugin-zergpool -Summary: uWSGI - Plugin for zergpool support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-zergpool -This package contains the zergpool plugin for uWSGI - -# Routers - -%if %{with tcp_wrappers} -%package -n uwsgi-router-access -Summary: uWSGI - Plugin for router_access router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-access -This package contains the router_access plugin for uWSGI -%endif - -%package -n uwsgi-router-basicauth -Summary: uWSGI - Plugin for Basic Auth router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-basicauth -This package contains the basicauth plugin for uWSGI - -%package -n uwsgi-router-cache -Summary: uWSGI - Plugin for Cache router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-cache -This package contains the cache router plugin for uWSGI - -%package -n uwsgi-router-expires -Summary: uWSGI - Plugin for Expires router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-expires -This package contains the expires router plugin for uWSGI - -%package -n uwsgi-router-fast -Summary: uWSGI - Plugin for FastRouter support -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-plugin-fastrouter <= 2.0.6 -Provides: uwsgi-plugin-fastrouter = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-fast -This package contains the fastrouter (proxy) plugin for uWSGI - -%package -n uwsgi-router-forkpty -Summary: uWSGI - Plugin for ForkPTY router support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-router-forkpty -This package contains the ForkPTY router plugin for uWSGI - -%package -n uwsgi-router-hash -Summary: uWSGI - Plugin for Hash router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-hash -This package contains the hash router plugin for uWSGI - -%package -n uwsgi-router-http -Summary: uWSGI - Plugin for HTTP router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-http -This package contains the http router plugin for uWSGI - -%package -n uwsgi-router-memcached -Summary: uWSGI - Plugin for Memcached router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-memcached -This package contains the memcached router plugin for uWSGI - -%package -n uwsgi-router-metrics -Summary: uWSGI - Plugin for Metrics router support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-router-metrics -This package contains the metrics router plugin for uWSGI - -%package -n uwsgi-router-radius -Summary: uWSGI - Plugin for Radius router support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-router-radius -This package contains the metrics router plugin for uWSGI - -%package -n uwsgi-router-raw -Summary: uWSGI - Plugin for Raw Router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-plugin-rawrouter <= 2.0.6 -Provides: uwsgi-plugin-rawrouter = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-raw -This package contains the Raw router plugin for uWSGI - -%package -n uwsgi-router-redirect -Summary: uWSGI - Plugin for Redirect router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-redirect -This package contains the redirect router plugin for uWSGI - -%package -n uwsgi-router-redis -Summary: uWSGI - Plugin for Redis router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-redis -This package contains the redis router plugin for uWSGI - -%package -n uwsgi-router-rewrite -Summary: uWSGI - Plugin for Rewrite router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-rewrite -This package contains the rewrite router plugin for uWSGI - -%package -n uwsgi-router-spnego -Summary: uWSGI - Plugin for SPNEgo router support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-router-spnego -This package contains the spnego router plugin for uWSGI - -%package -n uwsgi-router-ssl -Summary: uWSGI - Plugin for SSL router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Obsoletes: uwsgi-plugin-sslrouter <= 2.0.6 -Provides: uwsgi-plugin-sslrouter = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-ssl -This package contains the SSL router plugin for uWSGI - -%package -n uwsgi-router-static -Summary: uWSGI - Plugin for Static router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-static -This package contains the Static router plugin for uWSGI - -%package -n uwsgi-router-tuntap -Summary: uWSGI - Plugin for TUN/TAP router support -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-router-tuntap -This package contains the tuntap router plugin for uWSGI - -%package -n uwsgi-router-uwsgi -Summary: uWSGI - Plugin for uWSGI router support -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-uwsgi -This package contains the uwsgi router plugin for uWSGI - -%package -n uwsgi-router-xmldir -Summary: uWSGI - Plugin for XMLDir router rupport -Requires: uwsgi-plugin-common = %{version}-%{release} -Provides: uwsgi-routers = %{version}-%{release} - -%description -n uwsgi-router-xmldir -This package contains the xmldir router plugin for uWSGI - -# Emperors - -%package -n uwsgi-emperor-amqp -Summary: uWSGI - Plugin for AMQP emperor rupport -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-emperor-amqp -This package contains the AMQP emperor plugin for uWSGI - -%if %{with pq} -%package -n uwsgi-emperor-pg -Summary: uWSGI - Plugin for Postgres emperor rupport -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-emperor-pg -This package contains the Postgres emperor plugin for uWSGI -%endif - -%if %{with zeromq} -%package -n uwsgi-emperor-zeromq -Summary: uWSGI - Plugin for ZeroMQ emperor rupport -Requires: uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-emperor-zeromq -This package contains the ZeroMQ emperor plugin for uWSGI -%endif - -# The rest - -%if %{with mod_proxy_uwsgi} -%package -n mod_proxy_uwsgi -Summary: uWSGI - Apache2 proxy module -Requires: uwsgi = %{version}-%{release}, httpd - -%description -n mod_proxy_uwsgi -Fully Apache API compliant proxy module -%endif - - -%prep -%setup -q -cp -p %{SOURCE1} buildconf/ -echo "plugin_dir = %{_libdir}/uwsgi" >> buildconf/fedora.ini -cp -p %{SOURCE5} README.Fedora -%patch -P0 -p1 -%patch -P1 -p1 -%patch -P2 -p1 -%patch -P3 -p1 -%if 0%{?fedora} -%patch -P5 -p1 -%endif -%if %{with v8} && 0%{?fedora} -%patch -P6 -p1 -%endif -%if %{with mono} -%patch -P7 -p1 -%endif -%patch -P13 -p1 -%patch -P14 -p1 - -%build -CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini -%if %{with python2} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --verbose --plugin plugins/python fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --verbose --plugin plugins/gevent fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --verbose --plugin plugins/tornado fedora -%endif -%if %{with python3} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_pkgversion} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_pkgversion}_gevent -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --verbose --plugin plugins/tornado fedora python%{python3_pkgversion}_tornado -%endif -%if %{with python3_alternate1} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate1} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_alternate1_version_nodots} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate1} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_alternate1_version_nodots}_gevent -%endif -%if %{with python3_alternate2} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate2} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_alternate2_version_nodots} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate2} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_alternate2_version_nodots}_gevent -%endif -%if %{with python3_alternate3} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate3} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_alternate3_version_nodots} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate3} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_alternate3_version_nodots}_gevent -%endif -%if %{with mongodblibs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/mongodblog fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable -std=gnu++11 -Wno-error" %{__python2} uwsgiconfig.py --verbose --plugin plugins/stats_pusher_mongodb fedora -%endif -%if %{with mono} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/mono fedora -%endif -%if %{with php} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/php fedora -%endif -%if %{with v8} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/v8 fedora -%endif -%if %{with go} -# In EL* distributions, the gccgo compiler needs to be explicitly used to -# compile Go code, gcc will not work. However, gccgo can compile C code, -# so use that instead -%if 0%{?rhel} -CC="gccgo" CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/gccgo fedora -%else -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/gccgo fedora -%endif -%endif -%if %{with ruby19} -%if %{with ruby_rack} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/fiber fedora -%endif -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/rbthreads fedora -%endif -%if %{with tuntap} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/tuntap fedora -%endif -%if %{with perl} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/psgi fedora -%if %{with perlcoro} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/coroae fedora -%endif -%endif -%if %{with zeromq} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/logzmq fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/mongrel2 fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/emperor_zeromq fedora -%endif -%if %{with python2_greenlet} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/greenlet fedora -%endif -%if %{with python3_greenlet} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/greenlet fedora python%{python3_pkgversion}_greenlet -%endif -%if %{with glusterfs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/glusterfs fedora -%endif -%if %{with gridfs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/gridfs fedora -%endif -%if %{with java} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/jvm fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/jwsgi fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/ring fedora -%endif -%if %{with gloox} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/alarm_xmpp fedora -%endif -%if %{with geoip} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/geoip fedora -%endif -%if %{with ruby_rack} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/rack fedora -%endif -%if %{with tcp_wrappers} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/router_access fedora -%endif -%if %{with mod_proxy_uwsgi} -%{_httpd_apxs} -Wc,-Wall -Wl -c apache2/mod_proxy_uwsgi.c -%endif -%if %{with pq} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/emperor_pg fedora -%endif - - - -%install -install -d %{buildroot}%{_sysconfdir}/uwsgi.d -install -d %{buildroot}%{_usrsrc}/uwsgi/%{version} -install -d %{buildroot}%{_includedir}/uwsgi -install -d %{buildroot}%{_libdir}/uwsgi -%if %{with mono} -install -d %{buildroot}%{_monogacdir} -%endif -mkdir docs -tar -C docs/ --strip-components=1 -xvzf %{SOURCE4} -tar -C %{buildroot}%{_usrsrc}/uwsgi/%{version} --strip-components=1 -xvzf %{SOURCE0} -cp %{SOURCE1} %{buildroot}%{_usrsrc}/uwsgi/%{version}/buildconf/ -cp docs/Changelog-%{version}.rst CHANGELOG -rm -f docs/.gitignore -echo "%{commit}, i.e. this:" >> README.Fedora -echo "https://github.com/unbit/%{docrepo}/tree/%{commit}" >> README.Fedora -install -D -p -m 0755 uwsgi %{buildroot}%{_sbindir}/uwsgi -install -p -m 0644 *.h %{buildroot}%{_includedir}/uwsgi -install -p -m 0755 *_plugin.so %{buildroot}%{_libdir}/uwsgi -%if %{with python2} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python2_sitelib}/uwsgidecorators.py -%if %{manual_py_compile} == 1 -%py_byte_compile %{__python2} %{buildroot}%{python2_sitelib}/uwsgidecorators.py -%endif -%endif -%if %{with python3} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_sitelib}/uwsgidecorators.py -%if %{manual_py_compile} == 1 -%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/uwsgidecorators.py -%endif -%endif -%if %{with python3_alternate1} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_alternate1_sitelib}/uwsgidecorators.py -%if %{manual_py_compile} == 1 -%py_byte_compile %{__python3_alternate1} %{buildroot}%{python3_alternate1_sitelib}/uwsgidecorators.py -%endif -%endif -%if %{with python3_alternate2} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_alternate2_sitelib}/uwsgidecorators.py -%if %{manual_py_compile} == 1 -%py_byte_compile %{__python3_alternate2} %{buildroot}%{python3_alternate2_sitelib}/uwsgidecorators.py -%endif -%endif -%if %{with python3_alternate3} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_alternate3_sitelib}/uwsgidecorators.py -%if %{manual_py_compile} == 1 -%py_byte_compile %{__python3_alternate3} %{buildroot}%{python3_alternate3_sitelib}/uwsgidecorators.py -%endif -%endif -%if %{with java} -install -D -p -m 0644 plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar -%endif -%if %{with mono} -gacutil -i plugins/mono/uwsgi.dll -f -package uwsgi -root %{buildroot}/usr/lib -%endif -install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/uwsgi.ini -install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service -install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf -%if %{with mod_proxy_uwsgi} -install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so -%endif - -install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf - -%post -%systemd_post uwsgi.service - -%preun -%systemd_preun uwsgi.service - -%postun -%systemd_postun uwsgi.service - - -%files -%{_sbindir}/uwsgi -%config(noreplace) %{_sysconfdir}/uwsgi.ini -%{_unitdir}/uwsgi.service -%{_tmpfilesdir}/uwsgi.conf -%dir %{_sysconfdir}/uwsgi.d -%doc README README.Fedora CHANGELOG -%license LICENSE -%{_sysusersdir}/uwsgi.conf - -%files -n uwsgi-devel -%{_includedir}/uwsgi -%{_usrsrc}/uwsgi - -%if %{with python2} -%files -n python2-uwsgidecorators -%{python2_sitelib}/uwsgidecorators.py* -%endif - -%if %{with python3} -%files -n python%{python3_pkgversion}-uwsgidecorators -%{python3_sitelib}/uwsgidecorators.py -%{python3_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_version_nodots}*.py* -%endif - -%if %{with python3_alternate1} -%files -n %{python3_alternate1_pkgname}-uwsgidecorators -%{python3_alternate1_sitelib}/uwsgidecorators.py -%{python3_alternate1_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_alternate1_version_nodots}*.py* -%endif - -%if %{with python3_alternate2} -%files -n %{python3_alternate2_pkgname}-uwsgidecorators -%{python3_alternate2_sitelib}/uwsgidecorators.py -%{python3_alternate2_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_alternate2_version_nodots}*.py* -%endif - -%if %{with python3_alternate3} -%files -n %{python3_alternate3_pkgname}-uwsgidecorators -%{python3_alternate3_sitelib}/uwsgidecorators.py -%{python3_alternate3_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_alternate3_version_nodots}*.py* -%endif - -%files -n uwsgi-docs -%doc docs - -%files -n uwsgi-plugin-common -%dir %{_libdir}/uwsgi -%{_libdir}/uwsgi/http_plugin.so -%{_libdir}/uwsgi/cgi_plugin.so - -# Stats pushers - -%files -n uwsgi-stats-pusher-file -%{_libdir}/uwsgi/stats_pusher_file_plugin.so - -%if %{with mongodblibs} -%files -n uwsgi-stats-pusher-mongodb -%{_libdir}/uwsgi/stats_pusher_mongodb_plugin.so -%endif - -%files -n uwsgi-stats-pusher-socket -%{_libdir}/uwsgi/stats_pusher_socket_plugin.so - -%files -n uwsgi-stats-pusher-statsd -%{_libdir}/uwsgi/stats_pusher_statsd_plugin.so - -%files -n uwsgi-stats-pusher-zabbix -%{_libdir}/uwsgi/zabbix_plugin.so - -# Alarms - -%files -n uwsgi-alarm-curl -%{_libdir}/uwsgi/alarm_curl_plugin.so - -%if %{with gloox} -%files -n uwsgi-alarm-xmpp -%{_libdir}/uwsgi/alarm_xmpp_plugin.so -%endif - -# Transformations - -%files -n uwsgi-transformation-chunked -%{_libdir}/uwsgi/transformation_chunked_plugin.so - -%files -n uwsgi-transformation-gzip -%{_libdir}/uwsgi/transformation_gzip_plugin.so - -%files -n uwsgi-transformation-offload -%{_libdir}/uwsgi/transformation_offload_plugin.so - -%files -n uwsgi-transformation-template -%{_libdir}/uwsgi/transformation_template_plugin.so - -%files -n uwsgi-transformation-tofile -%{_libdir}/uwsgi/transformation_tofile_plugin.so - -%files -n uwsgi-transformation-toupper -%{_libdir}/uwsgi/transformation_toupper_plugin.so - -# Loggers - -%files -n uwsgi-log-encoder-msgpack -%{_libdir}/uwsgi/msgpack_plugin.so - -%files -n uwsgi-logger-crypto -%{_libdir}/uwsgi/logcrypto_plugin.so - -%files -n uwsgi-logger-file -%{_libdir}/uwsgi/logfile_plugin.so - -%files -n uwsgi-logger-graylog2 -%{_libdir}/uwsgi/graylog2_plugin.so - -%if %{with mongodblibs} -%files -n uwsgi-logger-mongodb -%{_libdir}/uwsgi/mongodblog_plugin.so -%endif - -%files -n uwsgi-logger-pipe -%{_libdir}/uwsgi/logpipe_plugin.so - -%files -n uwsgi-logger-redis -%{_libdir}/uwsgi/redislog_plugin.so - -%files -n uwsgi-logger-rsyslog -%{_libdir}/uwsgi/rsyslog_plugin.so - -%files -n uwsgi-logger-socket -%{_libdir}/uwsgi/logsocket_plugin.so - -%files -n uwsgi-logger-syslog -%{_libdir}/uwsgi/syslog_plugin.so - -%files -n uwsgi-logger-systemd -%{_libdir}/uwsgi/systemd_logger_plugin.so - -%if %{with zeromq} -%files -n uwsgi-logger-zeromq -%{_libdir}/uwsgi/logzmq_plugin.so -%endif - -# Plugins - -%files -n uwsgi-plugin-airbrake -%{_libdir}/uwsgi/airbrake_plugin.so - -%files -n uwsgi-plugin-cache -%{_libdir}/uwsgi/cache_plugin.so - -%files -n uwsgi-plugin-carbon -%{_libdir}/uwsgi/carbon_plugin.so - -%if %{with perl} -%files -n uwsgi-plugin-psgi -%{_libdir}/uwsgi/psgi_plugin.so - -%if %{with perlcoro} -%files -n uwsgi-plugin-coroae -%{_libdir}/uwsgi/coroae_plugin.so -%endif -%endif - -%files -n uwsgi-plugin-cheaper-busyness -%{_libdir}/uwsgi/cheaper_busyness_plugin.so - -%files -n uwsgi-plugin-cplusplus -%{_libdir}/uwsgi/cplusplus_plugin.so - -%files -n uwsgi-plugin-curl-cron -%{_libdir}/uwsgi/curl_cron_plugin.so - -%files -n uwsgi-plugin-dumbloop -%{_libdir}/uwsgi/dumbloop_plugin.so - -%files -n uwsgi-plugin-dummy -%{_libdir}/uwsgi/dummy_plugin.so - -%if %{with ruby19} -%if %{with ruby_rack} -%files -n uwsgi-plugin-fiber -%{_libdir}/uwsgi/fiber_plugin.so -%endif -%endif - -%if %{with go} -%files -n uwsgi-plugin-gccgo -%{_libdir}/uwsgi/gccgo_plugin.so -%endif - -%if %{with geoip} -%files -n uwsgi-plugin-geoip -%{_libdir}/uwsgi/geoip_plugin.so -%endif - -%if %{with python2} -%files -n uwsgi-plugin-python2-gevent -%{_libdir}/uwsgi/gevent_plugin.so -%endif - -%if %{with python3} -%files -n uwsgi-plugin-python%{python3_pkgversion}-gevent -%{_libdir}/uwsgi/python%{python3_pkgversion}_gevent_plugin.so -%endif - -%if %{with python3_alternate1} -%files -n uwsgi-plugin-python%{python3_alternate1_version_nodots}-gevent -%{_libdir}/uwsgi/python%{python3_alternate1_version_nodots}_gevent_plugin.so -%endif - -%if %{with python3_alternate2} -%files -n uwsgi-plugin-python%{python3_alternate2_version_nodots}-gevent -%{_libdir}/uwsgi/python%{python3_alternate2_version_nodots}_gevent_plugin.so -%endif - -%if %{with python3_alternate3} -%files -n uwsgi-plugin-python%{python3_alternate3_version_nodots}-gevent -%{_libdir}/uwsgi/python%{python3_alternate3_version_nodots}_gevent_plugin.so -%endif - -%if %{with glusterfs} -%files -n uwsgi-plugin-glusterfs -%{_libdir}/uwsgi/glusterfs_plugin.so -%endif - -%if %{with python2_greenlet} -%files -n uwsgi-plugin-python2-greenlet -%{_libdir}/uwsgi/greenlet_plugin.so -%endif - -%if %{with python3_greenlet} -%files -n uwsgi-plugin-python%{python3_pkgversion}-greenlet -%{_libdir}/uwsgi/python%{python3_pkgversion}_greenlet_plugin.so -%endif - -%if %{with gridfs} -%files -n uwsgi-plugin-gridfs -%{_libdir}/uwsgi/gridfs_plugin.so -%endif - -%if %{with java} -%files -n uwsgi-plugin-jvm -%{_libdir}/uwsgi/jvm_plugin.so -%{_javadir}/uwsgi.jar - -%files -n uwsgi-plugin-jwsgi -%{_libdir}/uwsgi/jwsgi_plugin.so -%endif - -%files -n uwsgi-plugin-ldap -%{_libdir}/uwsgi/ldap_plugin.so - -%files -n uwsgi-plugin-lua -%{_libdir}/uwsgi/lua_plugin.so - -%if %{with zeromq} -%files -n uwsgi-plugin-mongrel2 -%{_libdir}/uwsgi/mongrel2_plugin.so -%endif - -%if %{with mono} -%files -n uwsgi-plugin-mono -%{_libdir}/uwsgi/mono_plugin.so -%{_monodir}/uwsgi/ -%{_monogacdir}/uwsgi/ -%endif - -%files -n uwsgi-plugin-nagios -%{_libdir}/uwsgi/nagios_plugin.so - -%files -n uwsgi-plugin-notfound -%{_libdir}/uwsgi/notfound_plugin.so - -%files -n uwsgi-plugin-pam -%{_libdir}/uwsgi/pam_plugin.so - -%if %{with php} -%files -n uwsgi-plugin-php -%{_libdir}/uwsgi/php_plugin.so -%endif - -%files -n uwsgi-plugin-pty -%{_libdir}/uwsgi/pty_plugin.so - -%if %{with python2} -%files -n uwsgi-plugin-python2 -%{_libdir}/uwsgi/python_plugin.so -%endif - -%if %{with python3} -%files -n uwsgi-plugin-python%{python3_pkgversion} -%{_libdir}/uwsgi/python%{python3_pkgversion}_plugin.so -%endif - -%if %{with python3_alternate1} -%files -n uwsgi-plugin-python%{python3_alternate1_version_nodots} -%{_libdir}/uwsgi/python%{python3_alternate1_version_nodots}_plugin.so -%endif - -%if %{with python3_alternate2} -%files -n uwsgi-plugin-python%{python3_alternate2_version_nodots} -%{_libdir}/uwsgi/python%{python3_alternate2_version_nodots}_plugin.so -%endif - -%if %{with python3_alternate3} -%files -n uwsgi-plugin-python%{python3_alternate3_version_nodots} -%{_libdir}/uwsgi/python%{python3_alternate3_version_nodots}_plugin.so -%endif - -%if %{with ruby_rack} -%files -n uwsgi-plugin-rack -%{_libdir}/uwsgi/rack_plugin.so -%endif - -%if %{with ruby19} -%files -n uwsgi-plugin-rbthreads -%{_libdir}/uwsgi/rbthreads_plugin.so -%endif - -%if %{with java} -%files -n uwsgi-plugin-ring -%{_libdir}/uwsgi/ring_plugin.so -%endif - -%files -n uwsgi-plugin-rrdtool -%{_libdir}/uwsgi/rrdtool_plugin.so - -%files -n uwsgi-plugin-rpc -%{_libdir}/uwsgi/rpc_plugin.so - -%files -n uwsgi-plugin-ruby -%{_libdir}/uwsgi/ruby19_plugin.so - -%files -n uwsgi-plugin-spooler -%{_libdir}/uwsgi/spooler_plugin.so - -%files -n uwsgi-plugin-sqlite3 -%{_libdir}/uwsgi/sqlite3_plugin.so - -%files -n uwsgi-plugin-ssi -%{_libdir}/uwsgi/ssi_plugin.so - -%if %{with python2} -%files -n uwsgi-plugin-python2-tornado -%{_libdir}/uwsgi/tornado_plugin.so -%endif - -%if %{with python3} -%files -n uwsgi-plugin-python%{python3_pkgversion}-tornado -%{_libdir}/uwsgi/python%{python3_pkgversion}_tornado_plugin.so -%endif - -%files -n uwsgi-plugin-ugreen -%{_libdir}/uwsgi/ugreen_plugin.so - -%if %{with v8} -%files -n uwsgi-plugin-v8 -%{_libdir}/uwsgi/v8_plugin.so -%endif - -%files -n uwsgi-plugin-webdav -%{_libdir}/uwsgi/webdav_plugin.so - -%files -n uwsgi-plugin-xattr -%{_libdir}/uwsgi/xattr_plugin.so - -%files -n uwsgi-plugin-xslt -%{_libdir}/uwsgi/xslt_plugin.so - -%files -n uwsgi-plugin-zergpool -%{_libdir}/uwsgi/zergpool_plugin.so - -# Routers - -%if %{with tcp_wrappers} -%files -n uwsgi-router-access -%{_libdir}/uwsgi/router_access_plugin.so -%endif - -%files -n uwsgi-router-basicauth -%{_libdir}/uwsgi/router_basicauth_plugin.so - -%files -n uwsgi-router-cache -%{_libdir}/uwsgi/router_cache_plugin.so - -%files -n uwsgi-router-expires -%{_libdir}/uwsgi/router_expires_plugin.so - -%files -n uwsgi-router-fast -%{_libdir}/uwsgi/fastrouter_plugin.so - -%files -n uwsgi-router-forkpty -%{_libdir}/uwsgi/forkptyrouter_plugin.so - -%files -n uwsgi-router-hash -%{_libdir}/uwsgi/router_hash_plugin.so - -%files -n uwsgi-router-http -%{_libdir}/uwsgi/router_http_plugin.so - -%files -n uwsgi-router-memcached -%{_libdir}/uwsgi/router_memcached_plugin.so - -%files -n uwsgi-router-metrics -%{_libdir}/uwsgi/router_metrics_plugin.so - -%files -n uwsgi-router-radius -%{_libdir}/uwsgi/router_radius_plugin.so - -%files -n uwsgi-router-raw -%{_libdir}/uwsgi/rawrouter_plugin.so - -%files -n uwsgi-router-redirect -%{_libdir}/uwsgi/router_redirect_plugin.so - -%files -n uwsgi-router-redis -%{_libdir}/uwsgi/router_redis_plugin.so - -%files -n uwsgi-router-rewrite -%{_libdir}/uwsgi/router_rewrite_plugin.so - -%files -n uwsgi-router-spnego -%{_libdir}/uwsgi/router_spnego_plugin.so - -%files -n uwsgi-router-ssl -%{_libdir}/uwsgi/sslrouter_plugin.so - -%files -n uwsgi-router-static -%{_libdir}/uwsgi/router_static_plugin.so - -%if %{with tuntap} -%files -n uwsgi-router-tuntap -%{_libdir}/uwsgi/tuntap_plugin.so -%endif - -%files -n uwsgi-router-uwsgi -%{_libdir}/uwsgi/router_uwsgi_plugin.so - -%files -n uwsgi-router-xmldir -%{_libdir}/uwsgi/router_xmldir_plugin.so - -# Emperors - -%files -n uwsgi-emperor-amqp -%{_libdir}/uwsgi/emperor_amqp_plugin.so - -%if %{with pq} -%files -n uwsgi-emperor-pg -%{_libdir}/uwsgi/emperor_pg_plugin.so -%endif - -%if %{with zeromq} -%files -n uwsgi-emperor-zeromq -%{_libdir}/uwsgi/emperor_zeromq_plugin.so -%endif - - -# The rest - -%if %{with mod_proxy_uwsgi} -%files -n mod_proxy_uwsgi -%{_httpd_moddir}/mod_proxy_uwsgi.so -%endif - - -%changelog -* Sun Jan 11 2026 Ralf Ertzinger - 2.0.31-5 -- Rebuild for new gccgo libraries - -* Thu Jan 08 2026 Mamoru TASAKA - 2.0.31-4 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 - -* Wed Nov 26 2025 Ralf Ertzinger - 2.0.31-3 -- Fix path errors for EPEL9 uwsgidecorator packages - -* Wed Oct 15 2025 Remi Collet - 2.0.31-2 -- rebuild for https://fedoraproject.org/wiki/Changes/php85 - -* Sun Oct 12 2025 Ralf Ertzinger - 2.0.31-1 -- Update to 2.0.31, drop merged patches - -* Fri Sep 19 2025 Python Maint - 2.0.30-7 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Tue Aug 19 2025 Ralf Ertzinger - 2.0.30-6 -- Add python3.13 module for EL9 - -* Fri Aug 15 2025 Python Maint - 2.0.30-5 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Thu Jul 24 2025 Ralf Ertzinger - 2.0.30-4 -- Disable perl-Coro for rawhide, as this blocks rebuilding - for perl 5.42 (see https://bugzilla.redhat.com/show_bug.cgi?id=2379448) - -* Tue Jul 08 2025 Jitka Plesnikova - 2.0.30-3 -- Perl 5.42 rebuild - -* Mon Jun 09 2025 Python Maint - 2.0.30-2 -- Rebuilt for Python 3.14 - -* Sun Jun 08 2025 Ralf Ertzinger - 2.0.30-1 -- Update to 2.0.30 - -* Tue Jun 03 2025 Python Maint - 2.0.29-2 -- Rebuilt for Python 3.14 - -* Sat Apr 12 2025 Ralf Ertzinger - 2.0.29-1 -- Update to 2.0.29 - -* Mon Mar 24 2025 Ralf Ertzinger - 2.0.28-7 -- Rebuild for new libgo - -* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 2.0.28-6 -- Add sysusers.d config file to allow rpm to create users/groups automatically - -* Sat Feb 01 2025 Björn Esser - 2.0.28-5 -- Add explicit BR: libxcrypt-devel - -* Fri Jan 24 2025 Ralf Ertzinger - 2.0.28-4 -- Fix type errors flagged by GCC15 - -* Sun Jan 19 2025 Fedora Release Engineering - 2.0.28-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Jan 08 2025 Mamoru TASAKA - 2.0.28-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4 - -* Sun Oct 27 2024 Ralf Ertzinger - 2.0.28-1 -- Update to 2.0.28, drop merged patches - -* Tue Oct 22 2024 Richard W.M. Jones - 2.0.27-5 -- Rebuild for Jansson 2.14 - (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/) - -* Mon Oct 14 2024 Ralf Ertzinger - 2.0.27-4 -- Fix uWSGI auto-reloading on config change - -* Mon Oct 14 2024 Remi Collet - 2.0.27-3 -- rebuild for https://fedoraproject.org/wiki/Changes/php84 - -* Fri Sep 27 2024 Ralf Ertzinger - 2.0.27-2 -- Only build fiber plugin when rack plugin is also built - -* Tue Sep 24 2024 Ralf Ertzinger - 2.0.27-1 -- Update to 2.0.27 -- Drop merged patches -- Re-enable rack plugin for EPEL10, dependencies now present - -* Sun Sep 22 2024 Ralf Ertzinger - 2.0.26-8 -- Disable building the Ruby rack plugin for EPEL10 - -* Wed Sep 04 2024 Miroslav Suchý - 2.0.26-7 -- convert license to SPDX - -* Wed Sep 04 2024 Ralf Ertzinger - 2.0.26-6 -- Drop support for EL7 -- Add support for EL10 -- Explicitly require pcre2 (all builds already pulled this - in anyway) - -* Tue Aug 13 2024 Ralf Ertzinger - 2.0.26-5 -- Add patch for python 3.13 - -* Sat Jul 20 2024 Fedora Release Engineering - 2.0.26-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Jun 12 2024 Jitka Plesnikova - 2.0.26-3 -- Perl 5.40 rebuild - -* Sat Jun 08 2024 Python Maint - 2.0.26-2 -- Rebuilt for Python 3.13 - -* Sat Jun 01 2024 Ralf Ertzinger - 2.0.26-1 -- Update to 2.0.26 -- Rework support for multiple python versions - -* Tue Apr 16 2024 Ralf Ertzinger - 2.0.25.1-1 -- Update to 2.0.25.1, drop merged patches -- Use github.com as source for the main tarball -- Do not build for i686 any more - -* Tue Mar 19 2024 Dominik Mierzejewski - 2.0.24-2 -- Rebuilt for gloox-1.0.28 - -* Sat Feb 10 2024 Ralf Ertzinger - 2.0.24-1 -- Update to 2.0.24, drop merged patches - -* Sat Jan 27 2024 Fedora Release Engineering - 2.0.23-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Jan 23 2024 Ralf Ertzinger - 2.0.23-2 -- Add reworked patch for python3.12 -- Build plugin for python3.11 under EPEL9 - -* Wed Jan 03 2024 Mamoru TASAKA - 2.0.23-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3 - -* Thu Nov 02 2023 Ralf Ertzinger - 2.0.23-1 -- Update to 2.0.23, drop merged patches - -* Sat Oct 21 2023 Ralf Ertzinger - 2.0.22-7 -- Drop 2to3 call, it doesn't do anything anymore - -* Tue Oct 03 2023 Remi Collet - 2.0.22-6 -- rebuild for https://fedoraproject.org/wiki/Changes/php83 -- add patch for PHP 8.3 from - https://github.com/unbit/uwsgi/pull/2559 - -* Sat Sep 30 2023 Ralf Ertzinger - 2.0.22-5 -- Rework python 3.12 patch - -* Tue Sep 26 2023 Miro Hrončok - 2.0.22-4 -- Don't build the Python 3.11 module on Fedora 39+, it is not installable -- Fixes: rhbz#2239671 - -* Sat Sep 16 2023 Ralf Ertzinger - 2.0.22-3 -- Extend building the python 3.11 module to rawhide - -* Fri Sep 15 2023 Ralf Ertzinger - 2.0.22-2 -- For Fedora 39, build an extra module against Python 3.11 -- Disable PIE and enable PIC for the mail executable to avoid crashes when using - the PHP module (see BZ2203863) - -* Fri Jul 28 2023 Ralf Ertzinger - 2.0.22-1 -- Update to 2.0.22 -- Add initial patch for building against python3.12 - -* Sat Jul 22 2023 Fedora Release Engineering - 2.0.21-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 11 2023 Jitka Plesnikova - 2.0.21-11 -- Perl 5.38 rebuild - -* Thu Jun 15 2023 Python Maint - 2.0.21-10 -- Rebuilt for Python 3.12 - -* Thu Jun 15 2023 Ralf Ertzinger - 2.0.21-9 -- Rework Ruby patches -- Disable python3-greenlet plugin for EPEL9 - -* Thu Jun 15 2023 Python Maint - 2.0.21-8 -- Rebuilt for Python 3.12 - -* Fri Apr 21 2023 Ralf Ertzinger - 2.0.21-7 -- Fix Ruby/Rack plugin for Ruby >= 3.2 - -* Tue Jan 24 2023 Ralf Ertzinger - 2.0.21-5 -- Rebuilt for new libgo.so - -* Sat Jan 21 2023 Fedora Release Engineering - 2.0.21-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Wed Jan 04 2023 Mamoru TASAKA - 2.0.21-3 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 - -* Fri Oct 28 2022 Ralf Ertzinger - 2.0.21-2 -- Drop the perl-PSGI Requirement from the Perl plugin, it's not - strictly needed - -* Thu Oct 27 2022 Ralf Ertzinger - 2.0.21-1 -- Update to 2.0.21 - -* Thu Oct 06 2022 Ralf Ertzinger - 2.0.20-10 -- Fix PHP 8.2 support - -* Tue Aug 09 2022 Ralf Ertzinger - 2.0.20-9 -- Fix PHP 8.1 support - -* Sat Jul 23 2022 Fedora Release Engineering - 2.0.20-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jun 30 2022 Victor Stinner - 2.0.20-7 -- Add Python 3.11 support (rhbz#2099185) - -* Mon Jun 13 2022 Python Maint - 2.0.20-6 -- Rebuilt for Python 3.11 - -* Wed Jun 01 2022 Jitka Plesnikova - 2.0.20-5 -- Perl 5.36 rebuild - -* Fri Mar 04 2022 Ralf Ertzinger - 2.0.20-4 -- Add support for EPEL9 - -* Wed Mar 02 2022 Ralf Ertzinger - 2.0.20-3 -- Add build support for EPEL9 - -* Sat Feb 19 2022 Ralf Ertzinger - 2.0.20-3 -- Fix errors in uwsgi python module when building against python3.10 or higher - -* Wed Feb 16 2022 Ralf Ertzinger - 2.0.20-2.1 -- F37 rebuild for new libgo - -* Sat Feb 12 2022 Ralf Ertzinger - 2.0.20-2 -- Adding emperor-amqp for all targets -- Adding emperor-pg for Fedora/EPEL8 -- Adding emperor-zeromq for Fedora/EPEL8 - -* Mon Feb 07 2022 Ralf Ertzinger - 2.0.20-1.1 -- Fix gccgo plugin build for F36 - -* Sun Jan 23 2022 Ralf Ertzinger - 2.0.20-1 -- Update to 2.0.20 -- Fix build against PHP8 -- Remove support for EL6 -- General logic cleanup and removal of dead code from the spec file -- Add --verbose to build step to show compiler settings - -* Wed Jan 27 2021 Fedora Release Engineering - 2.0.18-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jan 06 2021 Mamoru TASAKA - 2.0.18-15 -- F-34: rebuild against ruby 3.0 - -* Tue Sep 15 2020 Miro Hrončok - 2.0.18-14 -- Rebuilt for libevent soname change - -* Sat Aug 01 2020 Fedora Release Engineering - 2.0.18-13 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 2.0.18-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Thu Jun 25 2020 Jitka Plesnikova - 2.0.18-11 -- Perl 5.32 rebuild - -* Sun May 31 2020 Björn Esser - 2.0.18-10 -- Rebuild (gloox) - -* Tue May 26 2020 Miro Hrončok - 2.0.18-9 -- Rebuilt for Python 3.9 - -* Tue May 12 2020 Jorge A Gallegos - 2.0.18-8 -- Patching PHP plugin to fix Zend framework - -* Mon Apr 27 2020 Jorge A Gallegos - 2.0.18-7 -- Re-introducing tmpfiles.d (Jorge Gallegos) - -* Tue Apr 07 2020 Jorge A Gallegos - 2.0.18-6 -- change mkdirs for install -d (Jorge Gallegos) -- Fix python plugins provides BZ 1628147 (Jorge Gallegos) -- Add a fix for psgi + GCC10 BZ 1794335 (Jorge Gallegos) -- Move path options outside main config BZ 1687403 (Jorge Gallegos) - -* Fri Jan 31 2020 Fedora Release Engineering - 2.0.18-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sat Jan 18 2020 Mamoru TASAKA - 2.0.18-4 -- F-32: rebuild against ruby27 - -* Mon Aug 19 2019 Miro Hrončok - 2.0.18-3 -- Rebuilt for Python 3.8 - -* Sat Jul 27 2019 Fedora Release Engineering - 2.0.18-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed Jun 19 2019 Carl George - 2.0.18-1 -- Latest upstream -- Use openssl everywhere, instead of compat-openssl10 on F26+ -- Disable python2 subpackages on F31+ - -* Fri May 31 2019 Jitka Plesnikova - 2.0.17.1-12 -- Perl 5.30 rebuild - -* Wed Apr 03 2019 Carl George - 2.0.17.1-11 -- Re-enable mono plugins on ppc64le - -* Tue Mar 26 2019 Carl George - 2.0.17.1-10 -- Disable jvm plugin on Fedora and EL6 due to javapackages-tools retirement (apache-ivy orphanage) -- Disable v8 plugin on Fedora due to v8-314 retirement -- Disable mongo plugins on Fedora due to mongo-cxx-driver-legacy being broken in rawhide -- Disable mono plugins on ppc64le because mono-4.8.0-17 dropped that arch rhbz#1686983 - -* Mon Mar 18 2019 Remi Collet - 2.0.17.1-9 -- rebuild for libargon2 new soname - -* Sun Feb 03 2019 Fedora Release Engineering - 2.0.17.1-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Jan 21 2019 Mamoru TASAKA - 2.0.17.1-7 -- F-30: rebuild against ruby26 - -* Mon Jan 14 2019 Björn Esser - 2.0.17.1-6 -- Rebuilt for libcrypt.so.2 (#1666033) - -* Fri Nov 02 2018 Carl George - 2.0.17.1-5 -- Don't build python2-uwsgidecorators on F30+ -- BuildRequire mongo-cxx-driver-legacy-devel on F30+ - -* Wed Sep 12 2018 Carl George - 2.0.17.1-4 -- Drop mod_proxy_uwsgi subpackage on Fedora, as this module now provided by httpd rhbz#1574335 - -* Sat Jul 14 2018 Tadej Janež - 2.0.17.1-3 -- Re-enable greenlet plugin on EL7: - - Python 3 version is always built - - Python 2 version is only built on x86_64 - -* Thu Jul 12 2018 Carl George - 2.0.17.1-2 -- Make python2-uwsgidecorators own the right files (rhbz#1600721) -- Be more explicit with uwsgidecorators files -- Rebuilt to change main python from 3.4 to 3.6 - -* Mon Jul 09 2018 Carl George - 2.0.17.1-1 -- Latest upstream (rhbz#1549354) -- Enable uwsgi-plugin-coroae on EL7 -- Use systemd tmpfiles to create /run/uwsgi with group write permissions (rhbz#1427303) -- Use /var/run/uwsgi when not using systemd -- Build with versioned python command -- Remove %%config from systemd unit file -- Disable greenlet plugin on EL7 - -* Tue Jul 03 2018 Petr Pisar - 2.0.16-7 -- Perl 5.28 rebuild - -* Fri Jun 29 2018 Jitka Plesnikova - 2.0.16-6 -- Perl 5.28 rebuild - -* Wed Jun 27 2018 Tadej Janež - 2.0.16-5 -- Build Python 3 version(s) of gevent plugin on Fedora and EPEL7 -- Build Python 3 version of greenlet plugin on Fedora and EPEL7 -- Build Python 2 version of greenlet plugin on EPEL7 -- Always build Python 3 version of tornado plugin when building with Python 3 - (drop python3_tornado build conditional) - -* Tue Jun 26 2018 Tadej Janež - 2.0.16-4 -- Modernize and generalize building of Python subpackages: - - replace python with python2 - - use appropriate macros for when refering to Python 3 - - prefix Python-dependent plugins with the version of Python they are built - with -- Also build Python 3 subpackages for the other Python 3 version in EPEL7 - -* Tue Jun 19 2018 Miro Hrončok - 2.0.16-3 -- Rebuilt for Python 3.7 - -* Tue Apr 03 2018 Till Maas - 2.0.16-2 -- Fix building in Rawhide (#1556525) (Jakub Jelen) -- Disable tcp_wrappers for Fedora 28 and newer (Jakub Jelen) - -* Tue Feb 13 2018 Jorge A Gallegos - 2.0.16-1 -- Conditionally disable router-access for tcp_wrappers deprecation (Jorge Gallegos) -- Updated to 2.0.16 which includes fix for CVE-2018-6758 (Jorge Gallegos) - -* Fri Feb 09 2018 Fedora Release Engineering - 2.0.15-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Sat Jan 20 2018 Björn Esser - 2.0.15-8 -- Rebuilt for switch to libxcrypt - -* Tue Oct 03 2017 Remi Collet - 2.0.15-7 -- rebuild for https://fedoraproject.org/wiki/Changes/php72 - -* Thu Aug 03 2017 Fedora Release Engineering - 2.0.15-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 2.0.15-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Fri Jul 21 2017 Kalev Lember - 2.0.15-4 -- Rebuilt for Boost 1.64 - -* Fri Jul 07 2017 Igor Gnatenko - 2.0.15-3 -- Rebuild due to bug in RPM (RHBZ #1468476) - -* Sun Jun 04 2017 Jitka Plesnikova - 2.0.15-2 -- Perl 5.26 rebuild - -* Thu May 18 2017 Jorge A Gallegos - 2.0.15-1 -- Bumping release to 2.0.15 (Jorge Gallegos) -- Updating sources to 2.0.15 (Jorge Gallegos) - -* Mon Mar 20 2017 Carl George - 2.0.14-11 -- Add patch7 to add glib-2.0 pkg-config flags to mono build -- Filter uwgi plugins from automatic provides rhbz#1352089 - -* Wed Feb 15 2017 Igor Gnatenko - 2.0.14-10 -- Rebuild for brp-python-bytecompile - -* Wed Feb 08 2017 Carl George - 2.0.14-9 -- Rebuild for boost soname bump - -* Sun Feb 05 2017 Kalev Lember - 2.0.14-8 -- Rebuilt for libgo soname bump - -* Sun Jan 15 2017 Mamoru TASAKA - 2.0.14-7 -- Workaround for build issue on arm(32): explicitly write - java-1.8.0-openjdk-headless as BR not to use java-1.8.0-openjdk-aarch32 - which does not provide server/libjvm.so - -* Fri Jan 13 2017 Jorge A Gallegos - 2.0.14-6 -- Adding the cheaper_busyness plugin (Jorge Gallegos) -- Got tired of this giant string (Jorge Gallegos) - -* Fri Jan 13 2017 Mamoru TASAKA - 2.0.14-5 -- F-26: rebuild for ruby24 - -* Thu Dec 22 2016 Miro Hrončok - 2.0.14-4 -- Rebuild for Python 3.6 - -* Tue Dec 20 2016 Carl George - 2.0.14-3 -- Enable plugin-psgi on EL7 - -* Wed Nov 30 2016 Carl George - 2.0.14-2 -- uwsgi is not yet OpenSSL 1.1 compatible, build against compat-openssl10 on F26+ (Carl George) -- php plugin requires krb5 headers to build (Carl George) - -* Wed Oct 05 2016 Jorge A Gallegos - 2.0.14-1 -- Updated to latest upstream stable (Jorge Gallegos) -- Make subpackage interdependencies versioned for bz #1368488 (Jorge Gallegos) -- chmod uwsgi sock file for bz #1338038 (Jorge Gallegos) -- greenlet and gevent depend on python bz #1325524 (Jorge Gallegos) -- config(noreplace) for uwsgi.ini bz #1339558 (Jorge Gallegos) - -* Mon Aug 01 2016 Carl George - 2.0.13.1-2 -- Build against v8-314 on F25+ rhbz#1339293 -- Own /usr/src/uwsgi rhbz#1351796 - -* Thu Jul 28 2016 Jorge A Gallegos - 2.0.13.1-1 -- Bumped to latest stable - -* Tue Jul 19 2016 Fedora Release Engineering - 2.0.12-9 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Tue May 17 2016 Jitka Plesnikova - 2.0.12-8 -- Perl 5.24 rebuild - -* Tue Apr 12 2016 Peter Robinson 2.0.12-7 -- Mongodb doesn't depend on v8 anymore so is now supported on all LE arches - -* Fri Feb 05 2016 Fedora Release Engineering - 2.0.12-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jan 29 2016 Jonathan Wakely - 2.0.12-5 -- Rebuilt for Boost 1.60 - -* Wed Jan 13 2016 Vít Ondruch - 2.0.12-4 -- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.3 - -* Thu Jan 07 2016 Jorge A Gallegos - 2.0.12-3 -- Really fixing stats_pusher_mongodb (Jorge Gallegos) - -* Sat Jan 02 2016 Jorge A Gallegos - 2.0.12-2 -- Trying again with GCC - -* Thu Dec 31 2015 Jorge A Gallegos - 2.0.12-1 -- Adding the build profile to -devel subpackage (Jorge Gallegos) -- Fixing stats-pusher-mongo for gnu++11 (Jorge Gallegos) -- Using _mono macros instead of hardcoded paths (Jorge Gallegos) -- Modifying an old changelog entry for rpmlint (Jorge Gallegos) -- Making -devel not pull unnecessary deps (Jorge Gallegos) -- Adjusting rpath patch for new release (Jorge Gallegos) -- Updating to latest stable version 2.0.12 (Jorge Gallegos) - -* Fri Dec 11 2015 Ville Skyttä - 2.0.11.2-7 -- Don't build tornado3 for EL7 (no python3-tornado available yet) -- Fix EL7 ppc64le build - -* Sun Dec 6 2015 Peter Robinson 2.0.11.2-6 -- Fixing glusterfs for non x86_64 on el7 - -* Thu Nov 19 2015 Jorge A Gallegos - 2.0.11.2-5 -- Fixing manual brp-compiling in el6 - -* Wed Nov 18 2015 Jorge A Gallegos - 2.0.11.2-4 -- Fixing glusterfs for ppc64 - -* Tue Nov 17 2015 Jorge A Gallegos - 2.0.11.2-3 -- Fixing bz #1247395 - python3 plugin for epel7 -- Fixing bz #1261942 - daemonize properly in SystemV -- Fixing bz #1258388 - package uwsgidecorators -- Fixing bz #1242155 - glusterfs plugin for epel7 -- Fixing bz #1240236 - add source to -devel subpackage - -* Tue Nov 10 2015 Fedora Release Engineering - 2.0.11.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 - -* Fri Nov 06 2015 Jorge A Gallegos - 2.0.11.2-1 -- With latest stable - -* Fri Aug 28 2015 Jonathan Wakely - 2.0.11.1-4 -- Rebuilt for Boost 1.59 - -* Wed Jul 29 2015 Fedora Release Engineering - 2.0.11.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 - -* Wed Jul 22 2015 David Tardon - 2.0.11.1-2 -- rebuild for Boost 1.58 - -* Tue Jul 21 2015 Jorge A Gallegos - 2.0.11.1-1 -- New emergency security release - -* Thu Jul 02 2015 Jorge A Gallegos - 2.0.11-1 -- Adding the dummy and notfound plugins (Jorge Gallegos) -- License is license (Jorge Gallegos) -- Mark config files as config (Jorge Gallegos) -- Adding sources for new version (Jorge Gallegos) -- uwsgi_fix_glibc_compatibility merged upstream (Jorge Gallegos) - -* Tue Jun 23 2015 Thomas Spura - 2.0.9-11 -- rebuilt for new zeromq 4.1.2 - -* Fri Jun 19 2015 Fedora Release Engineering - 2.0.9-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sat Jun 06 2015 Jitka Plesnikova - 2.0.9-9 -- Perl 5.22 rebuild - -* Mon May 18 2015 Peter Robinson 2.0.9-8 -- Rebuild (mono4) - -* Thu Apr 23 2015 Jorge A Gallegos - 2.0.9-7 -- Disabled java related plugins (jvm, jwsgi, ring) in el6 ppc64 - -* Tue Apr 21 2015 Jorge A Gallegos - 2.0.9-6 -- Reworked the conditionals in the spec file -- Updated documentation -- Disabled PSGI for epel, builds fine but requirement is missing -- Reenabled systemd for epel7, dunno how I missed that one - -* Fri Apr 17 2015 Dan Horák - 2.0.9-5 -- conditionalize various subpackages depending on architectures (patch by Jakub Cajka) - #1211616 - -* Tue Apr 14 2015 Vít Ondruch - 2.0.9-4 -- Fix glibc and MongoDB compatibility. - -* Fri Mar 13 2015 Jorge A Gallegos - 2.0.9-3 -- Adding missing dist tag, have no clue at what point this got dropped :( - -* Thu Mar 12 2015 Jorge A Gallegos - 2.0.9-2 -- Making it arch specific due to missing dependencies in PPC (as per - https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires) - -* Wed Mar 11 2015 Jorge A Gallegos - 2.0.9-1 -- EPEL 6 and EPEL 7 compatible -- Plugins not compatible with epel 6 are systemd, go, python3 based, ruby19 based, gridfs and tuntap -- Plugins not compatible with epel 7 are python3 based, zeromq, greenlet, coroae, glusterfs and gridfs - -* Fri Feb 27 2015 Jorge A Gallegos - 2.0.9-0 -- New version - -* Fri Jan 16 2015 Mamoru TASAKA - 2.0.7-3 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_2.2 - -* Thu Sep 18 2014 Jorge A Gallegos - 2.0.7-2 -- -plugin-http doesn't exist, is in -plugin-common (Jorge Gallegos) - -* Mon Sep 08 2014 Jorge A Gallegos - 2.0.7-1 -- I am just done now, and there's a new version out already. Go figure. - -* Sun Sep 07 2014 Jorge A Gallegos - 2.0.6-1 -- Adding -stats-pusher-zabbix (Jorge Gallegos) -- Adding -plugin-xslt (Jorge Gallegos) -- Adding -plugin-webdav (Jorge Gallegos) -- Adding -plugin-v8 (Jorge Gallegos) -- Adding -router-tuntap (Jorge Gallegos) -- Adding http transformation plugins (Jorge Gallegos) -- Adding -plugin-tornado and -plugin-tornado3 (Jorge Gallegos) -- Adding all -stats-pusher-* plugins (Jorge Gallegos) -- Adding -plugin-ssi (Jorge Gallegos) -- Adding -plugin-ldap (Jorge Gallegos) -- Adding -plugin-sqlite3 (Jorge Gallegos) -- Adding -plugin-spooler (Jorge Gallegos) -- Adding -plugin-jwsgi (Jorge Gallegos) -- Adding -plugin-ring (Jorge Gallegos) -- Adding -plugin-rbthreads (Jorge Gallegos) -- Adding -plugin-pty (Jorge Gallegos) -- Adding -log-encoder-msgpack (Jorge Gallegos) -- Adding -plugin-mono (Jorge Gallegos) -- Adding -plugin-mongrel2 (Jorge Gallegos) -- Adding -plugin-gridfs (Jorge Gallegos) -- Adding -logger-graylog2 (Jorge Gallegos) -- Adding -plugin-glusterfs (Jorge Gallegos) -- Adding -plugin-gevent (Jorge Gallegos) -- Adding -plugin-geoip (Jorge Gallegos) -- Adding -plugin-gccgo (Jorge Gallegos) -- Adding -plugin-fiber (Jorge Gallegos) -- Adding -plugin-dumbloop (Jorge Gallegos) -- Adding -plugin-curl-cron (Jorge Gallegos) -- Adding -plugin-cplusplus (Jorge Gallegos) -- Adding -plugin-coroae (Jorge Gallegos) -- Adding -alarm-xmpp (Jorge Gallegos) -- Adding -alarm-curl (Jorge Gallegos) -- Packaging -plugin-airbrake (Jorge Gallegos) -- Broke up -routers into its individual -router-* (Jorge Gallegos) -- Renaming -plugin-sslrouter to -router-ssl (Jorge Gallegos) -- Renaming -plugin-rawrouter to -router-raw (Jorge Gallegos) -- Splitting off the documentation to its subpackage (Jorge Gallegos) -- Splitting off some non-essential embedded plugins: (Jorge Gallegos) -- Splitting off -logger-syslog (Jorge Gallegos) -- Splitting off -logger-rsyslog (Jorge Gallegos) -- Splitting off -logger-redis (Jorge Gallegos) -- Splitting off -logger-mongodb (Jorge Gallegos) -- Splitting off -logger-socket (Jorge Gallegos) -- Splitting off -logger-file (Jorge Gallegos) -- Splitting off -logger-pipe (Jorge Gallegos) -- Splitting off -logger-crypto instead (Jorge Gallegos) -- Break out the major/minor/release numbers properly (Jorge Gallegos) -- Reorganized spec, alphabetical and type (Jorge Gallegos) -- Splitting -router-fastrouter out of -common (Jorge Gallegos) -- Splitting out the README, I will be putting more stuff in here (Jorge Gallegos) -- Adding -logger-systemd plugin (Jorge Gallegos) -- Adding -logger-zeromq plugin (Jorge Gallegos) -- Adding new sources for newest stable (Jorge Gallegos) - -* Mon Aug 18 2014 Fedora Release Engineering - 1.9.19-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Thu Jun 19 2014 Remi Collet - 1.9.19-5 -- rebuild for https://fedoraproject.org/wiki/Changes/Php56 - -* Sun Jun 08 2014 Fedora Release Engineering - 1.9.19-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Wed May 28 2014 Kalev Lember - 1.9.19-3 -- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 - -* Tue Apr 29 2014 Vít Ondruch - 1.9.19-2 -- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.1 - -* Tue Nov 12 2013 Jorge A Gallegos - 1.9.19-1 -- Updating to latest stable, uploading new sources (Jorge Gallegos) -- Forgot to delete the jvm arm patch file (Jorge Gallegos) - -* Sun Oct 20 2013 Jorge A Gallegos - 1.9.18.2-1 -- The changelog entry must match major + minor (Jorge Gallegos) -- Adding more ignore entries (Jorge Gallegos) -- The jvm arm patch has been merged upstream (Jorge Gallegos) -- Updated license to 'GPLv2 with exceptions' (Jorge Gallegos) -- Ugh messed up the doc sha (Jorge Gallegos) -- Adding new sources, bumping up spec to 1.9.18.2 (Jorge Gallegos) - -* Sat Oct 19 2013 Jorge A Gallegos - 1.9.18.2-0 -- Breaking up full version in 3 parts (Jorge Gallegos) -- Update to latest stable 1.9.18.2 (Jorge Gallegos) -- Forgot to disable debug mode (Jorge Gallegos) - -* Wed Oct 09 2013 Jorge A Gallegos - 1.9.17-2 -- Uploaded new sources per spec rework (Jorge Gallegos) -- Adding more router plugins (Jorge Gallegos) -- Adding mod_proxy_uwsgi apache module (Jorge Gallegos) -- Complying with the guidelines for source urls (Jorge Gallegos) -- The settings in the service file were right before (Jorge Gallegos) -- Enabling stats log socket, and capabilities (Jorge Gallegos) - -* Thu Oct 03 2013 Jorge A Gallegos - 1.9.17-1 -- Copying the version changelog to top-level doc -- Compile with POSIX capabilities -- Embed the loggers into the binary itself, no need for an extra package -- Patching jvm plugin to support arm - -* Wed Oct 02 2013 Jorge A Gallegos - 1.9.17-0 -- Rebuilt for version 1.9.17 -- Pulling in new documentation from https://github.com/unbit/uwsgi-docs - -* Sun Aug 04 2013 Fedora Release Engineering - 1.9.8-1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Tue Apr 23 2013 Jorge A Gallegos - 1.9.8-0 -- Rebuilt with latest stable version from upstream - -* Thu Apr 11 2013 Jorge A Gallegos - 1.9.5-0 -- Rebuilt with latest stable version from upstream -- Added Erlang, PAM and JVM plugins -- Added router-related plugins -- Added logger plugins - -* Tue Apr 02 2013 Vít Ondruch - 1.2.6-10 -- Rebuild for https://fedoraproject.org/wiki/Features/Ruby_2.0.0 - -* Sat Mar 23 2013 Remi Collet - 1.2.6-9 -- rebuild for http://fedoraproject.org/wiki/Features/Php55 - -* Fri Feb 15 2013 Fedora Release Engineering - 1.2.6-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Thu Feb 14 2013 Jorge A Gallegos - 1.2.6-7 -- Tyrant mode shouldn't be used here, tyrant mode is root-only - -* Thu Dec 27 2012 Jorge A Gallegos - 1.2.6-6 -- Systemd now supports an exit status directive, fixing bugz 873382 - -* Fri Nov 9 2012 Remi Collet - 1.2.6-5 -- rebuild against new php embedded library soname (5.4) - -* Thu Oct 18 2012 Remi Collet - 1.2.6-4 -- rebuild for new PHP 5.4.8 - -* Wed Sep 19 2012 Jorge A Gallegos - 1.2.6-3 -- Dropped requirement on PHP for the PHP plugin - -* Sat Sep 15 2012 Jorge A Gallegos - 1.2.6-2 -- Rebuilt with new systemd macros - -* Sun Sep 09 2012 Jorge A Gallegos - 1.2.6-1 -- Updated to latest stable from upstream - -* Sat Aug 04 2012 David Malcolm - 1.2.4-4 -- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 - -* Sun Jul 22 2012 Fedora Release Engineering - 1.2.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Sun Jul 08 2012 Jorge A Gallegos - 1.2.4-1 -- Updated to latest stable from upstream - -* Tue Jun 26 2012 Jorge A Gallegos - 1.2.3-1 -- Updated to latest stable upstream -- Building the pytho3 plugin is a bit trickier now, but still possible -- Added PHP plugin -- Added Carbon plugin -- Added RRDTool plugin -- Added rsyslog plugin -- Added syslog plugin - -* Sun Feb 19 2012 Jorge A Gallegos - 1.0.4-1 -- Addressing issues from package review feedback -- s/python-devel/python2-devel -- Make the libdir subdir owned by -plugins-common -- Upgraded to latest stable upstream version - -* Mon Feb 06 2012 Jorge A Gallegos - 1.0.2.1-2 -- Fixing 'unstripped-binary-or-object' - -* Thu Jan 19 2012 Jorge A Gallegos - 1.0.2.1-1 -- New upstream version - -* Thu Dec 08 2011 Jorge A Gallegos - 0.9.9.3-1 -- New upstream version - -* Sun Oct 09 2011 Jorge A Gallegos - 0.9.9.2-2 -- Don't download the wiki page at build time - -* Sun Oct 09 2011 Jorge A Gallegos - 0.9.9.2-1 -- Updated to latest stable version -- Correctly linking plugin_dir -- Patches 1 and 2 were addressed upstream - -* Sun Aug 21 2011 Jorge A Gallegos - 0.9.8.3-3 -- Got rid of BuildRoot -- Got rid of defattr() - -* Sun Aug 14 2011 Jorge Gallegos - 0.9.8.3-2 -- Added uwsgi_fix_rpath.patch -- Backported json_loads patch to work with jansson 1.x and 2.x -- Deleted clean steps since they are not needed in fedora - -* Sun Jul 24 2011 Jorge Gallegos - 0.9.8.3-1 -- rebuilt -- Upgraded to latest stable version 0.9.8.3 -- Split packages - -* Sun Jul 17 2011 Jorge Gallegos - 0.9.6.8-2 -- Heavily modified based on Oskari's work - -* Mon Feb 28 2011 Oskari Saarenmaa - 0.9.6.8-1 -- Initial. diff --git a/uwsgi.sysusers b/uwsgi.sysusers deleted file mode 100644 index 30b5692..0000000 --- a/uwsgi.sysusers +++ /dev/null @@ -1 +0,0 @@ -u uwsgi - 'uWSGI daemon user' /run/uwsgi - diff --git a/uwsgi.tmpfiles b/uwsgi.tmpfiles deleted file mode 100644 index 293cea5..0000000 --- a/uwsgi.tmpfiles +++ /dev/null @@ -1 +0,0 @@ -d /run/uwsgi 0775 uwsgi uwsgi diff --git a/uwsgi_fix_chroot_chdir.patch b/uwsgi_fix_chroot_chdir.patch deleted file mode 100644 index 5fbbd46..0000000 --- a/uwsgi_fix_chroot_chdir.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -uNr a/core/utils.c b/core/utils.c ---- a/core/utils.c 2021-10-06 07:22:45.000000000 +0200 -+++ b/core/utils.c 2022-01-23 12:19:10.715602147 +0100 -@@ -593,6 +593,10 @@ - uwsgi_error("chroot()"); - exit(1); - } -+ if (chdir("/")) { -+ uwsgi_error("chdir()"); -+ exit(1); -+ } - uwsgi.is_chrooted = 1; - #ifdef __linux__ - if (uwsgi.logging_options.memory_report) { diff --git a/uwsgi_fix_gcc_format_signedness.patch b/uwsgi_fix_gcc_format_signedness.patch deleted file mode 100644 index 44daae1..0000000 --- a/uwsgi_fix_gcc_format_signedness.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff -uNr a/uwsgiconfig.py b/uwsgiconfig.py ---- a/uwsgiconfig.py 2024-02-09 21:30:45.436292711 +0100 -+++ b/uwsgiconfig.py 2024-02-09 21:32:29.607595604 +0100 -@@ -690,7 +690,27 @@ - '-D_LARGEFILE_SOURCE', - '-D_FILE_OFFSET_BITS=64' - ] -- if "gcc" in GCC: -+ -+ gcc_version = spcall("%s -dumpversion" % GCC) -+ if not gcc_version and GCC.startswith('gcc'): -+ if uwsgi_os == 'Darwin': -+ GCC = 'llvm-' + GCC -+ else: -+ GCC = 'gcc' -+ gcc_version = spcall("%s -dumpversion" % GCC) -+ -+ try: -+ gcc_version_components = gcc_version.split('.') -+ gcc_major = int(gcc_version_components[0]) -+ if len(gcc_version_components) > 1: -+ gcc_minor = int(gcc_version_components[1]) -+ else: -+ # gcc 5.0 is represented as simply "5" -+ gcc_minor = 0 -+ except Exception: -+ raise Exception("you need a C compiler to build uWSGI") -+ -+ if "gcc" in GCC and gcc_major >= 5: - cflags.append('-Wformat-signedness') - self.cflags = cflags + os.environ.get("CFLAGS", "").split() + self.get('cflags', '').split() - -@@ -710,14 +730,6 @@ - if uwsgi_os == 'GNU': - self.cflags.append('-D__HURD__') - -- gcc_version = spcall("%s -dumpversion" % GCC) -- if not gcc_version and GCC.startswith('gcc'): -- if uwsgi_os == 'Darwin': -- GCC = 'llvm-' + GCC -- else: -- GCC = 'gcc' -- gcc_version = spcall("%s -dumpversion" % GCC) -- - try: - add_it = False - cpp_include_list = str(spcall3("%s -v" % CPP)).split("\n") -@@ -750,16 +762,6 @@ - if not mute: - print("detected include path: %s" % self.include_path) - -- try: -- gcc_version_components = gcc_version.split('.') -- gcc_major = int(gcc_version_components[0]) -- if len(gcc_version_components) > 1: -- gcc_minor = int(gcc_version_components[1]) -- else: -- # gcc 5.0 is represented as simply "5" -- gcc_minor = 0 -- except: -- raise Exception("you need a C compiler to build uWSGI") - if (sys.version_info[0] == 2) or (gcc_major < 4) or (gcc_major == 4 and gcc_minor < 3): - self.cflags = self.cflags + ['-fno-strict-aliasing'] - # add -fno-strict-aliasing only on python2 and gcc < 4.3 diff --git a/uwsgi_fix_glusterfs_io_cb.patch b/uwsgi_fix_glusterfs_io_cb.patch deleted file mode 100644 index aa5d71b..0000000 --- a/uwsgi_fix_glusterfs_io_cb.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/plugins/glusterfs/glusterfs.c b/plugins/glusterfs/glusterfs.c -index 83428faf..c0063f4e 100644 ---- a/plugins/glusterfs/glusterfs.c -+++ b/plugins/glusterfs/glusterfs.c -@@ -46,7 +46,7 @@ struct uwsgi_glusterfs_async_io { - ssize_t rlen; - }; - --static void uwsgi_glusterfs_read_async_cb(glfs_fd_t *fd, ssize_t rlen, void *data) { -+static void uwsgi_glusterfs_read_async_cb(glfs_fd_t *fd, ssize_t rlen, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data) { - struct uwsgi_glusterfs_async_io *aio = (struct uwsgi_glusterfs_async_io *) data; - #ifdef UWSGI_DEBUG - uwsgi_log("[glusterfs-cb] rlen = %d\n", rlen); diff --git a/uwsgi_fix_jvm_missing_path.patch b/uwsgi_fix_jvm_missing_path.patch deleted file mode 100644 index 29960d8..0000000 --- a/uwsgi_fix_jvm_missing_path.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py ---- a/plugins/jvm/uwsgiplugin.py 2023-07-28 20:59:42.036749911 +0200 -+++ b/plugins/jvm/uwsgiplugin.py 2023-07-28 21:00:11.079400969 +0200 -@@ -36,7 +36,7 @@ - for jvm in known_jvms: - if os.path.exists(jvm + '/include'): - JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)] -- if os.path.exists("%s/jre"): -+ if os.path.exists("%s/jre" % jvm): - JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)] - else: - JVM_LIBPATH = ["-L%s/lib/server" % (jvm,)] diff --git a/uwsgi_fix_lua.patch b/uwsgi_fix_lua.patch deleted file mode 100644 index e2ef54d..0000000 --- a/uwsgi_fix_lua.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/plugins/lua/uwsgiplugin.py b/plugins/lua/uwsgiplugin.py -index 8aaa95b..d0e3cd0 100644 ---- a/plugins/lua/uwsgiplugin.py -+++ b/plugins/lua/uwsgiplugin.py -@@ -3,7 +3,7 @@ import os,sys - LUAINC = os.environ.get('UWSGICONFIG_LUAINC') - LUALIB = os.environ.get('UWSGICONFIG_LUALIB') - LUALIBPATH = os.environ.get('UWSGICONFIG_LUALIBPATH') --LUAPC = os.environ.get('UWSGICONFIG_LUAPC', 'lua5.1') -+LUAPC = os.environ.get('UWSGICONFIG_LUAPC', 'lua') - - # we LUAINC/LUALIB/LUALIBPATH override the LUAPC for backwards compat - if LUAINC: -@@ -12,7 +12,7 @@ else: - try: - CFLAGS = os.popen('pkg-config --cflags %s' % LUAPC).read().rstrip().split() - except: -- CFLAGS = ['-I/usr/include/lua5.1'] -+ CFLAGS = ['-I/usr/include/lua'] - - if LUALIB: - LIBS = ['-l%s' % LUALIB] -@@ -20,7 +20,7 @@ else: - try: - LIBS = os.popen('pkg-config --libs %s' % LUAPC).read().rstrip().split() - except: -- LIBS = ['-llua5.1'] -+ LIBS = ['-llua'] - - if LUALIBPATH: - LDFLAGS = ['-L%s' % LUALIBPATH] diff --git a/uwsgi_fix_mongodb.patch b/uwsgi_fix_mongodb.patch deleted file mode 100644 index 8b7b366..0000000 --- a/uwsgi_fix_mongodb.patch +++ /dev/null @@ -1,269 +0,0 @@ -From 83752e472c35632174534763dffd312fc120a429 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9F=D1=80?= - =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2?= - -Date: Fri, 10 Apr 2015 22:56:59 +0400 -Subject: [PATCH 1/3] Updated GridFS plugin to work with legacy - mongo-cxx-driver version 1.0.0 - ---- - plugins/gridfs/gridfs.cc | 53 +++++++++++++++++++++++++++++++++---------- - plugins/gridfs/uwsgiplugin.py | 7 +++--- - 2 files changed, 45 insertions(+), 15 deletions(-) - -diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc -index d11451a..81ff0d9 100644 ---- a/plugins/gridfs/gridfs.cc -+++ b/plugins/gridfs/gridfs.cc -@@ -1,3 +1,7 @@ -+#include -+#include -+#include -+ - #include - - #include -@@ -7,6 +11,7 @@ struct uwsgi_gridfs_mountpoint { - char *mountpoint; - uint16_t mountpoint_len; - char *server; -+ char *replica; - char *db; - char *timeout_str; - int timeout; -@@ -21,6 +26,7 @@ struct uwsgi_gridfs_mountpoint { - uint16_t prefix_len; - char *username; - char *password; -+ std::vector servers; - }; - - struct uwsgi_gridfs { -@@ -38,33 +44,44 @@ extern struct uwsgi_server uwsgi; - extern struct uwsgi_plugin gridfs_plugin; - - static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_mountpoint *ugm, char *itemname, int need_free) { -- - try { -- mongo::scoped_ptr conn( mongo::ScopedDbConnection::getScopedDbConnection(ugm->server, ugm->timeout) ); -+ std::unique_ptr conn; -+ -+ if (ugm->replica) { -+ conn = std::unique_ptr (new mongo::DBClientReplicaSet(ugm->replica, ugm->servers)); -+ dynamic_cast(conn.get())->connect(); -+ } -+ else { -+ conn = std::unique_ptr (new mongo::DBClientConnection()); -+ dynamic_cast(conn.get())->connect(ugm->server); -+ } -+ - try { - if (ugm->username && ugm->password) { - std::string errmsg; -- if ((*conn).conn().auth(ugm->db, ugm->username, ugm->password, errmsg)) { -+ if (!conn->auth(ugm->db, ugm->username, ugm->password, errmsg)) { - uwsgi_log("[uwsgi-gridfs]: %s\n", errmsg.c_str()); -- (*conn).done(); - uwsgi_403(wsgi_req); - return; - } - } -- mongo::GridFS gridfs((*conn).conn(), ugm->db); -- mongo::GridFile gfile = gridfs.findFile(itemname); -+ mongo::GridFS gridfs((*conn.get()), ugm->db); -+ mongo::GridFile gfile = gridfs.findFileByName(itemname); -+ - if (need_free) { - free(itemname); - itemname = NULL; - } -+ - if (!gfile.exists()) { -- (*conn).done(); - uwsgi_404(wsgi_req); - return; - } -+ - uwsgi_response_prepare_headers(wsgi_req, (char *)"200 OK", 6); - // first get the content_type (if possibile) - std::string filename = gfile.getFilename(); -+ - if (!ugm->no_mime) { - size_t mime_type_len = 0; - char *mime_type = uwsgi_get_mime_type((char *)filename.c_str(), filename.length(), &mime_type_len); -@@ -72,11 +89,13 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m - uwsgi_response_add_content_type(wsgi_req, mime_type, mime_type_len); - } - } -+ - if (ugm->orig_filename) { - char *filename_header = uwsgi_concat3((char *)"inline; filename=\"", (char *)filename.c_str(), (char *)"\""); - uwsgi_response_add_header(wsgi_req, (char *)"Content-Disposition", 19, filename_header, 19 + filename.length()); - free(filename_header); - } -+ - uwsgi_response_add_content_length(wsgi_req, gfile.getContentLength()); - - char http_last_modified[49]; -@@ -90,7 +109,7 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m - char *etag = uwsgi_concat3((char *)"\"", (char *)g_md5.c_str(), (char *)"\""); - uwsgi_response_add_header(wsgi_req, (char *)"ETag", 4, etag, 2+g_md5.length()); - free(etag); -- } -+ } - } - - if (ugm->md5) { -@@ -106,22 +125,20 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m - int i; - for(i=0;i -Date: Fri, 10 Apr 2015 23:07:41 +0400 -Subject: [PATCH 2/3] Fixed server list parsing - ---- - plugins/gridfs/gridfs.cc | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc -index 81ff0d9..f58d976 100644 ---- a/plugins/gridfs/gridfs.cc -+++ b/plugins/gridfs/gridfs.cc -@@ -211,6 +211,10 @@ static struct uwsgi_gridfs_mountpoint *uwsgi_gridfs_add_mountpoint(char *arg, si - ugm->servers.push_back(mongo::HostAndPort(buffer.substr(0, pos))); - buffer.erase(0, pos + 1); - } -+ -+ if (!ugm->servers.size()) { -+ ugm->servers.push_back(mongo::HostAndPort(ugm->server)); -+ } - } - - return ugm; --- -2.1.0 - - -From a870dbfb0dc4268cbcecf573765338ec5a52f195 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9F=D1=80?= - =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2?= - -Date: Fri, 10 Apr 2015 23:38:38 +0400 -Subject: [PATCH 3/3] Passing timeout argument to MongoDB connection - ---- - plugins/gridfs/gridfs.cc | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc -index f58d976..5f7c4ba 100644 ---- a/plugins/gridfs/gridfs.cc -+++ b/plugins/gridfs/gridfs.cc -@@ -48,14 +48,14 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m - std::unique_ptr conn; - - if (ugm->replica) { -- conn = std::unique_ptr (new mongo::DBClientReplicaSet(ugm->replica, ugm->servers)); -+ conn = std::unique_ptr (new mongo::DBClientReplicaSet(ugm->replica, ugm->servers, ugm->timeout)); - dynamic_cast(conn.get())->connect(); - } - else { -- conn = std::unique_ptr (new mongo::DBClientConnection()); -+ conn = std::unique_ptr (new mongo::DBClientConnection(true, 0, ugm->timeout)); - dynamic_cast(conn.get())->connect(ugm->server); - } -- -+ - try { - if (ugm->username && ugm->password) { - std::string errmsg; --- -2.1.0 - diff --git a/uwsgi_fix_mono.patch b/uwsgi_fix_mono.patch deleted file mode 100644 index bce3b1a..0000000 --- a/uwsgi_fix_mono.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -uNwr a/plugins/mono/uwsgiplugin.py b/plugins/mono/uwsgiplugin.py ---- a/plugins/mono/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/mono/uwsgiplugin.py 2022-10-27 20:47:38.791413699 +0200 -@@ -3,9 +3,9 @@ - - NAME = 'mono' - --CFLAGS = os.popen('pkg-config --cflags mono-2').read().rstrip().split() -+CFLAGS = os.popen('pkg-config --cflags mono-2 glib-2.0').read().rstrip().split() - LDFLAGS = [] --LIBS = os.popen('pkg-config --libs mono-2').read().rstrip().split() -+LIBS = os.popen('pkg-config --libs mono-2 glib-2.0').read().rstrip().split() - GCC_LIST = ['mono_plugin'] - - if os.uname()[0] == 'Darwin': diff --git a/uwsgi_fix_php8.patch b/uwsgi_fix_php8.patch deleted file mode 100644 index c968559..0000000 --- a/uwsgi_fix_php8.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -uNr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py ---- a/plugins/php/uwsgiplugin.py 2022-01-22 22:40:33.783038869 +0100 -+++ b/plugins/php/uwsgiplugin.py 2022-01-22 22:41:45.261394898 +0100 -@@ -20,7 +20,12 @@ - if ld_run_path: - LDFLAGS.append('-L%s' % ld_run_path) - --LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] -+# PHP8 and above does not add the version to the library -+# name -+if int(php_version) < 8: -+ LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] -+else: -+ LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp'] - - phplibdir = os.environ.get('UWSGICONFIG_PHPLIBDIR') - if phplibdir: diff --git a/uwsgi_fix_php81_filename_zend_string.patch b/uwsgi_fix_php81_filename_zend_string.patch deleted file mode 100644 index 81d9025..0000000 --- a/uwsgi_fix_php81_filename_zend_string.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 8ca18da9a01eee19156243c5c0d28d2572698e4a Mon Sep 17 00:00:00 2001 -From: Riccardo Magliocchetti -Date: Sun, 30 Jan 2022 14:31:50 +0100 -Subject: [PATCH] plugins/php: handle php8.1 zend_file_handle signature change - -filename is now a zend_string. - -Refs #2394 ---- - plugins/php/php_plugin.c | 17 +++++++++++------ - 1 file changed, 11 insertions(+), 6 deletions(-) - -diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c -index d336adddc..8b5a24156 100644 ---- a/plugins/php/php_plugin.c -+++ b/plugins/php/php_plugin.c -@@ -1096,14 +1096,19 @@ int uwsgi_php_request(struct wsgi_request *wsgi_req) { - - SG(request_info).path_translated = wsgi_req->file; - -- memset(&file_handle, 0, sizeof(zend_file_handle)); -- file_handle.type = ZEND_HANDLE_FILENAME; -- file_handle.filename = real_filename; -+#if PHP_VERSION_ID >= 80100 -+ zend_string *handle_filename = zend_string_init(real_filename, real_filename_len, 0); -+#else -+ const char *handle_filename = real_filename; -+#endif -+ memset(&file_handle, 0, sizeof(zend_file_handle)); -+ file_handle.type = ZEND_HANDLE_FILENAME; -+ file_handle.filename = handle_filename; - -- if (php_request_startup() == FAILURE) { -+ if (php_request_startup() == FAILURE) { - uwsgi_500(wsgi_req); -- return -1; -- } -+ return -1; -+ } - - struct uwsgi_string_list *usl=NULL; - diff --git a/uwsgi_fix_php82.patch b/uwsgi_fix_php82.patch deleted file mode 100644 index 66a8e49..0000000 --- a/uwsgi_fix_php82.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -uNr a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c ---- a/plugins/php/php_plugin.c 2022-10-06 19:52:07.237882916 +0200 -+++ b/plugins/php/php_plugin.c 2022-10-06 19:56:29.232418542 +0200 -@@ -607,7 +607,11 @@ - static int php_uwsgi_startup(sapi_module_struct *sapi_module) - { - -+#if PHP_VERSION_ID >= 80200 -+ if (php_module_startup(&uwsgi_sapi_module, &uwsgi_module_entry)==FAILURE) { -+#else - if (php_module_startup(&uwsgi_sapi_module, &uwsgi_module_entry, 1)==FAILURE) { -+#endif - return FAILURE; - } else { - return SUCCESS; diff --git a/uwsgi_fix_php83.patch b/uwsgi_fix_php83.patch deleted file mode 100644 index ed343a9..0000000 --- a/uwsgi_fix_php83.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 064984116e86ac0a5d5d3805765395b661fc4455 Mon Sep 17 00:00:00 2001 -From: Remi Collet -Date: Mon, 4 Sep 2023 13:10:52 +0200 -Subject: [PATCH] ini_entries is read-only PHP 8.3 - ---- - plugins/php/php_plugin.c | 18 ++++++++++-------- - 1 file changed, 10 insertions(+), 8 deletions(-) - -diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c -index b3efa006a..d9b615bac 100644 ---- a/plugins/php/php_plugin.c -+++ b/plugins/php/php_plugin.c -@@ -27,6 +27,7 @@ struct uwsgi_php { - char *fallback; - char *fallback2; - char *fallback_qs; -+ char *ini_entries; - size_t ini_size; - int dump_config; - char *server_software; -@@ -232,21 +233,22 @@ static sapi_module_struct uwsgi_sapi_module; - - void uwsgi_php_append_config(char *filename) { - size_t file_size = 0; -- char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL); -- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + file_size); -- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, file_content, file_size); -+ char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL); -+ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + file_size); -+ memcpy(uphp.ini_entries + uphp.ini_size, file_content, file_size); - uphp.ini_size += file_size-1; - free(file_content); -+ uwsgi_sapi_module.ini_entries = uphp.ini_entries; - } - - void uwsgi_php_set(char *opt) { - -- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + strlen(opt)+2); -- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, opt, strlen(opt)); -- -+ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + strlen(opt)+2); -+ memcpy(uphp.ini_entries + uphp.ini_size, opt, strlen(opt)); - uphp.ini_size += strlen(opt)+1; -- uwsgi_sapi_module.ini_entries[uphp.ini_size-1] = '\n'; -- uwsgi_sapi_module.ini_entries[uphp.ini_size] = 0; -+ uphp.ini_entries[uphp.ini_size-1] = '\n'; -+ uphp.ini_entries[uphp.ini_size] = 0; -+ uwsgi_sapi_module.ini_entries = uphp.ini_entries; - } - - extern ps_module ps_mod_uwsgi; diff --git a/uwsgi_fix_php_arginfo.patch b/uwsgi_fix_php_arginfo.patch deleted file mode 100644 index 5228066..0000000 --- a/uwsgi_fix_php_arginfo.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c -index 717d6317b..d336adddc 100644 ---- a/plugins/php/php_plugin.c -+++ b/plugins/php/php_plugin.c -@@ -497,21 +497,24 @@ PHP_FUNCTION(uwsgi_signal) { - RETURN_NULL(); - } - -+ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0) -+ZEND_END_ARG_INFO() -+ - zend_function_entry uwsgi_php_functions[] = { -- PHP_FE(uwsgi_version, NULL) -- PHP_FE(uwsgi_setprocname, NULL) -- PHP_FE(uwsgi_worker_id, NULL) -- PHP_FE(uwsgi_masterpid, NULL) -- PHP_FE(uwsgi_signal, NULL) -- -- PHP_FE(uwsgi_rpc, NULL) -- -- PHP_FE(uwsgi_cache_get, NULL) -- PHP_FE(uwsgi_cache_set, NULL) -- PHP_FE(uwsgi_cache_update, NULL) -- PHP_FE(uwsgi_cache_del, NULL) -- PHP_FE(uwsgi_cache_clear, NULL) -- PHP_FE(uwsgi_cache_exists, NULL) -+ PHP_FE(uwsgi_version, arginfo_void) -+ PHP_FE(uwsgi_setprocname, arginfo_void) -+ PHP_FE(uwsgi_worker_id, arginfo_void) -+ PHP_FE(uwsgi_masterpid, arginfo_void) -+ PHP_FE(uwsgi_signal, arginfo_void) -+ -+ PHP_FE(uwsgi_rpc, arginfo_void) -+ -+ PHP_FE(uwsgi_cache_get, arginfo_void) -+ PHP_FE(uwsgi_cache_set, arginfo_void) -+ PHP_FE(uwsgi_cache_update, arginfo_void) -+ PHP_FE(uwsgi_cache_del, arginfo_void) -+ PHP_FE(uwsgi_cache_clear, arginfo_void) -+ PHP_FE(uwsgi_cache_exists, arginfo_void) - { NULL, NULL, NULL}, - }; - diff --git a/uwsgi_fix_python_py_ssize_t.patch b/uwsgi_fix_python_py_ssize_t.patch deleted file mode 100644 index ec90175..0000000 --- a/uwsgi_fix_python_py_ssize_t.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -uNr a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h ---- a/plugins/python/uwsgi_python.h 2021-10-06 07:22:45.000000000 +0200 -+++ b/plugins/python/uwsgi_python.h 2022-02-19 18:39:10.929895062 +0100 -@@ -1,3 +1,7 @@ -+// This needs to be defined before Python.h is included -+// to indicate that the code uses Py_ssize_t properly -+#define PY_SSIZE_T_CLEAN -+ - #include - #include - diff --git a/uwsgi_fix_rpath.patch b/uwsgi_fix_rpath.patch deleted file mode 100644 index c05d4b8..0000000 --- a/uwsgi_fix_rpath.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py ---- a/plugins/jvm/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100 -+++ b/plugins/jvm/uwsgiplugin.py 2024-02-08 21:55:26.627134235 +0100 -@@ -69,11 +69,6 @@ - - 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 subprocess.call("javac %s/plugins/jvm/uwsgi.java" % os.getcwd(), shell=True) != 0: - os._exit(1) -diff -uNr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py ---- a/plugins/php/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100 -+++ b/plugins/php/uwsgiplugin.py 2024-02-08 21:56:28.630427541 +0100 -@@ -19,7 +19,6 @@ - - if ld_run_path: - LDFLAGS.append('-L%s' % ld_run_path) -- os.environ['LD_RUN_PATH'] = ld_run_path - - # PHP8 and above does not add the version to the library - # name -diff -uNr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py ---- a/plugins/python/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100 -+++ b/plugins/python/uwsgiplugin.py 2024-02-08 21:55:26.654133927 +0100 -@@ -88,9 +88,6 @@ - libdir = "%s/lib" % sysconfig.PREFIX - - LDFLAGS.append("-L%s" % libdir) -- LDFLAGS.append("-Wl,-rpath,%s" % libdir) -- -- os.environ['LD_RUN_PATH'] = "%s" % libdir - - LIBS.append('-lpython%s' % get_python_version()) - else: -diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100 -+++ b/plugins/rack/uwsgiplugin.py 2024-02-08 21:55:26.655133916 +0100 -@@ -48,7 +48,6 @@ - - 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: - rubylibdir = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['rubylibdir']\"").read().rstrip() -diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py ---- a/plugins/ruby19/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100 -+++ b/plugins/ruby19/uwsgiplugin.py 2024-02-08 21:55:26.655133916 +0100 -@@ -42,6 +42,5 @@ - - 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() - diff --git a/uwsgi_fix_ruby_taint.patch b/uwsgi_fix_ruby_taint.patch deleted file mode 100644 index df7fe16..0000000 --- a/uwsgi_fix_ruby_taint.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -uNr a/plugins/rack/rack_plugin.c b/plugins/rack/rack_plugin.c ---- a/plugins/rack/rack_plugin.c 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/rack/rack_plugin.c 2023-06-13 21:47:46.514179214 +0200 -@@ -456,7 +456,11 @@ - - static void rack_hack_dollar_zero(VALUE name, ID id) { - ur.dollar_zero = rb_obj_as_string(name); -+ // From ruby 2.7 onwards this is a noop, from ruby 3.2 onwards -+ // this function no longer exists -+#if !defined(RUBY27) - rb_obj_taint(ur.dollar_zero); -+#endif - } - - #ifndef RUBY19 diff --git a/uwsgi_gcc15-signal-handler.patch b/uwsgi_gcc15-signal-handler.patch deleted file mode 100644 index a36dc99..0000000 --- a/uwsgi_gcc15-signal-handler.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -uNr a/plugins/pty/pty.c b/plugins/pty/pty.c ---- a/plugins/pty/pty.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/plugins/pty/pty.c 2025-01-24 20:04:55.952597269 +0100 -@@ -259,7 +259,7 @@ - - } - --static void uwsgi_pty_winch() { -+static void uwsgi_pty_winch(int signum) { - // 2 uwsgi packets - char uwsgi_pkt[8]; - #ifdef TIOCGWINSZ -@@ -309,7 +309,7 @@ - if (upty.uremote) { - signal(SIGWINCH, uwsgi_pty_winch); - // send current terminal size -- uwsgi_pty_winch(); -+ uwsgi_pty_winch(0); - } - - upty.queue = event_queue_init(); -diff -uNr a/plugins/tuntap/tuntap.c b/plugins/tuntap/tuntap.c ---- a/plugins/tuntap/tuntap.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/plugins/tuntap/tuntap.c 2025-01-24 20:33:49.513449322 +0100 -@@ -409,7 +409,7 @@ - } - } - --static void uwsgi_tuntap_router() { -+static void uwsgi_tuntap_router(int (*_)(void *), char ** __) { - - if (!utt.routers) return; - diff --git a/uwsgi_python311.patch b/uwsgi_python311.patch deleted file mode 100644 index ddf0a3d..0000000 --- a/uwsgi_python311.patch +++ /dev/null @@ -1,174 +0,0 @@ -Add Python 3.11 support - -Backport of https://github.com/unbit/uwsgi/pull/2453 - -Resolves: rhbz#2099185 - -diff --git a/plugins/python/profiler.c b/plugins/python/profiler.c -index 92bc3da..2a7e1cc 100644 ---- a/plugins/python/profiler.c -+++ b/plugins/python/profiler.c -@@ -13,6 +13,14 @@ int PyFrame_GetLineNumber(PyFrameObject *frame) { - } - #endif - -+#if PY_VERSION_HEX < 0x030900B1 -+PyCodeObject* PyFrame_GetCode(PyFrameObject *frame) -+{ -+ Py_INCREF(frame->f_code); -+ return frame->f_code; -+} -+#endif -+ - #ifdef PYTHREE - #undef PyString_AsString - static char *PyString_AsString(PyObject *o) { -@@ -27,27 +35,32 @@ int uwsgi_python_profiler_call(PyObject *obj, PyFrameObject *frame, int what, Py - static uint64_t last_ts = 0; - uint64_t now = uwsgi_micros(); - uint64_t delta = 0; -+ PyCodeObject *code; - - switch(what) { - case PyTrace_CALL: - if (last_ts == 0) delta = 0; - else delta = now - last_ts; - last_ts = now; -+ code = PyFrame_GetCode(frame); - uwsgi_log("[uWSGI Python profiler %llu] CALL: %s (line %d) -> %s %d args, stacksize %d\n", - (unsigned long long) delta, -- PyString_AsString(frame->f_code->co_filename), -+ PyString_AsString(code->co_filename), - PyFrame_GetLineNumber(frame), -- PyString_AsString(frame->f_code->co_name), frame->f_code->co_argcount, frame->f_code->co_stacksize); -+ PyString_AsString(code->co_name), code->co_argcount, code->co_stacksize); -+ Py_DECREF(code); - break; - case PyTrace_C_CALL: - if (last_ts == 0) delta = 0; - else delta = now - last_ts; - last_ts = now; -+ code = PyFrame_GetCode(frame); - uwsgi_log("[uWSGI Python profiler %llu] C CALL: %s (line %d) -> %s %d args, stacksize %d\n", - (unsigned long long) delta, -- PyString_AsString(frame->f_code->co_filename), -+ PyString_AsString(code->co_filename), - PyFrame_GetLineNumber(frame), -- PyEval_GetFuncName(arg), frame->f_code->co_argcount, frame->f_code->co_stacksize); -+ PyEval_GetFuncName(arg), code->co_argcount, code->co_stacksize); -+ Py_DECREF(code); - break; - } - -@@ -68,7 +81,9 @@ int uwsgi_python_tracer(PyObject *obj, PyFrameObject *frame, int what, PyObject - delta = now - last_ts; - } - last_ts = now; -- uwsgi_log("[uWSGI Python profiler %llu] file %s line %d: %s argc:%d\n", (unsigned long long)delta, PyString_AsString(frame->f_code->co_filename), PyFrame_GetLineNumber(frame), PyString_AsString(frame->f_code->co_name), frame->f_code->co_argcount); -+ PyCodeObject *code = PyFrame_GetCode(frame); -+ uwsgi_log("[uWSGI Python profiler %llu] file %s line %d: %s argc:%d\n", (unsigned long long)delta, PyString_AsString(code->co_filename), PyFrame_GetLineNumber(frame), PyString_AsString(code->co_name), code->co_argcount); -+ Py_DECREF(code); - } - - return 0; -diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c -index 6834f84..1d21c0d 100644 ---- a/plugins/python/python_plugin.c -+++ b/plugins/python/python_plugin.c -@@ -1137,9 +1137,13 @@ void uwsgi_python_init_apps() { - } - - // prepare for stack suspend/resume -- if (uwsgi.async > 1) { -+ if (uwsgi.async > 0) { -+#ifdef UWSGI_PY311 -+ up.current_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async); -+#else - up.current_recursion_depth = uwsgi_malloc(sizeof(int)*uwsgi.async); -- up.current_frame = uwsgi_malloc(sizeof(struct _frame)*uwsgi.async); -+#endif -+ up.current_frame = uwsgi_malloc(sizeof(up.current_frame[0])*uwsgi.async); - } - - // setup app loaders -@@ -1530,12 +1534,22 @@ void uwsgi_python_suspend(struct wsgi_request *wsgi_req) { - PyGILState_Release(pgst); - - if (wsgi_req) { -+#ifdef UWSGI_PY311 -+ up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining; -+ up.current_frame[wsgi_req->async_id] = tstate->cframe; -+#else - up.current_recursion_depth[wsgi_req->async_id] = tstate->recursion_depth; - up.current_frame[wsgi_req->async_id] = tstate->frame; -+#endif - } - else { -+#ifdef UWSGI_PY311 -+ up.current_main_recursion_remaining = tstate->recursion_remaining; -+ up.current_main_frame = tstate->cframe; -+#else - up.current_main_recursion_depth = tstate->recursion_depth; - up.current_main_frame = tstate->frame; -+#endif - } - - } -@@ -1763,12 +1777,22 @@ void uwsgi_python_resume(struct wsgi_request *wsgi_req) { - PyGILState_Release(pgst); - - if (wsgi_req) { -+#ifdef UWSGI_PY311 -+ tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id]; -+ tstate->cframe = up.current_frame[wsgi_req->async_id]; -+#else - tstate->recursion_depth = up.current_recursion_depth[wsgi_req->async_id]; - tstate->frame = up.current_frame[wsgi_req->async_id]; -+#endif - } - else { -+#ifdef UWSGI_PY311 -+ tstate->recursion_remaining = up.current_main_recursion_remaining; -+ tstate->cframe = up.current_main_frame; -+#else - tstate->recursion_depth = up.current_main_recursion_depth; - tstate->frame = up.current_main_frame; -+#endif - } - - } -diff --git a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h -index 357d731..6c6f7a4 100644 ---- a/plugins/python/uwsgi_python.h -+++ b/plugins/python/uwsgi_python.h -@@ -18,6 +18,10 @@ - #define UWSGI_PYTHON_OLD - #endif - -+#if (PY_VERSION_HEX >= 0x030b0000) -+# define UWSGI_PY311 -+#endif -+ - #if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7 - #define HAS_NOT_PyMemoryView_FromBuffer - #endif -@@ -165,11 +169,19 @@ struct uwsgi_python { - - char *callable; - -+#ifdef UWSGI_PY311 -+ int *current_recursion_remaining; -+ _PyCFrame **current_frame; -+ -+ int current_main_recursion_remaining; -+ _PyCFrame *current_main_frame; -+#else - int *current_recursion_depth; - struct _frame **current_frame; - - int current_main_recursion_depth; - struct _frame *current_main_frame; -+#endif - - void (*swap_ts)(struct wsgi_request *, struct uwsgi_app *); - void (*reset_ts)(struct wsgi_request *, struct uwsgi_app *); diff --git a/uwsgi_python312-2.patch b/uwsgi_python312-2.patch deleted file mode 100644 index 7a2d6b3..0000000 --- a/uwsgi_python312-2.patch +++ /dev/null @@ -1,82 +0,0 @@ -diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c -index de92f34c..08d99a96 100644 ---- a/plugins/python/python_plugin.c -+++ b/plugins/python/python_plugin.c -@@ -233,21 +233,6 @@ void uwsgi_python_pthread_child(void) { - PyMethodDef uwsgi_spit_method[] = { {"uwsgi_spit", py_uwsgi_spit, METH_VARARGS, ""} }; - PyMethodDef uwsgi_write_method[] = { {"uwsgi_write", py_uwsgi_write, METH_VARARGS, ""} }; - --PyDoc_STRVAR(uwsgi_py_doc, "uWSGI api module."); -- --#ifdef PYTHREE --static PyModuleDef uwsgi_module3 = { -- PyModuleDef_HEAD_INIT, -- "uwsgi", -- uwsgi_py_doc, -- -1, -- NULL, --}; --PyObject *init_uwsgi3(void) { -- return PyModule_Create(&uwsgi_module3); --} --#endif -- - int uwsgi_python_init() { - - char *pyversion = strchr(Py_GetVersion(), '\n'); -@@ -313,9 +298,6 @@ pep405: - wchar_t *pname = uwsgi_calloc(sizeof(wchar_t) * (strlen(program_name)+1)); - mbstowcs(pname, program_name, strlen(program_name)+1); - Py_SetProgramName(pname); --#ifdef UWSGI_PY312 -- PyImport_AppendInittab("uwsgi", init_uwsgi3); --#endif - #else - Py_SetProgramName(program_name); - #endif -@@ -678,6 +660,21 @@ next: - - - -+PyDoc_STRVAR(uwsgi_py_doc, "uWSGI api module."); -+ -+#ifdef PYTHREE -+static PyModuleDef uwsgi_module3 = { -+ PyModuleDef_HEAD_INIT, -+ "uwsgi", -+ uwsgi_py_doc, -+ -1, -+ NULL, -+}; -+PyObject *init_uwsgi3(void) { -+ return PyModule_Create(&uwsgi_module3); -+} -+#endif -+ - void init_uwsgi_embedded_module() { - PyObject *new_uwsgi_module, *zero; - int i; -@@ -698,10 +695,21 @@ void init_uwsgi_embedded_module() { - - - #ifdef PYTHREE --#ifndef UWSGI_PY312 -+# ifndef UWSGI_PY312 - PyImport_AppendInittab("uwsgi", init_uwsgi3); --#endif - new_uwsgi_module = PyImport_AddModule("uwsgi"); -+# else -+ // From python 3.12 onwards, PyImport_AppendInittab() can no -+ // longer be called after Py_Initialize(). Instead, dynamically -+ // add the module instead -+ PyObject *sys_modules; -+ PyImport_AddModule("uwsgi"); -+ new_uwsgi_module = init_uwsgi3(); -+ sys_modules = PyImport_GetModuleDict(); -+ PyDict_SetItemString(sys_modules, "uwsgi", new_uwsgi_module); -+ Py_DECREF(new_uwsgi_module); -+ -+# endif - #else - new_uwsgi_module = Py_InitModule3("uwsgi", NULL, uwsgi_py_doc); - #endif diff --git a/uwsgi_python312.patch b/uwsgi_python312.patch deleted file mode 100644 index 7595cd2..0000000 --- a/uwsgi_python312.patch +++ /dev/null @@ -1,152 +0,0 @@ -diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c ---- a/plugins/python/python_plugin.c 2023-07-27 17:34:12.000000000 +0200 -+++ b/plugins/python/python_plugin.c 2023-09-30 18:30:47.884490233 +0200 -@@ -197,6 +197,7 @@ - PyMethodDef uwsgi_spit_method[] = { {"uwsgi_spit", py_uwsgi_spit, METH_VARARGS, ""} }; - PyMethodDef uwsgi_write_method[] = { {"uwsgi_write", py_uwsgi_write, METH_VARARGS, ""} }; - -+PyObject *init_uwsgi3(void); - int uwsgi_python_init() { - - char *pyversion = strchr(Py_GetVersion(), '\n'); -@@ -261,6 +262,9 @@ - wchar_t *pname = uwsgi_calloc(sizeof(wchar_t) * (strlen(program_name)+1)); - mbstowcs(pname, program_name, strlen(program_name)+1); - Py_SetProgramName(pname); -+#ifdef UWSGI_PY312 -+ PyImport_AppendInittab("uwsgi", init_uwsgi3); -+#endif - #else - Py_SetProgramName(program_name); - #endif -@@ -658,7 +662,9 @@ - - - #ifdef PYTHREE -+#ifndef UWSGI_PY312 - PyImport_AppendInittab("uwsgi", init_uwsgi3); -+#endif - new_uwsgi_module = PyImport_AddModule("uwsgi"); - #else - new_uwsgi_module = Py_InitModule3("uwsgi", NULL, uwsgi_py_doc); -@@ -1161,7 +1167,10 @@ - - // prepare for stack suspend/resume - if (uwsgi.async > 1) { --#ifdef UWSGI_PY311 -+#ifdef UWSGI_PY312 -+ up.current_c_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async); -+ up.current_py_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async); -+#elif defined UWSGI_PY311 - up.current_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async); - #else - up.current_recursion_depth = uwsgi_malloc(sizeof(int)*uwsgi.async); -@@ -1324,7 +1333,12 @@ - // Acquire the gil and import lock before forking in order to avoid - // deadlocks in workers - UWSGI_GET_GIL -+#if defined UWSGI_PY312 -+ PyInterpreterState *interp = PyInterpreterState_Get(); -+ _PyImport_AcquireLock(interp); -+#else - _PyImport_AcquireLock(); -+#endif - } - } - -@@ -1336,7 +1350,12 @@ - if (uwsgi.has_threads) { - if (step == 0) { - // Release locks within master process -+#if defined UWSGI_PY312 -+ PyInterpreterState *interp = PyInterpreterState_Get(); -+ _PyImport_ReleaseLock(interp); -+#else - _PyImport_ReleaseLock(); -+#endif - UWSGI_RELEASE_GIL - } - else { -@@ -1592,7 +1611,11 @@ - PyGILState_Release(pgst); - - if (wsgi_req) { --#ifdef UWSGI_PY311 -+#ifdef UWSGI_PY312 -+ up.current_c_recursion_remaining[wsgi_req->async_id] = tstate->c_recursion_remaining; -+ up.current_py_recursion_remaining[wsgi_req->async_id] = tstate->py_recursion_remaining; -+ up.current_frame[wsgi_req->async_id] = tstate->cframe; -+#elif defined UWSGI_PY311 - up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining; - up.current_frame[wsgi_req->async_id] = tstate->cframe; - #else -@@ -1601,7 +1624,11 @@ - #endif - } - else { --#ifdef UWSGI_PY311 -+#ifdef UWSGI_PY312 -+ up.current_main_c_recursion_remaining = tstate->c_recursion_remaining; -+ up.current_main_py_recursion_remaining = tstate->py_recursion_remaining; -+ up.current_main_frame = tstate->cframe; -+#elif defined UWSGI_PY311 - up.current_main_recursion_remaining = tstate->recursion_remaining; - up.current_main_frame = tstate->cframe; - #else -@@ -1835,7 +1862,11 @@ - PyGILState_Release(pgst); - - if (wsgi_req) { --#ifdef UWSGI_PY311 -+#ifdef UWSGI_PY312 -+ tstate->c_recursion_remaining = up.current_c_recursion_remaining[wsgi_req->async_id]; -+ tstate->py_recursion_remaining = up.current_py_recursion_remaining[wsgi_req->async_id]; -+ tstate->cframe = up.current_frame[wsgi_req->async_id]; -+#elif defined UWSGI_PY311 - tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id]; - tstate->cframe = up.current_frame[wsgi_req->async_id]; - #else -@@ -1844,7 +1875,11 @@ - #endif - } - else { --#ifdef UWSGI_PY311 -+#ifdef UWSGI_PY312 -+ tstate->c_recursion_remaining = up.current_main_c_recursion_remaining; -+ tstate->py_recursion_remaining = up.current_main_py_recursion_remaining; -+ tstate->cframe = up.current_main_frame; -+#elif defined UWSGI_PY311 - tstate->recursion_remaining = up.current_main_recursion_remaining; - tstate->cframe = up.current_main_frame; - #else -diff -uNr a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h ---- a/plugins/python/uwsgi_python.h 2023-07-27 17:34:12.000000000 +0200 -+++ b/plugins/python/uwsgi_python.h 2023-09-30 18:30:24.766699317 +0200 -@@ -21,6 +21,10 @@ - # define UWSGI_PY311 - #endif - -+#if (PY_VERSION_HEX >= 0x030c0000) -+# define UWSGI_PY312 -+#endif -+ - #if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7 - #define HAS_NOT_PyMemoryView_FromBuffer - #endif -@@ -168,7 +172,15 @@ - - char *callable; - --#ifdef UWSGI_PY311 -+#ifdef UWSGI_PY312 -+ int *current_c_recursion_remaining; -+ int *current_py_recursion_remaining; -+ _PyCFrame **current_frame; -+ -+ int current_main_c_recursion_remaining; -+ int current_main_py_recursion_remaining; -+ _PyCFrame *current_main_frame; -+#elif defined UWSGI_PY311 - int *current_recursion_remaining; - _PyCFrame **current_frame; - diff --git a/uwsgi_python313.patch b/uwsgi_python313.patch deleted file mode 100644 index 6031408..0000000 --- a/uwsgi_python313.patch +++ /dev/null @@ -1,193 +0,0 @@ -diff -uNr a/core/init.c b/core/init.c ---- a/core/init.c 2024-06-01 20:40:38.000000000 +0200 -+++ b/core/init.c 2024-08-13 09:56:13.152870522 +0200 -@@ -432,8 +432,8 @@ - uwsgi.cores = uwsgi.async; - } - -+ uwsgi.has_threads = 1; - if (uwsgi.threads > 1) { -- uwsgi.has_threads = 1; - uwsgi.cores = uwsgi.threads; - } - -diff -uNr a/core/uwsgi.c b/core/uwsgi.c ---- a/core/uwsgi.c 2024-06-01 20:40:38.000000000 +0200 -+++ b/core/uwsgi.c 2024-08-13 09:56:13.156870522 +0200 -@@ -197,7 +197,7 @@ - {"freebind", no_argument, 0, "put socket in freebind mode", uwsgi_opt_true, &uwsgi.freebind, 0}, - #endif - {"map-socket", required_argument, 0, "map sockets to specific workers", uwsgi_opt_add_string_list, &uwsgi.map_socket, 0}, -- {"enable-threads", no_argument, 'T', "enable threads", uwsgi_opt_true, &uwsgi.has_threads, 0}, -+ {"enable-threads", no_argument, 'T', "enable threads (stub option this is true by default)", uwsgi_opt_true, &uwsgi.has_threads, 0}, - {"no-threads-wait", no_argument, 0, "do not wait for threads cancellation on quit/reload", uwsgi_opt_true, &uwsgi.no_threads_wait, 0}, - - {"auto-procname", no_argument, 0, "automatically set processes name to something meaningful", uwsgi_opt_true, &uwsgi.auto_procname, 0}, -diff -uNr a/.github/workflows/test.yml b/.github/workflows/test.yml ---- a/.github/workflows/test.yml 2024-06-01 20:40:38.000000000 +0200 -+++ b/.github/workflows/test.yml 2024-08-13 09:56:13.152870522 +0200 -@@ -37,7 +37,7 @@ - runs-on: ubuntu-20.04 - strategy: - matrix: -- python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] -+ python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] - test-suite: [python, deadlocks] - steps: - - name: Add deadnakes ppa -diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c ---- a/plugins/python/python_plugin.c 2024-08-13 09:55:30.374870522 +0200 -+++ b/plugins/python/python_plugin.c 2024-08-13 10:00:36.315870522 +0200 -@@ -406,7 +406,7 @@ - // reset python signal flags so child processes can trap signals - // Necessary if uwsgi fork hooks not called to update interpreter state - if (!up.call_uwsgi_fork_hooks && up.call_osafterfork) { --#ifdef HAS_NOT_PyOS_AfterFork_Child -+#ifdef HAS_NOT_PYOS_FORK_STABLE_API - PyOS_AfterFork(); - #else - PyOS_AfterFork_Child(); -@@ -1340,11 +1340,10 @@ - // Acquire the gil and import lock before forking in order to avoid - // deadlocks in workers - UWSGI_GET_GIL --#if defined UWSGI_PY312 -- PyInterpreterState *interp = PyInterpreterState_Get(); -- _PyImport_AcquireLock(interp); --#else -+#ifdef HAS_NOT_PYOS_FORK_STABLE_API - _PyImport_AcquireLock(); -+#else -+ PyOS_BeforeFork(); - #endif - } - } -@@ -1357,17 +1356,16 @@ - if (uwsgi.has_threads) { - if (step == 0) { - // Release locks within master process --#if defined UWSGI_PY312 -- PyInterpreterState *interp = PyInterpreterState_Get(); -- _PyImport_ReleaseLock(interp); --#else -+#ifdef HAS_NOT_PYOS_FORK_STABLE_API - _PyImport_ReleaseLock(); -+#else -+ PyOS_AfterFork_Parent(); - #endif - UWSGI_RELEASE_GIL - } - else { - // Ensure thread state and locks are cleaned up in child process --#ifdef HAS_NOT_PyOS_AfterFork_Child -+#ifdef HAS_NOT_PYOS_FORK_STABLE_API - PyOS_AfterFork(); - #else - PyOS_AfterFork_Child(); -@@ -1618,7 +1616,11 @@ - PyGILState_Release(pgst); - - if (wsgi_req) { --#ifdef UWSGI_PY312 -+#ifdef UWSGI_PY313 -+ up.current_c_recursion_remaining[wsgi_req->async_id] = tstate->c_recursion_remaining; -+ up.current_py_recursion_remaining[wsgi_req->async_id] = tstate->py_recursion_remaining; -+ up.current_frame[wsgi_req->async_id] = tstate->current_frame; -+#elif defined UWSGI_PY312 - up.current_c_recursion_remaining[wsgi_req->async_id] = tstate->c_recursion_remaining; - up.current_py_recursion_remaining[wsgi_req->async_id] = tstate->py_recursion_remaining; - up.current_frame[wsgi_req->async_id] = tstate->cframe; -@@ -1631,7 +1633,11 @@ - #endif - } - else { --#ifdef UWSGI_PY312 -+#ifdef UWSGI_PY313 -+ up.current_main_c_recursion_remaining = tstate->c_recursion_remaining; -+ up.current_main_py_recursion_remaining = tstate->py_recursion_remaining; -+ up.current_main_frame = tstate->current_frame; -+#elif defined UWSGI_PY312 - up.current_main_c_recursion_remaining = tstate->c_recursion_remaining; - up.current_main_py_recursion_remaining = tstate->py_recursion_remaining; - up.current_main_frame = tstate->cframe; -@@ -1871,7 +1877,11 @@ - PyGILState_Release(pgst); - - if (wsgi_req) { --#ifdef UWSGI_PY312 -+#ifdef UWSGI_PY313 -+ tstate->c_recursion_remaining = up.current_c_recursion_remaining[wsgi_req->async_id]; -+ tstate->py_recursion_remaining = up.current_py_recursion_remaining[wsgi_req->async_id]; -+ tstate->current_frame = up.current_frame[wsgi_req->async_id]; -+#elif defined UWSGI_PY312 - tstate->c_recursion_remaining = up.current_c_recursion_remaining[wsgi_req->async_id]; - tstate->py_recursion_remaining = up.current_py_recursion_remaining[wsgi_req->async_id]; - tstate->cframe = up.current_frame[wsgi_req->async_id]; -@@ -1884,7 +1894,11 @@ - #endif - } - else { --#ifdef UWSGI_PY312 -+#ifdef UWSGI_PY313 -+ tstate->c_recursion_remaining = up.current_main_c_recursion_remaining; -+ tstate->py_recursion_remaining = up.current_main_py_recursion_remaining; -+ tstate->current_frame = up.current_main_frame; -+#elif defined UWSGI_PY312 - tstate->c_recursion_remaining = up.current_main_c_recursion_remaining; - tstate->py_recursion_remaining = up.current_main_py_recursion_remaining; - tstate->cframe = up.current_main_frame; -@@ -2098,7 +2112,7 @@ - // ensure signals can be used again from python - // Necessary if fork hooks have been not used to update interpreter state - if (!up.call_osafterfork && !up.call_uwsgi_fork_hooks) --#ifdef HAS_NOT_PyOS_AfterFork_Child -+#ifdef HAS_NOT_PYOS_FORK_STABLE_API - PyOS_AfterFork(); - #else - PyOS_AfterFork_Child(); -diff -uNr a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h ---- a/plugins/python/uwsgi_python.h 2024-06-01 20:40:38.000000000 +0200 -+++ b/plugins/python/uwsgi_python.h 2024-08-13 10:04:58.492870522 +0200 -@@ -25,6 +25,10 @@ - # define UWSGI_PY312 - #endif - -+#if (PY_VERSION_HEX >= 0x030d0000) -+# define UWSGI_PY313 -+#endif -+ - #if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7 - #define HAS_NOT_PyMemoryView_FromBuffer - #endif -@@ -41,12 +45,8 @@ - #define HAS_NO_ERRORS_IN_PyFile_FromFd - #endif - --#if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 7 --#define HAS_NOT_PyOS_AfterFork_Child --#endif -- --#if PY_MAJOR_VERSION < 3 --#define HAS_NOT_PyOS_AfterFork_Child -+#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 7) || PY_MAJOR_VERSION < 3 -+#define HAS_NOT_PYOS_FORK_STABLE_API - #endif - - #if PY_MAJOR_VERSION > 2 -@@ -172,7 +172,15 @@ - - char *callable; - --#ifdef UWSGI_PY312 -+#ifdef UWSGI_PY313 -+ int *current_c_recursion_remaining; -+ int *current_py_recursion_remaining; -+ struct _PyInterpreterFrame **current_frame; -+ -+ int current_main_c_recursion_remaining; -+ int current_main_py_recursion_remaining; -+ struct _PyInterpreterFrame *current_main_frame; -+#elif defined UWSGI_PY312 - int *current_c_recursion_remaining; - int *current_py_recursion_remaining; - _PyCFrame **current_frame; diff --git a/uwsgi_ruby20_compatibility.patch b/uwsgi_ruby20_compatibility.patch deleted file mode 100644 index 6fdaa02..0000000 --- a/uwsgi_ruby20_compatibility.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2023-07-28 20:02:57.242903528 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2023-07-28 20:05:59.933863052 +0200 -@@ -10,14 +10,14 @@ - rbconfig = 'Config' - - version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() --v = version.split('.') -+v = tuple(int(x) for x in version.split('.')) - - GCC_LIST = ['rack_plugin', 'rack_api'] - --if (v[0] == '1' and v[1] == '9') or v[0] >= '2': -+if v >= (1, 9): - CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() - CFLAGS.append('-DRUBY19') -- if version >= '2.7': -+ if v >= (2, 7): - CFLAGS.append('-DRUBY27') - CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' -diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py ---- a/plugins/ruby19/uwsgiplugin.py 2023-07-28 20:02:57.242903528 +0200 -+++ b/plugins/ruby19/uwsgiplugin.py 2023-07-28 20:05:11.560403332 +0200 -@@ -10,14 +10,14 @@ - rbconfig = 'Config' - - version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() --v = version.split('.') -+v = tuple(int(x) for x in version.split('.')) - - GCC_LIST = ['../rack/rack_plugin', '../rack/rack_api'] - --if (v[0] == '1' and v[1] == '9') or v[0] >= '2': -+if v >= (1, 9): - CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() - CFLAGS.append('-DRUBY19') -- if version >= '2.7': -+ if v >= (2, 7): - CFLAGS.append('-DRUBY27') - CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' diff --git a/uwsgi_trick_chroot_rpmbuild.patch b/uwsgi_trick_chroot_rpmbuild.patch deleted file mode 100644 index c23c06f..0000000 --- a/uwsgi_trick_chroot_rpmbuild.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/uwsgiconfig.py b/uwsgiconfig.py -index 59393e1..e43f092 100644 ---- a/uwsgiconfig.py -+++ b/uwsgiconfig.py -@@ -1422,10 +1422,7 @@ def build_plugin(path, uc, cflags, ldflags, libs, name = None): - except: - pass - -- if uc: -- plugin_dest = uc.get('plugin_build_dir', uc.get('plugin_dir')) + '/' + name + '_plugin' -- else: -- plugin_dest = name + '_plugin' -+ plugin_dest = name + '_plugin' - - shared_flag = '-shared' - diff --git a/uwsgi_v8-314_compatibility.patch b/uwsgi_v8-314_compatibility.patch deleted file mode 100644 index 63df56f..0000000 --- a/uwsgi_v8-314_compatibility.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naurp a/plugins/v8/uwsgiplugin.py b/plugins/v8/uwsgiplugin.py ---- a/plugins/v8/uwsgiplugin.py 2016-05-12 12:37:49.000000000 -0500 -+++ b/plugins/v8/uwsgiplugin.py 2016-08-01 22:56:50.969785338 -0500 -@@ -1,7 +1,7 @@ - import os - NAME='v8' - --CFLAGS = ['-Wno-deprecated-declarations'] -+CFLAGS = ['-Wno-deprecated-declarations', '-I/usr/include/v8-3.14'] - LDFLAGS = [] - LIBS = ['-lstdc++', '-lv8'] - engine = os.environ.get('UWSGICONFIG_V8_ENGINE', '')