From 168dba046ff10a9a4761f9b958359fc9f0dbdbef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 15 Sep 2020 16:02:41 +0200 Subject: [PATCH 01/87] Rebuilt for libevent soname change --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index c3d89e8..7a09744 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -131,7 +131,7 @@ Name: uwsgi Version: 2.0.18 -Release: 13%{?dist} +Release: 14%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1775,6 +1775,9 @@ fi %changelog +* 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 From 930caad53a2ff37b07d19b32a34c5df262f5b55d Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Wed, 6 Jan 2021 20:25:37 +0900 Subject: [PATCH 02/87] F-34: rebuild against ruby 3.0 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 7a09744..dd91f9c 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -131,7 +131,7 @@ Name: uwsgi Version: 2.0.18 -Release: 14%{?dist} +Release: 15%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1775,6 +1775,9 @@ fi %changelog +* 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 From 19f789b571449c0e12f2ef25061155c1701dc9dd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 22:51:21 +0000 Subject: [PATCH 03/87] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index dd91f9c..5b8bc5b 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -131,7 +131,7 @@ Name: uwsgi Version: 2.0.18 -Release: 15%{?dist} +Release: 16%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1775,6 +1775,9 @@ fi %changelog +* 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 From c9429687f822e1cc5d7dc3ab5a6d40a5bb910018 Mon Sep 17 00:00:00 2001 From: Michael Scherer Date: Sun, 14 Feb 2021 09:56:00 +0100 Subject: [PATCH 04/87] Fix description for uwsgi-alarm-xmpp --- uwsgi.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 5b8bc5b..d78c514 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -369,7 +369,7 @@ Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl This package contains the alarm_curl alarm plugin for uWSGI %package -n uwsgi-alarm-xmpp -Summary: uWSGI - Curl alarm plugin +Summary: uWSGI - XMPP alarm plugin Requires: uwsgi-plugin-common = %{version}-%{release}, gloox %description -n uwsgi-alarm-xmpp From 531ba5952347dbec4078056692b0b581916aa68b Mon Sep 17 00:00:00 2001 From: Tomas Hrnciar Date: Mon, 19 Apr 2021 13:18:32 +0200 Subject: [PATCH 05/87] BuildRequire setuptools explicitly See https://fedoraproject.org/wiki/Changes/Reduce_dependencies_on_python3-setuptools --- uwsgi.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/uwsgi.spec b/uwsgi.spec index d78c514..d9ea5f5 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -175,6 +175,7 @@ BuildRequires: python-greenlet-devel %endif %if %{with python3} BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-greenlet-devel %endif %if %{with python3_other} From 7401d4cffd30a85798a81bd22ddc61f96ba6d53c Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Fri, 21 May 2021 23:09:36 +0200 Subject: [PATCH 06/87] Perl 5.34 rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index d9ea5f5..14e2e7f 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -131,7 +131,7 @@ Name: uwsgi Version: 2.0.18 -Release: 16%{?dist} +Release: 17%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1776,6 +1776,9 @@ fi %changelog +* Fri May 21 2021 Jitka Plesnikova - 2.0.18-17 +- Perl 5.34 rebuild + * Wed Jan 27 2021 Fedora Release Engineering - 2.0.18-16 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From e4283b49ff55c3698df200474ee0ecb57be4b223 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 4 Jun 2021 21:19:09 +0200 Subject: [PATCH 07/87] Rebuilt for Python 3.10 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 14e2e7f..b734b5b 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -131,7 +131,7 @@ Name: uwsgi Version: 2.0.18 -Release: 17%{?dist} +Release: 18%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1776,6 +1776,9 @@ fi %changelog +* Fri Jun 04 2021 Python Maint - 2.0.18-18 +- Rebuilt for Python 3.10 + * Fri May 21 2021 Jitka Plesnikova - 2.0.18-17 - Perl 5.34 rebuild From a94cfe59a94983bd30a50ae428f9a848440f3ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Thu, 17 Jun 2021 02:06:02 +0200 Subject: [PATCH 08/87] Orphaned for 6+ weeks --- .gitignore | 48 - README.Fedora | 6 - dead.package | 1 + emperor.ini | 7 - fedora.ini | 81 - sources | 2 - uwsgi-2.0.16-glfs.patch | 10 - uwsgi.init | 92 -- uwsgi.service | 16 - uwsgi.spec | 2333 ----------------------------- uwsgi.tmpfiles | 1 - uwsgi_fix_lua.patch | 31 - uwsgi_fix_mongodb.patch | 269 ---- uwsgi_fix_mono.patch | 15 - uwsgi_fix_php74_zend.patch | 16 - uwsgi_fix_psgi.patch | 38 - uwsgi_fix_rpath.patch | 64 - uwsgi_ruby20_compatibility.patch | 42 - uwsgi_trick_chroot_rpmbuild.patch | 16 - uwsgi_v8-314_compatibility.patch | 12 - 20 files changed, 1 insertion(+), 3099 deletions(-) delete mode 100644 .gitignore delete mode 100644 README.Fedora create mode 100644 dead.package delete mode 100644 emperor.ini delete mode 100644 fedora.ini delete mode 100644 sources delete mode 100644 uwsgi-2.0.16-glfs.patch delete mode 100644 uwsgi.init delete mode 100644 uwsgi.service delete mode 100644 uwsgi.spec delete mode 100644 uwsgi.tmpfiles delete mode 100644 uwsgi_fix_lua.patch delete mode 100644 uwsgi_fix_mongodb.patch delete mode 100644 uwsgi_fix_mono.patch delete mode 100644 uwsgi_fix_php74_zend.patch delete mode 100644 uwsgi_fix_psgi.patch delete mode 100644 uwsgi_fix_rpath.patch delete mode 100644 uwsgi_ruby20_compatibility.patch delete mode 100644 uwsgi_trick_chroot_rpmbuild.patch delete mode 100644 uwsgi_v8-314_compatibility.patch diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 943f260..0000000 --- a/.gitignore +++ /dev/null @@ -1,48 +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 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..5204a84 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Orphaned for 6+ weeks 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 35298b8..0000000 --- a/fedora.ini +++ /dev/null @@ -1,81 +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, - alarm_xmpp, - cache, - carbon, - cgi, - cheaper_busyness, - cplusplus, - curl_cron, - dumbloop, - dummy, - fastrouter, - forkptyrouter, - geoip, - graylog2, - http, - ldap, - logcrypto, - logfile, - logpipe, - logsocket, - lua, - msgpack, - nagios, - notfound, - pam, - php, - pty, - rack, - 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, - 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 e8512e0..0000000 --- a/sources +++ /dev/null @@ -1,2 +0,0 @@ -SHA512 (uwsgi-2.0.18.tar.gz) = 6561703279bcc4a81311d033810ac066d0f113bab13b0942f3eef86cac29c584a6641b52476840d6895151aee5ed064ae2d03b18932cf7f47e62f4eeed76da61 -SHA512 (uwsgi-docs-8d868ea.tar.gz) = 1ebf9bbe42d7a67553ff1081a2322fc00c72b72fa52879bba3b7ce8d9f4934b5643d96444ce75559b9f7303be4cdc0453ae2b4d73f1fa13cfc32f69d522bc2f0 diff --git a/uwsgi-2.0.16-glfs.patch b/uwsgi-2.0.16-glfs.patch deleted file mode 100644 index fc41c38..0000000 --- a/uwsgi-2.0.16-glfs.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -up uwsgi-2.0.16/plugins/glusterfs/glusterfs.c.glfs uwsgi-2.0.16/plugins/glusterfs/glusterfs.c ---- uwsgi-2.0.16/plugins/glusterfs/glusterfs.c.glfs 2018-04-03 14:35:48.099323330 +0200 -+++ uwsgi-2.0.16/plugins/glusterfs/glusterfs.c 2018-04-03 14:35:07.573068567 +0200 -@@ -1,5 +1,5 @@ - #include --#include -+#include - - extern struct uwsgi_server uwsgi; - 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 73db94c..0000000 --- a/uwsgi.service +++ /dev/null @@ -1,16 +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 -StandardError=syslog -NotifyAccess=all - -[Install] -WantedBy=multi-user.target diff --git a/uwsgi.spec b/uwsgi.spec deleted file mode 100644 index b734b5b..0000000 --- a/uwsgi.spec +++ /dev/null @@ -1,2333 +0,0 @@ -# Documentation sources: -%global commit 8d868eadfb460785a735030271afa233ac854763 -%global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global docrepo uwsgi-docs - -%{!?_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 systemd -%bcond_without go -%if 0%{?fedora} < 31 -%bcond_without python2 -%bcond_without python2_greenlet -%endif -%bcond_without python3 -%bcond_without ruby19 -%bcond_without tuntap -%bcond_without zeromq -%bcond_without perl -%bcond_without glusterfs -# 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 - -# Conditionally disable some things in epel6 -%if 0%{?rhel} == 6 -# javapackages-tools retired in epel (apache-ivy orphanage) -%bcond_with java -# el6 doesn't ship with systemd -%bcond_with systemd -# el6 doesn't have go -%bcond_with go -%bcond_without python2 -%bcond_without python2_greenlet -# el6 ships with ruby 1.8 but fiberloop/rbthreads needs 1.9 -%bcond_with ruby19 -# el6 doesn't have perl-PSGI -# el6 does have perl-Coro -%bcond_with perl -# el6 httpd does not include mod_proxy_uwsgi -%bcond_without mod_proxy_uwsgi -# this fails in el not sure why -%bcond_with gridfs -%bcond_with tuntap -%bcond_with mongodblibs -%global manual_py_compile 0 -%else -%global manual_py_compile 1 -%endif - -# Conditionally enable/disable some things in epel7 -%if 0%{?rhel} == 7 -# el7 does have java -%bcond_without java -# el7 does have systemd -%bcond_without systemd -%bcond_without python2 -%bcond_without python3 -%bcond_without python3_other -# el7 doesn't have zeromq -%bcond_with zeromq -# el7 does have python-greenlet, but only on x86_64 -%ifarch x86_64 -%bcond_without python2_greenlet -%endif -# el7 does have perl-PSGI -# el7 does have perl-Coro -%bcond_without perl -# el7 httpd does not include mod_proxy_uwsgi -%bcond_without mod_proxy_uwsgi -# el7 can now build glusterfs but only on x86_64 -%ifnarch x86_64 -%bcond_with glusterfs -%else -%bcond_without glusterfs -%endif -# this fails in el7 not sure why -%bcond_with gridfs -%endif - -# 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 - -# Disable router_access in fedora >= 28 because tcp_wrappers deprecation -%if 0%{?fedora} >= 28 -%bcond_with tcp_wrappers -%else -%bcond_without tcp_wrappers -%endif - -# Set %%__python to the newest possible version -%if %{with python3} -%global __python %{__python3} -%else -%if %{with python3_other} -%global __python %{__python3_other} -%else -%if %{with python2} -%global __python %{__python2} -%else -%global __python /usr/bin/true -%endif -%endif -%endif - -Name: uwsgi -Version: 2.0.18 -Release: 18%{?dist} -Summary: Fast, self-healing, application container server -# uwsgi is licensed under GPLv2 with a linking exception -# docs are licensed under MIT -License: GPLv2 with exceptions and MIT -URL: https://github.com/unbit/uwsgi - -Source0: http://projects.unbit.it/downloads/uwsgi-%{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 -Source6: uwsgi.init -Source7: uwsgi.tmpfiles - -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 -# https://github.com/unbit/uwsgi/pull/1772 -Patch9: uwsgi-2.0.16-glfs.patch -# https://github.com/unbit/uwsgi/pull/2141 -Patch10: uwsgi_fix_psgi.patch -# https://github.com/unbit/uwsgi/pull/2105 -Patch11: uwsgi_fix_php74_zend.patch - -BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel -BuildRequires: libyaml-devel, ruby-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 -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_pkgversion}-greenlet-devel -%endif -%if %{with python3_other} -BuildRequires: python%{python3_other_pkgversion}-devel -%endif -%if %{with glusterfs} -BuildRequires: glusterfs-devel, glusterfs-api-devel -%endif -BuildRequires: lua-devel, ruby, pcre-devel -BuildRequires: php-devel, php-embedded, 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: gloox-devel, libstdc++-devel -BuildRequires: GeoIP-devel, libevent-devel, zlib-devel -BuildRequires: openldap-devel, boost-devel -BuildRequires: libattr-devel, libxslt-devel -%if %{with perl} -BuildRequires: perl-devel, perl-ExtUtils-Embed, perl-Coro -%endif -%if %{with zeromq} -BuildRequires: zeromq-devel -%endif -%if %{with go} -BuildRequires: gcc-go -%endif -%if %{with systemd} -BuildRequires: systemd-devel, systemd-units -%endif -%if %{with mono} -BuildRequires: mono-devel, mono-web, glib2-devel -%endif -%if %{with v8} -%if 0%{?fedora} >= 25 -BuildRequires: v8-314-devel -%else -BuildRequires: v8-devel -%endif -%endif -%if %{with mongodblibs} -%if 0%{?fedora} >= 30 -BuildRequires: mongo-cxx-driver-legacy-devel -%else -BuildRequires: mongo-cxx-driver-devel -%endif -%endif - -%if 0%{?fedora} >= 28 -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 - -Requires(pre): shadow-utils -%if %{with systemd} -%{?systemd_requires} -%else -Requires(post): chkconfig -Requires(preun): chkconfig -Requires(preun): initscripts -%endif - -%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_other} -%package -n python%{python3_other_pkgversion}-uwsgidecorators -Summary: Python %{python3_other_version} decorators providing access to the uwsgi API -Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release} - -%description -n python%{python3_other_pkgversion}-uwsgidecorators -The uwsgidecorators Python %{python3_other_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}, libcurl - -%description -n uwsgi-alarm-curl -This package contains the alarm_curl alarm plugin for uWSGI - -%package -n uwsgi-alarm-xmpp -Summary: uWSGI - XMPP alarm plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, gloox - -%description -n uwsgi-alarm-xmpp -This package contains the alarm_xmpp alarm plugin for uWSGI - -# 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}, zlib - -%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 - -%if %{with systemd} -%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 -%endif - -%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}, libcurl - -%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: perl-PSGI, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-psgi -This package contains the PSGI plugin for uWSGI - -%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 - -%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}, libstdc++ - -%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}, libcurl - -%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 - -%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 - -%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 - -%package -n uwsgi-plugin-geoip -Summary: uWSGI - Plugin for GeoIP support -Requires: uwsgi-plugin-common = %{version}-%{release}, GeoIP - -%description -n uwsgi-plugin-geoip -This package contains the geoip plugin for uWSGI - -%if %{with python2} -%package -n uwsgi-plugin-python2-gevent -Summary: uWSGI - Plugin for Python 2 GEvent support -Requires: uwsgi-plugin-python2 = %{version}-%{release}, libevent -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}, libevent - -%description -n uwsgi-plugin-python%{python3_pkgversion}-gevent -This package contains the Python %{python3_version} gevent plugin for uWSGI -%endif - -%if %{with python3_other} -%package -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent -Summary: uWSGI - Plugin for Python %{python3_other_version} GEvent support -Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release}, libevent - -%description -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent -This package contains the Python %{python3_other_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} -%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 - -%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 - -%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_other} -%package -n uwsgi-plugin-python%{python3_other_pkgversion} -Summary: uWSGI - Plugin for Python %{python3_other_version} support -Requires: python%{python3_other_pkgversion}, uwsgi-plugin-common = %{version}-%{release} - -%description -n uwsgi-plugin-python%{python3_other_pkgversion} -This package contains the Python %{python3_other_version} plugin for uWSGI -%endif - -%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 - -%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 -%if 0%{?fedora} && 0%{?fedora} < 29 -Obsoletes: uwsgi-plugin-tornado3 < 2.0.16-4 -Provides: uwsgi-plugin-tornado3 = %{version}-%{release} -%endif - -%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}, libattr - -%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}, libattr - -%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}, libxslt - -%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 - -# 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 -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%if 0%{?fedora} >= 22 -%patch5 -p1 -%endif -%if %{with v8} && 0%{?fedora} >= 25 -%patch6 -p1 -%endif -%if %{with mono} -%patch7 -p1 -%endif -%patch9 -p1 -%if 0%{?fedora} >= 32 -%patch10 -p1 -%endif -%patch11 -p1 - -#disable plug-ins -%if %{without mongodblibs} -sed -in "s/mongodblog, //" buildconf/fedora.ini -sed -in "s/stats_pusher_mongodb, //" buildconf/fedora.ini -%endif -%if %{without v8} -sed -in "s/v8, //" buildconf/fedora.ini -%endif -%if %{without gridfs} -sed -in "s/gridfs, //" buildconf/fedora.ini -%endif -%if %{without mono} -sed -in "s/mono, //" buildconf/fedora.ini -%endif - -%if %{with perl} && (%{with python3} || %{with python3_other}) -%{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py -%endif - - -%build -CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --build fedora.ini -%if %{with python2} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/python fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/gevent fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/tornado fedora -%endif -%if %{with python3} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/python fedora python%{python3_pkgversion} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/gevent fedora python%{python3_pkgversion}_gevent -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/tornado fedora python%{python3_pkgversion}_tornado -%endif -%if %{with python3_other} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --plugin plugins/python fedora python%{python3_other_pkgversion} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --plugin plugins/gevent fedora python%{python3_other_pkgversion}_gevent -%endif -%if %{with mongodblibs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mongodblog fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable -std=gnu++11 -Wno-error" %{__python2} uwsgiconfig.py --plugin plugins/stats_pusher_mongodb fedora -%endif -%if %{with mono} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mono fedora -%endif -%if %{with v8} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/v8 fedora -%endif -%if %{with go} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gccgo fedora -%endif -%if %{with ruby19} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/fiber fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/rbthreads fedora -%endif -%if %{with systemd} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/systemd_logger fedora -%endif -%if %{with tuntap} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/tuntap fedora -%endif -%if %{with perl} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/psgi fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/coroae fedora -%endif -%if %{with zeromq} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/logzmq fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mongrel2 fedora -%endif -%if %{with python2_greenlet} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/greenlet fedora -%endif -%if %{with python3} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/greenlet fedora python%{python3_pkgversion}_greenlet -%endif -%if %{with glusterfs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/glusterfs fedora -%endif -%if %{with gridfs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gridfs fedora -%endif -%if %{with java} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/jvm fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/jwsgi fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/ring fedora -%endif -%if %{with tcp_wrappers} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/router_access fedora -%endif -%if %{with mod_proxy_uwsgi} -%{_httpd_apxs} -Wc,-Wall -Wl -c apache2/mod_proxy_uwsgi.c -%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 %{without systemd} -install -d -m 0775 %{buildroot}%{_localstatedir}/run/uwsgi -%endif -%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_other} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_other_sitelib}/uwsgidecorators.py -%if %{manual_py_compile} == 1 -%py_byte_compile %{__python3_other} %{buildroot}%{python3_other_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 -%if %{with systemd} -install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service -install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf -%else -install -D -p -m 0755 %{SOURCE6} %{buildroot}%{_initddir}/uwsgi -%endif -%if %{with mod_proxy_uwsgi} -install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so -%endif - - -%pre -getent group uwsgi >/dev/null || groupadd -r uwsgi -getent passwd uwsgi >/dev/null || \ - useradd -r -g uwsgi -d %{!?with_systemd:%{_localstatedir}}/run/uwsgi -s /sbin/nologin \ - -c "uWSGI daemon user" uwsgi -exit 0 - -%post -%if %{with systemd} -echo "Executing systemd post-install tasks" -%if 0%{?systemd_post:1} - %systemd_post uwsgi.service -%else - if [ $1 -eq 1 ] ; then - # Initial installation - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - fi -%endif -%else -echo "Executing System V post-install tasks" -/sbin/chkconfig --add uwsgi -%endif - -%preun -%if %{with systemd} -echo "Executing systemd pre-uninstall tasks" -%if 0%{?systemd_preun:1} - %systemd_preun uwsgi.service -%else - if [ $1 -eq 0 ] ; then - # Package removal, not upgrade - /bin/systemctl --no-reload disable uwsgi.service > /dev/null 2>&1 || : - /bin/systemctl stop uwsgi.service > /dev/null 2>&1 || : - fi -%endif -%else -echo "Executing System V pre-uninstall tasks" -if [ $1 -eq 0 ] ; then - /sbin/service uwsgi stop >/dev/null 2>&1 - /sbin/chkconfig --del uwsgi -fi -%endif - -%postun -%if %{with systemd} -echo "Executing systemd post-uninstall tasks" -%if 0%{?systemd_postun:1} - %systemd_postun uwsgi.service -%else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - if [ $1 -ge 1 ] ; then - # Package upgrade, not uninstall - /bin/systemctl try-restart uwsgi.service >/dev/null 2>&1 || : - fi -%endif -%else -echo "Executing System V post-uninstall tasks" -if [ "$1" -ge "1" ] ; then - /sbin/service uwsgi condrestart >/dev/null 2>&1 || : -fi -%endif - - -%files -%{_sbindir}/uwsgi -%config(noreplace) %{_sysconfdir}/uwsgi.ini -%if %{with systemd} -%{_unitdir}/uwsgi.service -%{_tmpfilesdir}/uwsgi.conf -%else -%{_initddir}/uwsgi -%endif -%dir %{_sysconfdir}/uwsgi.d -%if %{without systemd} -%attr(0775,uwsgi,uwsgi) %dir %{_localstatedir}/run/uwsgi -%endif -%doc README README.Fedora CHANGELOG -%license LICENSE - -%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_other} -%files -n python%{python3_other_pkgversion}-uwsgidecorators -%{python3_other_sitelib}/uwsgidecorators.py -%{python3_other_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_other_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 - -%files -n uwsgi-alarm-xmpp -%{_libdir}/uwsgi/alarm_xmpp_plugin.so - -# 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 - -%if %{with systemd} -%files -n uwsgi-logger-systemd -%{_libdir}/uwsgi/systemd_logger_plugin.so -%endif - -%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 - -%files -n uwsgi-plugin-coroae -%{_libdir}/uwsgi/coroae_plugin.so -%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} -%files -n uwsgi-plugin-fiber -%{_libdir}/uwsgi/fiber_plugin.so -%endif - -%if %{with go} -%files -n uwsgi-plugin-gccgo -%{_libdir}/uwsgi/gccgo_plugin.so -%endif - -%files -n uwsgi-plugin-geoip -%{_libdir}/uwsgi/geoip_plugin.so - -%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_other} -%files -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent -%{_libdir}/uwsgi/python%{python3_other_pkgversion}_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} -%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 - -%files -n uwsgi-plugin-php -%{_libdir}/uwsgi/php_plugin.so - -%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_other} -%files -n uwsgi-plugin-python%{python3_other_pkgversion} -%{_libdir}/uwsgi/python%{python3_other_pkgversion}_plugin.so -%endif - -%files -n uwsgi-plugin-rack -%{_libdir}/uwsgi/rack_plugin.so - -%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 - -# The rest - -%if %{with mod_proxy_uwsgi} -%files -n mod_proxy_uwsgi -%{_httpd_moddir}/mod_proxy_uwsgi.so -%endif - - -%changelog -* Fri Jun 04 2021 Python Maint - 2.0.18-18 -- Rebuilt for Python 3.10 - -* Fri May 21 2021 Jitka Plesnikova - 2.0.18-17 -- Perl 5.34 rebuild - -* 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.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_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 217eb68..0000000 --- a/uwsgi_fix_mono.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -Naurp a/plugins/mono/uwsgiplugin.py b/plugins/mono/uwsgiplugin.py ---- a/plugins/mono/uwsgiplugin.py 2016-10-03 03:16:59.000000000 -0500 -+++ b/plugins/mono/uwsgiplugin.py 2017-03-20 16:18:54.917935286 -0500 -@@ -1,9 +1,9 @@ - import os - 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_php74_zend.patch b/uwsgi_fix_php74_zend.patch deleted file mode 100644 index a6f47e8..0000000 --- a/uwsgi_fix_php74_zend.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c -index 72c390223..1690fb60c 100644 ---- a/plugins/php/php_plugin.c -+++ b/plugins/php/php_plugin.c -@@ -1115,10 +1115,9 @@ 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; -- file_handle.free_filename = 0; -- file_handle.opened_path = NULL; - - if (php_request_startup(TSRMLS_C) == FAILURE) { - uwsgi_500(wsgi_req); diff --git a/uwsgi_fix_psgi.patch b/uwsgi_fix_psgi.patch deleted file mode 100644 index 0c47dba..0000000 --- a/uwsgi_fix_psgi.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/plugins/psgi/psgi.h b/plugins/psgi/psgi.h -index 92e6b588..064041a2 100644 ---- a/plugins/psgi/psgi.h -+++ b/plugins/psgi/psgi.h -@@ -87,3 +87,5 @@ void uwsgi_perl_exec(char *); - - void uwsgi_perl_check_auto_reload(void); - void uwsgi_psgi_preinit_apps(void); -+ -+extern struct uwsgi_perl uperl; -diff --git a/plugins/psgi/psgi_loader.c b/plugins/psgi/psgi_loader.c -index 1e61f0e9..a9211185 100644 ---- a/plugins/psgi/psgi_loader.c -+++ b/plugins/psgi/psgi_loader.c -@@ -1,7 +1,6 @@ - #include "psgi.h" - - extern struct uwsgi_server uwsgi; --struct uwsgi_perl uperl; - - extern struct uwsgi_plugin psgi_plugin; - -diff --git a/plugins/psgi/psgi_plugin.c b/plugins/psgi/psgi_plugin.c -index e1177be2..8ca0a2ed 100644 ---- a/plugins/psgi/psgi_plugin.c -+++ b/plugins/psgi/psgi_plugin.c -@@ -3,11 +3,7 @@ - extern char **environ; - extern struct uwsgi_server uwsgi; - --#ifdef __APPLE__ --extern struct uwsgi_perl uperl; --#else - struct uwsgi_perl uperl; --#endif - - struct uwsgi_plugin psgi_plugin; - diff --git a/uwsgi_fix_rpath.patch b/uwsgi_fix_rpath.patch deleted file mode 100644 index 0333830..0000000 --- a/uwsgi_fix_rpath.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py -index f39ad63..d9e95bb 100644 ---- a/plugins/jvm/uwsgiplugin.py -+++ b/plugins/jvm/uwsgiplugin.py -@@ -65,11 +65,6 @@ if "-framework JavaVM" in JVM_LIBPATH: - - GCC_LIST = ['jvm_plugin'] - --if 'LD_RUN_PATH' in os.environ: -- os.environ['LD_RUN_PATH'] += ':' + JVM_LIBPATH[0][2:] --else: -- os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:] -- - def post_build(config): - if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0: - os._exit(1) -diff --git a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py -index d930c44..273cdde 100644 ---- a/plugins/php/uwsgiplugin.py -+++ b/plugins/php/uwsgiplugin.py -@@ -19,7 +19,6 @@ LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split() - - if ld_run_path: - LDFLAGS.append('-L%s' % ld_run_path) -- os.environ['LD_RUN_PATH'] = ld_run_path - - LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] - -diff --git a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py -index 843876f..69ae68f 100644 ---- a/plugins/python/uwsgiplugin.py -+++ b/plugins/python/uwsgiplugin.py -@@ -58,8 +58,6 @@ if not 'UWSGI_PYTHON_NOLIB' in os.environ: - 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: - LIBS = [] -diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py -index 210b28e..06f5edd 100644 ---- a/plugins/rack/uwsgiplugin.py -+++ b/plugins/rack/uwsgiplugin.py -@@ -46,7 +46,6 @@ LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LIBS']\"" - - 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 --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py -index ecea48d..4f35984 100644 ---- a/plugins/ruby19/uwsgiplugin.py -+++ b/plugins/ruby19/uwsgiplugin.py -@@ -40,6 +40,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LDFLAG - - 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_ruby20_compatibility.patch b/uwsgi_ruby20_compatibility.patch deleted file mode 100644 index b4bf20d..0000000 --- a/uwsgi_ruby20_compatibility.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py -index 2375bc9..b908417 100644 ---- a/plugins/rack/uwsgiplugin.py -+++ b/plugins/rack/uwsgiplugin.py -@@ -10,13 +10,14 @@ except: - rbconfig = 'Config' - - version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() --v = version.split('.') - - GCC_LIST = ['rack_plugin', 'rack_api'] - --if (v[0] == '1' and v[1] == '9') or v[0] >= '2': -+if version >= '1.9': - CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() - CFLAGS.append('-DRUBY19') -+ if version >= '2.0': -+ CFLAGS.append('-DRUBY20') - CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' - else: -diff --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py -index 4f35984..156018f 100644 ---- a/plugins/ruby19/uwsgiplugin.py -+++ b/plugins/ruby19/uwsgiplugin.py -@@ -10,13 +10,14 @@ except: - rbconfig = 'Config' - - version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() --v = version.split('.') - - GCC_LIST = ['../rack/rack_plugin', '../rack/rack_api'] - --if v[0] == '1' and v[1] == '9': -+if version >= '1.9': - CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() - CFLAGS.append('-DRUBY19') -+ if version >= '2.0': -+ CFLAGS.append('-DRUBY20') - CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' - else: 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', '') From fe1aea352d08ddf606c9590aef79c916be3ac44b Mon Sep 17 00:00:00 2001 From: Tomas Hrcka Date: Tue, 1 Feb 2022 08:05:02 +0100 Subject: [PATCH 09/87] Unretirement request: https://pagure.io/releng/issue/10604 --- .gitignore | 48 + README.Fedora | 6 + dead.package | 1 - emperor.ini | 7 + fedora.ini | 81 + sources | 2 + uwsgi-2.0.16-glfs.patch | 10 + uwsgi.init | 92 ++ uwsgi.service | 16 + uwsgi.spec | 2333 +++++++++++++++++++++++++++++ uwsgi.tmpfiles | 1 + uwsgi_fix_lua.patch | 31 + uwsgi_fix_mongodb.patch | 269 ++++ uwsgi_fix_mono.patch | 15 + uwsgi_fix_php74_zend.patch | 16 + uwsgi_fix_psgi.patch | 38 + uwsgi_fix_rpath.patch | 64 + uwsgi_ruby20_compatibility.patch | 42 + uwsgi_trick_chroot_rpmbuild.patch | 16 + uwsgi_v8-314_compatibility.patch | 12 + 20 files changed, 3099 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 README.Fedora delete mode 100644 dead.package create mode 100644 emperor.ini create mode 100644 fedora.ini create mode 100644 sources create mode 100644 uwsgi-2.0.16-glfs.patch create mode 100644 uwsgi.init create mode 100644 uwsgi.service create mode 100644 uwsgi.spec create mode 100644 uwsgi.tmpfiles create mode 100644 uwsgi_fix_lua.patch create mode 100644 uwsgi_fix_mongodb.patch create mode 100644 uwsgi_fix_mono.patch create mode 100644 uwsgi_fix_php74_zend.patch create mode 100644 uwsgi_fix_psgi.patch create mode 100644 uwsgi_fix_rpath.patch create mode 100644 uwsgi_ruby20_compatibility.patch create mode 100644 uwsgi_trick_chroot_rpmbuild.patch create mode 100644 uwsgi_v8-314_compatibility.patch diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..943f260 --- /dev/null +++ b/.gitignore @@ -0,0 +1,48 @@ +*.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 diff --git a/README.Fedora b/README.Fedora new file mode 100644 index 0000000..1a12a2c --- /dev/null +++ b/README.Fedora @@ -0,0 +1,6 @@ +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 deleted file mode 100644 index 5204a84..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Orphaned for 6+ weeks diff --git a/emperor.ini b/emperor.ini new file mode 100644 index 0000000..d348937 --- /dev/null +++ b/emperor.ini @@ -0,0 +1,7 @@ +[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 new file mode 100644 index 0000000..35298b8 --- /dev/null +++ b/fedora.ini @@ -0,0 +1,81 @@ +[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, + alarm_xmpp, + cache, + carbon, + cgi, + cheaper_busyness, + cplusplus, + curl_cron, + dumbloop, + dummy, + fastrouter, + forkptyrouter, + geoip, + graylog2, + http, + ldap, + logcrypto, + logfile, + logpipe, + logsocket, + lua, + msgpack, + nagios, + notfound, + pam, + php, + pty, + rack, + 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, + transformation_chunked, + transformation_gzip, + transformation_offload, + transformation_template, + transformation_tofile, + transformation_toupper, + ugreen, + webdav, + xattr, + xslt, + zabbix, + zergpool diff --git a/sources b/sources new file mode 100644 index 0000000..e8512e0 --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (uwsgi-2.0.18.tar.gz) = 6561703279bcc4a81311d033810ac066d0f113bab13b0942f3eef86cac29c584a6641b52476840d6895151aee5ed064ae2d03b18932cf7f47e62f4eeed76da61 +SHA512 (uwsgi-docs-8d868ea.tar.gz) = 1ebf9bbe42d7a67553ff1081a2322fc00c72b72fa52879bba3b7ce8d9f4934b5643d96444ce75559b9f7303be4cdc0453ae2b4d73f1fa13cfc32f69d522bc2f0 diff --git a/uwsgi-2.0.16-glfs.patch b/uwsgi-2.0.16-glfs.patch new file mode 100644 index 0000000..fc41c38 --- /dev/null +++ b/uwsgi-2.0.16-glfs.patch @@ -0,0 +1,10 @@ +diff -up uwsgi-2.0.16/plugins/glusterfs/glusterfs.c.glfs uwsgi-2.0.16/plugins/glusterfs/glusterfs.c +--- uwsgi-2.0.16/plugins/glusterfs/glusterfs.c.glfs 2018-04-03 14:35:48.099323330 +0200 ++++ uwsgi-2.0.16/plugins/glusterfs/glusterfs.c 2018-04-03 14:35:07.573068567 +0200 +@@ -1,5 +1,5 @@ + #include +-#include ++#include + + extern struct uwsgi_server uwsgi; + diff --git a/uwsgi.init b/uwsgi.init new file mode 100644 index 0000000..dc9c445 --- /dev/null +++ b/uwsgi.init @@ -0,0 +1,92 @@ +#!/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 new file mode 100644 index 0000000..73db94c --- /dev/null +++ b/uwsgi.service @@ -0,0 +1,16 @@ +[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 +StandardError=syslog +NotifyAccess=all + +[Install] +WantedBy=multi-user.target diff --git a/uwsgi.spec b/uwsgi.spec new file mode 100644 index 0000000..b734b5b --- /dev/null +++ b/uwsgi.spec @@ -0,0 +1,2333 @@ +# Documentation sources: +%global commit 8d868eadfb460785a735030271afa233ac854763 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global docrepo uwsgi-docs + +%{!?_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 systemd +%bcond_without go +%if 0%{?fedora} < 31 +%bcond_without python2 +%bcond_without python2_greenlet +%endif +%bcond_without python3 +%bcond_without ruby19 +%bcond_without tuntap +%bcond_without zeromq +%bcond_without perl +%bcond_without glusterfs +# 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 + +# Conditionally disable some things in epel6 +%if 0%{?rhel} == 6 +# javapackages-tools retired in epel (apache-ivy orphanage) +%bcond_with java +# el6 doesn't ship with systemd +%bcond_with systemd +# el6 doesn't have go +%bcond_with go +%bcond_without python2 +%bcond_without python2_greenlet +# el6 ships with ruby 1.8 but fiberloop/rbthreads needs 1.9 +%bcond_with ruby19 +# el6 doesn't have perl-PSGI +# el6 does have perl-Coro +%bcond_with perl +# el6 httpd does not include mod_proxy_uwsgi +%bcond_without mod_proxy_uwsgi +# this fails in el not sure why +%bcond_with gridfs +%bcond_with tuntap +%bcond_with mongodblibs +%global manual_py_compile 0 +%else +%global manual_py_compile 1 +%endif + +# Conditionally enable/disable some things in epel7 +%if 0%{?rhel} == 7 +# el7 does have java +%bcond_without java +# el7 does have systemd +%bcond_without systemd +%bcond_without python2 +%bcond_without python3 +%bcond_without python3_other +# el7 doesn't have zeromq +%bcond_with zeromq +# el7 does have python-greenlet, but only on x86_64 +%ifarch x86_64 +%bcond_without python2_greenlet +%endif +# el7 does have perl-PSGI +# el7 does have perl-Coro +%bcond_without perl +# el7 httpd does not include mod_proxy_uwsgi +%bcond_without mod_proxy_uwsgi +# el7 can now build glusterfs but only on x86_64 +%ifnarch x86_64 +%bcond_with glusterfs +%else +%bcond_without glusterfs +%endif +# this fails in el7 not sure why +%bcond_with gridfs +%endif + +# 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 + +# Disable router_access in fedora >= 28 because tcp_wrappers deprecation +%if 0%{?fedora} >= 28 +%bcond_with tcp_wrappers +%else +%bcond_without tcp_wrappers +%endif + +# Set %%__python to the newest possible version +%if %{with python3} +%global __python %{__python3} +%else +%if %{with python3_other} +%global __python %{__python3_other} +%else +%if %{with python2} +%global __python %{__python2} +%else +%global __python /usr/bin/true +%endif +%endif +%endif + +Name: uwsgi +Version: 2.0.18 +Release: 18%{?dist} +Summary: Fast, self-healing, application container server +# uwsgi is licensed under GPLv2 with a linking exception +# docs are licensed under MIT +License: GPLv2 with exceptions and MIT +URL: https://github.com/unbit/uwsgi + +Source0: http://projects.unbit.it/downloads/uwsgi-%{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 +Source6: uwsgi.init +Source7: uwsgi.tmpfiles + +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 +# https://github.com/unbit/uwsgi/pull/1772 +Patch9: uwsgi-2.0.16-glfs.patch +# https://github.com/unbit/uwsgi/pull/2141 +Patch10: uwsgi_fix_psgi.patch +# https://github.com/unbit/uwsgi/pull/2105 +Patch11: uwsgi_fix_php74_zend.patch + +BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel +BuildRequires: libyaml-devel, ruby-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 +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-greenlet-devel +%endif +%if %{with python3_other} +BuildRequires: python%{python3_other_pkgversion}-devel +%endif +%if %{with glusterfs} +BuildRequires: glusterfs-devel, glusterfs-api-devel +%endif +BuildRequires: lua-devel, ruby, pcre-devel +BuildRequires: php-devel, php-embedded, 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: gloox-devel, libstdc++-devel +BuildRequires: GeoIP-devel, libevent-devel, zlib-devel +BuildRequires: openldap-devel, boost-devel +BuildRequires: libattr-devel, libxslt-devel +%if %{with perl} +BuildRequires: perl-devel, perl-ExtUtils-Embed, perl-Coro +%endif +%if %{with zeromq} +BuildRequires: zeromq-devel +%endif +%if %{with go} +BuildRequires: gcc-go +%endif +%if %{with systemd} +BuildRequires: systemd-devel, systemd-units +%endif +%if %{with mono} +BuildRequires: mono-devel, mono-web, glib2-devel +%endif +%if %{with v8} +%if 0%{?fedora} >= 25 +BuildRequires: v8-314-devel +%else +BuildRequires: v8-devel +%endif +%endif +%if %{with mongodblibs} +%if 0%{?fedora} >= 30 +BuildRequires: mongo-cxx-driver-legacy-devel +%else +BuildRequires: mongo-cxx-driver-devel +%endif +%endif + +%if 0%{?fedora} >= 28 +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 + +Requires(pre): shadow-utils +%if %{with systemd} +%{?systemd_requires} +%else +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +%endif + +%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_other} +%package -n python%{python3_other_pkgversion}-uwsgidecorators +Summary: Python %{python3_other_version} decorators providing access to the uwsgi API +Requires: uwsgi = %{version}-%{release} +Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release} + +%description -n python%{python3_other_pkgversion}-uwsgidecorators +The uwsgidecorators Python %{python3_other_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}, libcurl + +%description -n uwsgi-alarm-curl +This package contains the alarm_curl alarm plugin for uWSGI + +%package -n uwsgi-alarm-xmpp +Summary: uWSGI - XMPP alarm plugin +Requires: uwsgi-plugin-common = %{version}-%{release}, gloox + +%description -n uwsgi-alarm-xmpp +This package contains the alarm_xmpp alarm plugin for uWSGI + +# 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}, zlib + +%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 + +%if %{with systemd} +%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 +%endif + +%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}, libcurl + +%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: perl-PSGI, uwsgi-plugin-common = %{version}-%{release} + +%description -n uwsgi-plugin-psgi +This package contains the PSGI plugin for uWSGI + +%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 + +%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}, libstdc++ + +%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}, libcurl + +%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 + +%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 + +%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 + +%package -n uwsgi-plugin-geoip +Summary: uWSGI - Plugin for GeoIP support +Requires: uwsgi-plugin-common = %{version}-%{release}, GeoIP + +%description -n uwsgi-plugin-geoip +This package contains the geoip plugin for uWSGI + +%if %{with python2} +%package -n uwsgi-plugin-python2-gevent +Summary: uWSGI - Plugin for Python 2 GEvent support +Requires: uwsgi-plugin-python2 = %{version}-%{release}, libevent +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}, libevent + +%description -n uwsgi-plugin-python%{python3_pkgversion}-gevent +This package contains the Python %{python3_version} gevent plugin for uWSGI +%endif + +%if %{with python3_other} +%package -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent +Summary: uWSGI - Plugin for Python %{python3_other_version} GEvent support +Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release}, libevent + +%description -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent +This package contains the Python %{python3_other_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} +%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 + +%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 + +%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_other} +%package -n uwsgi-plugin-python%{python3_other_pkgversion} +Summary: uWSGI - Plugin for Python %{python3_other_version} support +Requires: python%{python3_other_pkgversion}, uwsgi-plugin-common = %{version}-%{release} + +%description -n uwsgi-plugin-python%{python3_other_pkgversion} +This package contains the Python %{python3_other_version} plugin for uWSGI +%endif + +%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 + +%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 +%if 0%{?fedora} && 0%{?fedora} < 29 +Obsoletes: uwsgi-plugin-tornado3 < 2.0.16-4 +Provides: uwsgi-plugin-tornado3 = %{version}-%{release} +%endif + +%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}, libattr + +%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}, libattr + +%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}, libxslt + +%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 + +# 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 +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%if 0%{?fedora} >= 22 +%patch5 -p1 +%endif +%if %{with v8} && 0%{?fedora} >= 25 +%patch6 -p1 +%endif +%if %{with mono} +%patch7 -p1 +%endif +%patch9 -p1 +%if 0%{?fedora} >= 32 +%patch10 -p1 +%endif +%patch11 -p1 + +#disable plug-ins +%if %{without mongodblibs} +sed -in "s/mongodblog, //" buildconf/fedora.ini +sed -in "s/stats_pusher_mongodb, //" buildconf/fedora.ini +%endif +%if %{without v8} +sed -in "s/v8, //" buildconf/fedora.ini +%endif +%if %{without gridfs} +sed -in "s/gridfs, //" buildconf/fedora.ini +%endif +%if %{without mono} +sed -in "s/mono, //" buildconf/fedora.ini +%endif + +%if %{with perl} && (%{with python3} || %{with python3_other}) +%{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py +%endif + + +%build +CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --build fedora.ini +%if %{with python2} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/python fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/gevent fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/tornado fedora +%endif +%if %{with python3} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/python fedora python%{python3_pkgversion} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/gevent fedora python%{python3_pkgversion}_gevent +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/tornado fedora python%{python3_pkgversion}_tornado +%endif +%if %{with python3_other} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --plugin plugins/python fedora python%{python3_other_pkgversion} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --plugin plugins/gevent fedora python%{python3_other_pkgversion}_gevent +%endif +%if %{with mongodblibs} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mongodblog fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable -std=gnu++11 -Wno-error" %{__python2} uwsgiconfig.py --plugin plugins/stats_pusher_mongodb fedora +%endif +%if %{with mono} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mono fedora +%endif +%if %{with v8} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/v8 fedora +%endif +%if %{with go} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gccgo fedora +%endif +%if %{with ruby19} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/fiber fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/rbthreads fedora +%endif +%if %{with systemd} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/systemd_logger fedora +%endif +%if %{with tuntap} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/tuntap fedora +%endif +%if %{with perl} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/psgi fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/coroae fedora +%endif +%if %{with zeromq} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/logzmq fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mongrel2 fedora +%endif +%if %{with python2_greenlet} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/greenlet fedora +%endif +%if %{with python3} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/greenlet fedora python%{python3_pkgversion}_greenlet +%endif +%if %{with glusterfs} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/glusterfs fedora +%endif +%if %{with gridfs} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gridfs fedora +%endif +%if %{with java} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/jvm fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/jwsgi fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/ring fedora +%endif +%if %{with tcp_wrappers} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/router_access fedora +%endif +%if %{with mod_proxy_uwsgi} +%{_httpd_apxs} -Wc,-Wall -Wl -c apache2/mod_proxy_uwsgi.c +%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 %{without systemd} +install -d -m 0775 %{buildroot}%{_localstatedir}/run/uwsgi +%endif +%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_other} +install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_other_sitelib}/uwsgidecorators.py +%if %{manual_py_compile} == 1 +%py_byte_compile %{__python3_other} %{buildroot}%{python3_other_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 +%if %{with systemd} +install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service +install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf +%else +install -D -p -m 0755 %{SOURCE6} %{buildroot}%{_initddir}/uwsgi +%endif +%if %{with mod_proxy_uwsgi} +install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so +%endif + + +%pre +getent group uwsgi >/dev/null || groupadd -r uwsgi +getent passwd uwsgi >/dev/null || \ + useradd -r -g uwsgi -d %{!?with_systemd:%{_localstatedir}}/run/uwsgi -s /sbin/nologin \ + -c "uWSGI daemon user" uwsgi +exit 0 + +%post +%if %{with systemd} +echo "Executing systemd post-install tasks" +%if 0%{?systemd_post:1} + %systemd_post uwsgi.service +%else + if [ $1 -eq 1 ] ; then + # Initial installation + /bin/systemctl daemon-reload >/dev/null 2>&1 || : + fi +%endif +%else +echo "Executing System V post-install tasks" +/sbin/chkconfig --add uwsgi +%endif + +%preun +%if %{with systemd} +echo "Executing systemd pre-uninstall tasks" +%if 0%{?systemd_preun:1} + %systemd_preun uwsgi.service +%else + if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable uwsgi.service > /dev/null 2>&1 || : + /bin/systemctl stop uwsgi.service > /dev/null 2>&1 || : + fi +%endif +%else +echo "Executing System V pre-uninstall tasks" +if [ $1 -eq 0 ] ; then + /sbin/service uwsgi stop >/dev/null 2>&1 + /sbin/chkconfig --del uwsgi +fi +%endif + +%postun +%if %{with systemd} +echo "Executing systemd post-uninstall tasks" +%if 0%{?systemd_postun:1} + %systemd_postun uwsgi.service +%else + /bin/systemctl daemon-reload >/dev/null 2>&1 || : + if [ $1 -ge 1 ] ; then + # Package upgrade, not uninstall + /bin/systemctl try-restart uwsgi.service >/dev/null 2>&1 || : + fi +%endif +%else +echo "Executing System V post-uninstall tasks" +if [ "$1" -ge "1" ] ; then + /sbin/service uwsgi condrestart >/dev/null 2>&1 || : +fi +%endif + + +%files +%{_sbindir}/uwsgi +%config(noreplace) %{_sysconfdir}/uwsgi.ini +%if %{with systemd} +%{_unitdir}/uwsgi.service +%{_tmpfilesdir}/uwsgi.conf +%else +%{_initddir}/uwsgi +%endif +%dir %{_sysconfdir}/uwsgi.d +%if %{without systemd} +%attr(0775,uwsgi,uwsgi) %dir %{_localstatedir}/run/uwsgi +%endif +%doc README README.Fedora CHANGELOG +%license LICENSE + +%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_other} +%files -n python%{python3_other_pkgversion}-uwsgidecorators +%{python3_other_sitelib}/uwsgidecorators.py +%{python3_other_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_other_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 + +%files -n uwsgi-alarm-xmpp +%{_libdir}/uwsgi/alarm_xmpp_plugin.so + +# 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 + +%if %{with systemd} +%files -n uwsgi-logger-systemd +%{_libdir}/uwsgi/systemd_logger_plugin.so +%endif + +%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 + +%files -n uwsgi-plugin-coroae +%{_libdir}/uwsgi/coroae_plugin.so +%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} +%files -n uwsgi-plugin-fiber +%{_libdir}/uwsgi/fiber_plugin.so +%endif + +%if %{with go} +%files -n uwsgi-plugin-gccgo +%{_libdir}/uwsgi/gccgo_plugin.so +%endif + +%files -n uwsgi-plugin-geoip +%{_libdir}/uwsgi/geoip_plugin.so + +%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_other} +%files -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent +%{_libdir}/uwsgi/python%{python3_other_pkgversion}_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} +%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 + +%files -n uwsgi-plugin-php +%{_libdir}/uwsgi/php_plugin.so + +%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_other} +%files -n uwsgi-plugin-python%{python3_other_pkgversion} +%{_libdir}/uwsgi/python%{python3_other_pkgversion}_plugin.so +%endif + +%files -n uwsgi-plugin-rack +%{_libdir}/uwsgi/rack_plugin.so + +%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 + +# The rest + +%if %{with mod_proxy_uwsgi} +%files -n mod_proxy_uwsgi +%{_httpd_moddir}/mod_proxy_uwsgi.so +%endif + + +%changelog +* Fri Jun 04 2021 Python Maint - 2.0.18-18 +- Rebuilt for Python 3.10 + +* Fri May 21 2021 Jitka Plesnikova - 2.0.18-17 +- Perl 5.34 rebuild + +* 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.tmpfiles b/uwsgi.tmpfiles new file mode 100644 index 0000000..293cea5 --- /dev/null +++ b/uwsgi.tmpfiles @@ -0,0 +1 @@ +d /run/uwsgi 0775 uwsgi uwsgi diff --git a/uwsgi_fix_lua.patch b/uwsgi_fix_lua.patch new file mode 100644 index 0000000..e2ef54d --- /dev/null +++ b/uwsgi_fix_lua.patch @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..8b7b366 --- /dev/null +++ b/uwsgi_fix_mongodb.patch @@ -0,0 +1,269 @@ +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 new file mode 100644 index 0000000..217eb68 --- /dev/null +++ b/uwsgi_fix_mono.patch @@ -0,0 +1,15 @@ +diff -Naurp a/plugins/mono/uwsgiplugin.py b/plugins/mono/uwsgiplugin.py +--- a/plugins/mono/uwsgiplugin.py 2016-10-03 03:16:59.000000000 -0500 ++++ b/plugins/mono/uwsgiplugin.py 2017-03-20 16:18:54.917935286 -0500 +@@ -1,9 +1,9 @@ + import os + 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_php74_zend.patch b/uwsgi_fix_php74_zend.patch new file mode 100644 index 0000000..a6f47e8 --- /dev/null +++ b/uwsgi_fix_php74_zend.patch @@ -0,0 +1,16 @@ +diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c +index 72c390223..1690fb60c 100644 +--- a/plugins/php/php_plugin.c ++++ b/plugins/php/php_plugin.c +@@ -1115,10 +1115,9 @@ 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; +- file_handle.free_filename = 0; +- file_handle.opened_path = NULL; + + if (php_request_startup(TSRMLS_C) == FAILURE) { + uwsgi_500(wsgi_req); diff --git a/uwsgi_fix_psgi.patch b/uwsgi_fix_psgi.patch new file mode 100644 index 0000000..0c47dba --- /dev/null +++ b/uwsgi_fix_psgi.patch @@ -0,0 +1,38 @@ +diff --git a/plugins/psgi/psgi.h b/plugins/psgi/psgi.h +index 92e6b588..064041a2 100644 +--- a/plugins/psgi/psgi.h ++++ b/plugins/psgi/psgi.h +@@ -87,3 +87,5 @@ void uwsgi_perl_exec(char *); + + void uwsgi_perl_check_auto_reload(void); + void uwsgi_psgi_preinit_apps(void); ++ ++extern struct uwsgi_perl uperl; +diff --git a/plugins/psgi/psgi_loader.c b/plugins/psgi/psgi_loader.c +index 1e61f0e9..a9211185 100644 +--- a/plugins/psgi/psgi_loader.c ++++ b/plugins/psgi/psgi_loader.c +@@ -1,7 +1,6 @@ + #include "psgi.h" + + extern struct uwsgi_server uwsgi; +-struct uwsgi_perl uperl; + + extern struct uwsgi_plugin psgi_plugin; + +diff --git a/plugins/psgi/psgi_plugin.c b/plugins/psgi/psgi_plugin.c +index e1177be2..8ca0a2ed 100644 +--- a/plugins/psgi/psgi_plugin.c ++++ b/plugins/psgi/psgi_plugin.c +@@ -3,11 +3,7 @@ + extern char **environ; + extern struct uwsgi_server uwsgi; + +-#ifdef __APPLE__ +-extern struct uwsgi_perl uperl; +-#else + struct uwsgi_perl uperl; +-#endif + + struct uwsgi_plugin psgi_plugin; + diff --git a/uwsgi_fix_rpath.patch b/uwsgi_fix_rpath.patch new file mode 100644 index 0000000..0333830 --- /dev/null +++ b/uwsgi_fix_rpath.patch @@ -0,0 +1,64 @@ +diff --git a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py +index f39ad63..d9e95bb 100644 +--- a/plugins/jvm/uwsgiplugin.py ++++ b/plugins/jvm/uwsgiplugin.py +@@ -65,11 +65,6 @@ if "-framework JavaVM" in JVM_LIBPATH: + + GCC_LIST = ['jvm_plugin'] + +-if 'LD_RUN_PATH' in os.environ: +- os.environ['LD_RUN_PATH'] += ':' + JVM_LIBPATH[0][2:] +-else: +- os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:] +- + def post_build(config): + if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0: + os._exit(1) +diff --git a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py +index d930c44..273cdde 100644 +--- a/plugins/php/uwsgiplugin.py ++++ b/plugins/php/uwsgiplugin.py +@@ -19,7 +19,6 @@ LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split() + + if ld_run_path: + LDFLAGS.append('-L%s' % ld_run_path) +- os.environ['LD_RUN_PATH'] = ld_run_path + + LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] + +diff --git a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py +index 843876f..69ae68f 100644 +--- a/plugins/python/uwsgiplugin.py ++++ b/plugins/python/uwsgiplugin.py +@@ -58,8 +58,6 @@ if not 'UWSGI_PYTHON_NOLIB' in os.environ: + 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: + LIBS = [] +diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +index 210b28e..06f5edd 100644 +--- a/plugins/rack/uwsgiplugin.py ++++ b/plugins/rack/uwsgiplugin.py +@@ -46,7 +46,6 @@ LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LIBS']\"" + + 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 --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +index ecea48d..4f35984 100644 +--- a/plugins/ruby19/uwsgiplugin.py ++++ b/plugins/ruby19/uwsgiplugin.py +@@ -40,6 +40,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LDFLAG + + 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_ruby20_compatibility.patch b/uwsgi_ruby20_compatibility.patch new file mode 100644 index 0000000..b4bf20d --- /dev/null +++ b/uwsgi_ruby20_compatibility.patch @@ -0,0 +1,42 @@ +diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +index 2375bc9..b908417 100644 +--- a/plugins/rack/uwsgiplugin.py ++++ b/plugins/rack/uwsgiplugin.py +@@ -10,13 +10,14 @@ except: + rbconfig = 'Config' + + version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() +-v = version.split('.') + + GCC_LIST = ['rack_plugin', 'rack_api'] + +-if (v[0] == '1' and v[1] == '9') or v[0] >= '2': ++if version >= '1.9': + CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() + CFLAGS.append('-DRUBY19') ++ if version >= '2.0': ++ CFLAGS.append('-DRUBY20') + CFLAGS.append('-Wno-unused-parameter') + rbconfig = 'RbConfig' + else: +diff --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +index 4f35984..156018f 100644 +--- a/plugins/ruby19/uwsgiplugin.py ++++ b/plugins/ruby19/uwsgiplugin.py +@@ -10,13 +10,14 @@ except: + rbconfig = 'Config' + + version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() +-v = version.split('.') + + GCC_LIST = ['../rack/rack_plugin', '../rack/rack_api'] + +-if v[0] == '1' and v[1] == '9': ++if version >= '1.9': + CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() + CFLAGS.append('-DRUBY19') ++ if version >= '2.0': ++ CFLAGS.append('-DRUBY20') + CFLAGS.append('-Wno-unused-parameter') + rbconfig = 'RbConfig' + else: diff --git a/uwsgi_trick_chroot_rpmbuild.patch b/uwsgi_trick_chroot_rpmbuild.patch new file mode 100644 index 0000000..c23c06f --- /dev/null +++ b/uwsgi_trick_chroot_rpmbuild.patch @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..63df56f --- /dev/null +++ b/uwsgi_v8-314_compatibility.patch @@ -0,0 +1,12 @@ +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', '') From 8fe9ce38ddd3e5164952d98eb00501900ee5246b Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 2 Feb 2022 20:32:34 +0100 Subject: [PATCH 10/87] 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 --- .gitignore | 2 + fedora.ini | 2 +- sources | 4 +- uwsgi-2.0.16-glfs.patch | 10 -- uwsgi.spec | 305 ++++++++++++++--------------------- uwsgi_fix_chroot_chdir.patch | 14 ++ uwsgi_fix_php74_zend.patch | 16 -- uwsgi_fix_php8.patch | 17 ++ uwsgi_fix_php_arginfo.patch | 43 +++++ uwsgi_fix_psgi.patch | 38 ----- uwsgi_fix_rpath.patch | 54 +++---- 11 files changed, 227 insertions(+), 278 deletions(-) delete mode 100644 uwsgi-2.0.16-glfs.patch create mode 100644 uwsgi_fix_chroot_chdir.patch delete mode 100644 uwsgi_fix_php74_zend.patch create mode 100644 uwsgi_fix_php8.patch create mode 100644 uwsgi_fix_php_arginfo.patch delete mode 100644 uwsgi_fix_psgi.patch diff --git a/.gitignore b/.gitignore index 943f260..fb9d183 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ /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 diff --git a/fedora.ini b/fedora.ini index 35298b8..c0ae6b4 100644 --- a/fedora.ini +++ b/fedora.ini @@ -35,7 +35,6 @@ plugins = airbrake, nagios, notfound, pam, - php, pty, rack, rawrouter, @@ -67,6 +66,7 @@ plugins = airbrake, stats_pusher_socket, stats_pusher_statsd, syslog, + systemd_logger, transformation_chunked, transformation_gzip, transformation_offload, diff --git a/sources b/sources index e8512e0..3e2395c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (uwsgi-2.0.18.tar.gz) = 6561703279bcc4a81311d033810ac066d0f113bab13b0942f3eef86cac29c584a6641b52476840d6895151aee5ed064ae2d03b18932cf7f47e62f4eeed76da61 -SHA512 (uwsgi-docs-8d868ea.tar.gz) = 1ebf9bbe42d7a67553ff1081a2322fc00c72b72fa52879bba3b7ce8d9f4934b5643d96444ce75559b9f7303be4cdc0453ae2b4d73f1fa13cfc32f69d522bc2f0 +SHA512 (uwsgi-2.0.20.tar.gz) = 22677a8ad1ea886e1a3a153f486474ce064a55e5b12515322345116980f699f4e2e73267f991c300d904284e06f265ea821e71ba3c97832b6f25705475b498ff +SHA512 (uwsgi-docs-9b4ef5f.tar.gz) = faacb571533c5e770cf5701e979efec44b042d8eda6051d79a65216067715d113168663e8fc0f84133fecaeecee3053b60a5f9ac7938558f40a6cae90cd79b52 diff --git a/uwsgi-2.0.16-glfs.patch b/uwsgi-2.0.16-glfs.patch deleted file mode 100644 index fc41c38..0000000 --- a/uwsgi-2.0.16-glfs.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -up uwsgi-2.0.16/plugins/glusterfs/glusterfs.c.glfs uwsgi-2.0.16/plugins/glusterfs/glusterfs.c ---- uwsgi-2.0.16/plugins/glusterfs/glusterfs.c.glfs 2018-04-03 14:35:48.099323330 +0200 -+++ uwsgi-2.0.16/plugins/glusterfs/glusterfs.c 2018-04-03 14:35:07.573068567 +0200 -@@ -1,5 +1,5 @@ - #include --#include -+#include - - extern struct uwsgi_server uwsgi; - diff --git a/uwsgi.spec b/uwsgi.spec index b734b5b..dd22c36 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 8d868eadfb460785a735030271afa233ac854763 +%global commit 9b4ef5fa68fe42929a5e5410165d36fcc7b2d2c7 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -8,18 +8,14 @@ # This is primarily built for fedora, make it easy right now %if 0%{?fedora} -%bcond_without systemd %bcond_without go -%if 0%{?fedora} < 31 -%bcond_without python2 -%bcond_without python2_greenlet -%endif %bcond_without python3 %bcond_without ruby19 %bcond_without tuntap %bcond_without zeromq %bcond_without perl %bcond_without glusterfs +%bcond_without php # javapackages-tools retired (apache-ivy orphanage) %bcond_with java # Fedora httpd includes mod_proxy_uwsgi @@ -45,41 +41,15 @@ #Fedora endif %endif -# Conditionally disable some things in epel6 -%if 0%{?rhel} == 6 -# javapackages-tools retired in epel (apache-ivy orphanage) -%bcond_with java -# el6 doesn't ship with systemd -%bcond_with systemd -# el6 doesn't have go -%bcond_with go -%bcond_without python2 -%bcond_without python2_greenlet -# el6 ships with ruby 1.8 but fiberloop/rbthreads needs 1.9 -%bcond_with ruby19 -# el6 doesn't have perl-PSGI -# el6 does have perl-Coro -%bcond_with perl -# el6 httpd does not include mod_proxy_uwsgi -%bcond_without mod_proxy_uwsgi -# this fails in el not sure why -%bcond_with gridfs -%bcond_with tuntap -%bcond_with mongodblibs -%global manual_py_compile 0 -%else -%global manual_py_compile 1 -%endif - # Conditionally enable/disable some things in epel7 %if 0%{?rhel} == 7 # el7 does have java %bcond_without java -# el7 does have systemd -%bcond_without systemd %bcond_without python2 %bcond_without python3 %bcond_without python3_other +# This only exists on EL7 +%bcond_without tcp_wrappers # el7 doesn't have zeromq %bcond_with zeromq # el7 does have python-greenlet, but only on x86_64 @@ -99,21 +69,53 @@ %endif # this fails in el7 not sure why %bcond_with gridfs +# EL7 PHP is too old +%bcond_with php %endif +# epel8 builds pretty similar to Fedora for now +%if 0%{?rhel} == 8 +%bcond_without go +%bcond_without python3 +%bcond_without ruby19 +%bcond_without tuntap +%bcond_without zeromq +%bcond_without perl +%bcond_without glusterfs +%bcond_without php +# 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 + +%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 -# Disable router_access in fedora >= 28 because tcp_wrappers deprecation -%if 0%{?fedora} >= 28 -%bcond_with tcp_wrappers -%else -%bcond_without tcp_wrappers -%endif - # Set %%__python to the newest possible version %if %{with python3} %global __python %{__python3} @@ -130,8 +132,8 @@ %endif Name: uwsgi -Version: 2.0.18 -Release: 18%{?dist} +Version: 2.0.20 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -144,7 +146,6 @@ Source2: uwsgi.service Source3: emperor.ini Source4: https://github.com/unbit/%{docrepo}/archive/%{commit}/%{docrepo}-%{shortcommit}.tar.gz Source5: README.Fedora -Source6: uwsgi.init Source7: uwsgi.tmpfiles Patch0: uwsgi_trick_chroot_rpmbuild.patch @@ -155,12 +156,11 @@ Patch3: uwsgi_fix_lua.patch Patch5: uwsgi_fix_mongodb.patch Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch -# https://github.com/unbit/uwsgi/pull/1772 -Patch9: uwsgi-2.0.16-glfs.patch -# https://github.com/unbit/uwsgi/pull/2141 -Patch10: uwsgi_fix_psgi.patch -# https://github.com/unbit/uwsgi/pull/2105 -Patch11: uwsgi_fix_php74_zend.patch +# https://github.com/unbit/uwsgi/issues/2283 +Patch12: uwsgi_fix_php8.patch +Patch13: uwsgi_fix_chroot_chdir.patch +# https://github.com/unbit/uwsgi/issues/2356 +Patch14: uwsgi_fix_php_arginfo.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -175,7 +175,6 @@ BuildRequires: python-greenlet-devel %endif %if %{with python3} BuildRequires: python%{python3_pkgversion}-devel -BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-greenlet-devel %endif %if %{with python3_other} @@ -185,7 +184,10 @@ BuildRequires: python%{python3_other_pkgversion}-devel BuildRequires: glusterfs-devel, glusterfs-api-devel %endif BuildRequires: lua-devel, ruby, pcre-devel -BuildRequires: php-devel, php-embedded, libedit-devel, krb5-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 @@ -203,28 +205,26 @@ BuildRequires: zeromq-devel %if %{with go} BuildRequires: gcc-go %endif -%if %{with systemd} BuildRequires: systemd-devel, systemd-units -%endif %if %{with mono} BuildRequires: mono-devel, mono-web, glib2-devel %endif %if %{with v8} -%if 0%{?fedora} >= 25 +%if 0%{?fedora} BuildRequires: v8-314-devel %else BuildRequires: v8-devel %endif %endif %if %{with mongodblibs} -%if 0%{?fedora} >= 30 +%if 0%{?fedora} BuildRequires: mongo-cxx-driver-legacy-devel %else BuildRequires: mongo-cxx-driver-devel %endif %endif -%if 0%{?fedora} >= 28 +%if 0%{?fedora} BuildRequires: libargon2-devel Obsoletes: uwsgi-router-access <= 2.0.16 %endif @@ -235,13 +235,7 @@ Obsoletes: uwsgi-plugin-erlang <= 1.9.20-1 Obsoletes: uwsgi-plugin-admin <= 2.0.6 Requires(pre): shadow-utils -%if %{with systemd} %{?systemd_requires} -%else -Requires(post): chkconfig -Requires(preun): chkconfig -Requires(preun): initscripts -%endif %filter_requires_in %{_usrsrc} %filter_provides_in %{_usrsrc} @@ -293,7 +287,8 @@ 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. +The uwsgidecorators Python %{python3_version} module provides higher-level +access to the uWSGI API. %endif %if %{with python3_other} @@ -303,7 +298,8 @@ Requires: uwsgi = %{version}-%{release} Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release} %description -n python%{python3_other_pkgversion}-uwsgidecorators -The uwsgidecorators Python %{python3_other_version} module provides higher-level access to the uWSGI API. +The uwsgidecorators Python %{python3_other_version} module provides +higher-level access to the uWSGI API. %endif %package -n uwsgi-docs @@ -364,13 +360,13 @@ This package contains the zabbix plugin for uWSGI %package -n uwsgi-alarm-curl Summary: uWSGI - Curl alarm plugin -Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-alarm-curl This package contains the alarm_curl alarm plugin for uWSGI %package -n uwsgi-alarm-xmpp -Summary: uWSGI - XMPP alarm plugin +Summary: uWSGI - Curl alarm plugin Requires: uwsgi-plugin-common = %{version}-%{release}, gloox %description -n uwsgi-alarm-xmpp @@ -447,7 +443,7 @@ 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}, zlib +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-logger-graylog2 This package contains the graylog2 logger plugin for uWSGI @@ -506,14 +502,12 @@ Provides: uwsgi-plugin-syslog = %{version}-%{release} %description -n uwsgi-logger-syslog This package contains the syslog logger plugin for uWSGI -%if %{with systemd} %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 -%endif %if %{with zeromq} %package -n uwsgi-logger-zeromq @@ -528,7 +522,7 @@ This package contains the ZeroMQ logger plugin for uWSGI %package -n uwsgi-plugin-airbrake Summary: uWSGI - Plugin for AirBrake support -Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-plugin-airbrake This package contains the airbrake plugin for uWSGI @@ -572,14 +566,14 @@ 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}, libstdc++ +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}, libcurl +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-plugin-curl-cron This package contains the curl_cron plugin for uWSGI @@ -624,7 +618,7 @@ This package contains the geoip plugin for uWSGI %if %{with python2} %package -n uwsgi-plugin-python2-gevent Summary: uWSGI - Plugin for Python 2 GEvent support -Requires: uwsgi-plugin-python2 = %{version}-%{release}, libevent +Requires: uwsgi-plugin-python2 = %{version}-%{release} Obsoletes: uwsgi-plugin-gevent < 2.0.16-4 Provides: uwsgi-plugin-gevent = %{version}-%{release} @@ -635,7 +629,7 @@ This package contains the Python 2 gevent plugin for uWSGI %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}, libevent +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 @@ -760,12 +754,14 @@ 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 @@ -887,10 +883,6 @@ This package contains the tornado (Python 2) plugin for uWSGI %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 -%if 0%{?fedora} && 0%{?fedora} < 29 -Obsoletes: uwsgi-plugin-tornado3 < 2.0.16-4 -Provides: uwsgi-plugin-tornado3 = %{version}-%{release} -%endif %description -n uwsgi-plugin-python%{python3_pkgversion}-tornado This package contains the tornado (Python %{python3_version}) plugin for uWSGI @@ -914,21 +906,21 @@ This package contains the v8 plugin for uWSGI %package -n uwsgi-plugin-webdav Summary: uWSGI - Plugin for WebDAV support -Requires: uwsgi-plugin-common = %{version}-%{release}, libattr +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}, libattr +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}, libxslt +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-plugin-xslt This package contains the xslt plugin for uWSGI @@ -1134,107 +1126,92 @@ cp -p %{SOURCE5} README.Fedora %patch1 -p1 %patch2 -p1 %patch3 -p1 -%if 0%{?fedora} >= 22 +%if 0%{?fedora} %patch5 -p1 %endif -%if %{with v8} && 0%{?fedora} >= 25 +%if %{with v8} && 0%{?fedora} %patch6 -p1 %endif %if %{with mono} %patch7 -p1 %endif -%patch9 -p1 -%if 0%{?fedora} >= 32 -%patch10 -p1 -%endif -%patch11 -p1 - -#disable plug-ins -%if %{without mongodblibs} -sed -in "s/mongodblog, //" buildconf/fedora.ini -sed -in "s/stats_pusher_mongodb, //" buildconf/fedora.ini -%endif -%if %{without v8} -sed -in "s/v8, //" buildconf/fedora.ini -%endif -%if %{without gridfs} -sed -in "s/gridfs, //" buildconf/fedora.ini -%endif -%if %{without mono} -sed -in "s/mono, //" buildconf/fedora.ini -%endif +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py %endif - %build -CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --build fedora.ini +CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --build fedora.ini %if %{with python2} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/python fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/gevent fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python2} uwsgiconfig.py --plugin plugins/tornado fedora +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 --plugin plugins/python fedora python%{python3_pkgversion} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/gevent fedora python%{python3_pkgversion}_gevent -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --plugin plugins/tornado fedora python%{python3_pkgversion}_tornado +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_other} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --plugin plugins/python fedora python%{python3_other_pkgversion} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --plugin plugins/gevent fedora python%{python3_other_pkgversion}_gevent +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_other_pkgversion} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_other_pkgversion}_gevent %endif %if %{with mongodblibs} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mongodblog fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable -std=gnu++11 -Wno-error" %{__python2} uwsgiconfig.py --plugin plugins/stats_pusher_mongodb fedora +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 --plugin plugins/mono fedora +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 --plugin plugins/v8 fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/v8 fedora %endif %if %{with go} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gccgo fedora +# 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 +CC="gccgo" CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/gccgo fedora %endif %if %{with ruby19} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/fiber fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/rbthreads fedora -%endif -%if %{with systemd} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/systemd_logger fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/fiber fedora +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 --plugin plugins/tuntap fedora +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 --plugin plugins/psgi fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/coroae fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/psgi fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/coroae fedora %endif %if %{with zeromq} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/logzmq fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mongrel2 fedora +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 %endif %if %{with python2_greenlet} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/greenlet fedora +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/greenlet fedora %endif %if %{with python3} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/greenlet fedora python%{python3_pkgversion}_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 --plugin plugins/glusterfs fedora +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 --plugin plugins/gridfs fedora +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 --plugin plugins/jvm fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/jwsgi fedora -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/ring fedora +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 tcp_wrappers} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/router_access fedora +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 @@ -1246,9 +1223,6 @@ install -d %{buildroot}%{_sysconfdir}/uwsgi.d install -d %{buildroot}%{_usrsrc}/uwsgi/%{version} install -d %{buildroot}%{_includedir}/uwsgi install -d %{buildroot}%{_libdir}/uwsgi -%if %{without systemd} -install -d -m 0775 %{buildroot}%{_localstatedir}/run/uwsgi -%endif %if %{with mono} install -d %{buildroot}%{_monogacdir} %endif @@ -1288,12 +1262,8 @@ install -D -p -m 0644 plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar gacutil -i plugins/mono/uwsgi.dll -f -package uwsgi -root %{buildroot}/usr/lib %endif install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/uwsgi.ini -%if %{with systemd} install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf -%else -install -D -p -m 0755 %{SOURCE6} %{buildroot}%{_initddir}/uwsgi -%endif %if %{with mod_proxy_uwsgi} install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so %endif @@ -1302,13 +1272,11 @@ install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_modd %pre getent group uwsgi >/dev/null || groupadd -r uwsgi getent passwd uwsgi >/dev/null || \ - useradd -r -g uwsgi -d %{!?with_systemd:%{_localstatedir}}/run/uwsgi -s /sbin/nologin \ + useradd -r -g uwsgi -d /run/uwsgi -s /sbin/nologin \ -c "uWSGI daemon user" uwsgi exit 0 %post -%if %{with systemd} -echo "Executing systemd post-install tasks" %if 0%{?systemd_post:1} %systemd_post uwsgi.service %else @@ -1317,14 +1285,8 @@ echo "Executing systemd post-install tasks" /bin/systemctl daemon-reload >/dev/null 2>&1 || : fi %endif -%else -echo "Executing System V post-install tasks" -/sbin/chkconfig --add uwsgi -%endif %preun -%if %{with systemd} -echo "Executing systemd pre-uninstall tasks" %if 0%{?systemd_preun:1} %systemd_preun uwsgi.service %else @@ -1334,17 +1296,8 @@ echo "Executing systemd pre-uninstall tasks" /bin/systemctl stop uwsgi.service > /dev/null 2>&1 || : fi %endif -%else -echo "Executing System V pre-uninstall tasks" -if [ $1 -eq 0 ] ; then - /sbin/service uwsgi stop >/dev/null 2>&1 - /sbin/chkconfig --del uwsgi -fi -%endif %postun -%if %{with systemd} -echo "Executing systemd post-uninstall tasks" %if 0%{?systemd_postun:1} %systemd_postun uwsgi.service %else @@ -1354,27 +1307,14 @@ echo "Executing systemd post-uninstall tasks" /bin/systemctl try-restart uwsgi.service >/dev/null 2>&1 || : fi %endif -%else -echo "Executing System V post-uninstall tasks" -if [ "$1" -ge "1" ] ; then - /sbin/service uwsgi condrestart >/dev/null 2>&1 || : -fi -%endif %files %{_sbindir}/uwsgi %config(noreplace) %{_sysconfdir}/uwsgi.ini -%if %{with systemd} %{_unitdir}/uwsgi.service %{_tmpfilesdir}/uwsgi.conf -%else -%{_initddir}/uwsgi -%endif %dir %{_sysconfdir}/uwsgi.d -%if %{without systemd} -%attr(0775,uwsgi,uwsgi) %dir %{_localstatedir}/run/uwsgi -%endif %doc README README.Fedora CHANGELOG %license LICENSE @@ -1488,10 +1428,8 @@ fi %files -n uwsgi-logger-syslog %{_libdir}/uwsgi/syslog_plugin.so -%if %{with systemd} %files -n uwsgi-logger-systemd %{_libdir}/uwsgi/systemd_logger_plugin.so -%endif %if %{with zeromq} %files -n uwsgi-logger-zeromq @@ -1616,8 +1554,10 @@ fi %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 @@ -1776,11 +1716,12 @@ fi %changelog -* Fri Jun 04 2021 Python Maint - 2.0.18-18 -- Rebuilt for Python 3.10 - -* Fri May 21 2021 Jitka Plesnikova - 2.0.18-17 -- Perl 5.34 rebuild +* 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 diff --git a/uwsgi_fix_chroot_chdir.patch b/uwsgi_fix_chroot_chdir.patch new file mode 100644 index 0000000..5fbbd46 --- /dev/null +++ b/uwsgi_fix_chroot_chdir.patch @@ -0,0 +1,14 @@ +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_php74_zend.patch b/uwsgi_fix_php74_zend.patch deleted file mode 100644 index a6f47e8..0000000 --- a/uwsgi_fix_php74_zend.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c -index 72c390223..1690fb60c 100644 ---- a/plugins/php/php_plugin.c -+++ b/plugins/php/php_plugin.c -@@ -1115,10 +1115,9 @@ 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; -- file_handle.free_filename = 0; -- file_handle.opened_path = NULL; - - if (php_request_startup(TSRMLS_C) == FAILURE) { - uwsgi_500(wsgi_req); diff --git a/uwsgi_fix_php8.patch b/uwsgi_fix_php8.patch new file mode 100644 index 0000000..c968559 --- /dev/null +++ b/uwsgi_fix_php8.patch @@ -0,0 +1,17 @@ +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_php_arginfo.patch b/uwsgi_fix_php_arginfo.patch new file mode 100644 index 0000000..5228066 --- /dev/null +++ b/uwsgi_fix_php_arginfo.patch @@ -0,0 +1,43 @@ +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_psgi.patch b/uwsgi_fix_psgi.patch deleted file mode 100644 index 0c47dba..0000000 --- a/uwsgi_fix_psgi.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/plugins/psgi/psgi.h b/plugins/psgi/psgi.h -index 92e6b588..064041a2 100644 ---- a/plugins/psgi/psgi.h -+++ b/plugins/psgi/psgi.h -@@ -87,3 +87,5 @@ void uwsgi_perl_exec(char *); - - void uwsgi_perl_check_auto_reload(void); - void uwsgi_psgi_preinit_apps(void); -+ -+extern struct uwsgi_perl uperl; -diff --git a/plugins/psgi/psgi_loader.c b/plugins/psgi/psgi_loader.c -index 1e61f0e9..a9211185 100644 ---- a/plugins/psgi/psgi_loader.c -+++ b/plugins/psgi/psgi_loader.c -@@ -1,7 +1,6 @@ - #include "psgi.h" - - extern struct uwsgi_server uwsgi; --struct uwsgi_perl uperl; - - extern struct uwsgi_plugin psgi_plugin; - -diff --git a/plugins/psgi/psgi_plugin.c b/plugins/psgi/psgi_plugin.c -index e1177be2..8ca0a2ed 100644 ---- a/plugins/psgi/psgi_plugin.c -+++ b/plugins/psgi/psgi_plugin.c -@@ -3,11 +3,7 @@ - extern char **environ; - extern struct uwsgi_server uwsgi; - --#ifdef __APPLE__ --extern struct uwsgi_perl uperl; --#else - struct uwsgi_perl uperl; --#endif - - struct uwsgi_plugin psgi_plugin; - diff --git a/uwsgi_fix_rpath.patch b/uwsgi_fix_rpath.patch index 0333830..4c4178b 100644 --- a/uwsgi_fix_rpath.patch +++ b/uwsgi_fix_rpath.patch @@ -1,8 +1,7 @@ -diff --git a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py -index f39ad63..d9e95bb 100644 ---- a/plugins/jvm/uwsgiplugin.py -+++ b/plugins/jvm/uwsgiplugin.py -@@ -65,11 +65,6 @@ if "-framework JavaVM" in JVM_LIBPATH: +diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py +--- a/plugins/jvm/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 ++++ b/plugins/jvm/uwsgiplugin.py 2022-01-23 10:50:20.403612334 +0100 +@@ -65,11 +65,6 @@ GCC_LIST = ['jvm_plugin'] @@ -14,11 +13,10 @@ index f39ad63..d9e95bb 100644 def post_build(config): if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0: os._exit(1) -diff --git a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py -index d930c44..273cdde 100644 ---- a/plugins/php/uwsgiplugin.py -+++ b/plugins/php/uwsgiplugin.py -@@ -19,7 +19,6 @@ LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split() +diff -uNr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py +--- a/plugins/php/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 ++++ b/plugins/php/uwsgiplugin.py 2022-01-23 10:50:20.404612340 +0100 +@@ -19,7 +19,6 @@ if ld_run_path: LDFLAGS.append('-L%s' % ld_run_path) @@ -26,24 +24,23 @@ index d930c44..273cdde 100644 LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] -diff --git a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py -index 843876f..69ae68f 100644 ---- a/plugins/python/uwsgiplugin.py -+++ b/plugins/python/uwsgiplugin.py -@@ -58,8 +58,6 @@ if not 'UWSGI_PYTHON_NOLIB' in os.environ: - LDFLAGS.append("-L%s" % libdir) - LDFLAGS.append("-Wl,-rpath,%s" % libdir) +diff -uNr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py +--- a/plugins/python/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 ++++ b/plugins/python/uwsgiplugin.py 2022-01-23 10:50:31.286681373 +0100 +@@ -60,9 +60,6 @@ + libdir = "%s/lib" % sysconfig.PREFIX -- os.environ['LD_RUN_PATH'] = "%s" % libdir + 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: - LIBS = [] -diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py -index 210b28e..06f5edd 100644 ---- a/plugins/rack/uwsgiplugin.py -+++ b/plugins/rack/uwsgiplugin.py -@@ -46,7 +46,6 @@ LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LIBS']\"" +diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +--- a/plugins/rack/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 ++++ b/plugins/rack/uwsgiplugin.py 2022-01-23 10:50:20.408612365 +0100 +@@ -46,7 +46,6 @@ if has_shared == 'yes': LDFLAGS.append('-L' + libpath ) @@ -51,11 +48,10 @@ index 210b28e..06f5edd 100644 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 --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py -index ecea48d..4f35984 100644 ---- a/plugins/ruby19/uwsgiplugin.py -+++ b/plugins/ruby19/uwsgiplugin.py -@@ -40,6 +40,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LDFLAG +diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +--- a/plugins/ruby19/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 ++++ b/plugins/ruby19/uwsgiplugin.py 2022-01-23 10:50:20.408612365 +0100 +@@ -40,6 +40,5 @@ libpath = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['libdir']\"" % rbconfig).read().rstrip() LDFLAGS.append('-L' + libpath ) From 91de37bf29006eb1eb6463383768fa7d2364e92a Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Mon, 7 Feb 2022 22:31:19 +0100 Subject: [PATCH 11/87] Fix gccgo plugin build for F36 --- uwsgi.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index dd22c36..7fc1caf 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -133,7 +133,7 @@ Name: uwsgi Version: 2.0.20 -Release: 1%{?dist} +Release: 1.1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1176,7 +1176,11 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v # 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} CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/fiber fedora @@ -1716,6 +1720,9 @@ exit 0 %changelog +* 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 From 07af6e624265d23c84c716498dd3c9d607eb44fd Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 12 Feb 2022 13:45:27 +0100 Subject: [PATCH 12/87] Adding emperor-amqp for all targets Adding emperor-pg for Fedora/EPEL8 Adding emperor-zeromq for Fedora/EPEL8 --- fedora.ini | 1 + uwsgi.spec | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/fedora.ini b/fedora.ini index c0ae6b4..7811aab 100644 --- a/fedora.ini +++ b/fedora.ini @@ -20,6 +20,7 @@ plugins = airbrake, curl_cron, dumbloop, dummy, + emperor_amqp, fastrouter, forkptyrouter, geoip, diff --git a/uwsgi.spec b/uwsgi.spec index 7fc1caf..d65d438 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -16,6 +16,7 @@ %bcond_without perl %bcond_without glusterfs %bcond_without php +%bcond_without pq # javapackages-tools retired (apache-ivy orphanage) %bcond_with java # Fedora httpd includes mod_proxy_uwsgi @@ -83,6 +84,7 @@ %bcond_without perl %bcond_without glusterfs %bcond_without php +%bcond_without pq # javapackages-tools retired (apache-ivy orphanage) %bcond_with java # Fedora httpd includes mod_proxy_uwsgi @@ -133,7 +135,7 @@ Name: uwsgi Version: 2.0.20 -Release: 1.1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -223,6 +225,9 @@ BuildRequires: mongo-cxx-driver-legacy-devel BuildRequires: mongo-cxx-driver-devel %endif %endif +%if %{with pq} +BuildRequires: libpq-devel +%endif %if 0%{?fedora} BuildRequires: libargon2-devel @@ -1105,6 +1110,33 @@ 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} @@ -1196,6 +1228,7 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v %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 @@ -1220,6 +1253,10 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v %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 @@ -1711,6 +1748,22 @@ exit 0 %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} @@ -1720,6 +1773,11 @@ exit 0 %changelog +* 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 From 6ce71e5bb084fd8404c5d1e5c579f6ae8691ec6e Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 16 Feb 2022 19:40:16 +0100 Subject: [PATCH 13/87] F37 rebuild for new libgo --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index d65d438..015fd25 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -135,7 +135,7 @@ Name: uwsgi Version: 2.0.20 -Release: 2%{?dist} +Release: 2.1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1773,6 +1773,9 @@ exit 0 %changelog +* 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 From 9ce919a50a912ba793b5ddfe7d4581ac65ce6806 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 19 Feb 2022 21:28:32 +0100 Subject: [PATCH 14/87] Fix errors in uwsgi python module when building against python3.10 or higher --- uwsgi.spec | 7 ++++++- uwsgi_fix_python_py_ssize_t.patch | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 uwsgi_fix_python_py_ssize_t.patch diff --git a/uwsgi.spec b/uwsgi.spec index 015fd25..3db1e53 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -135,7 +135,7 @@ Name: uwsgi Version: 2.0.20 -Release: 2.1%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -163,6 +163,7 @@ Patch12: uwsgi_fix_php8.patch Patch13: uwsgi_fix_chroot_chdir.patch # https://github.com/unbit/uwsgi/issues/2356 Patch14: uwsgi_fix_php_arginfo.patch +Patch15: uwsgi_fix_python_py_ssize_t.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1170,6 +1171,7 @@ cp -p %{SOURCE5} README.Fedora %patch12 -p1 %patch13 -p1 %patch14 -p1 +%patch15 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1773,6 +1775,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_python_py_ssize_t.patch b/uwsgi_fix_python_py_ssize_t.patch new file mode 100644 index 0000000..ec90175 --- /dev/null +++ b/uwsgi_fix_python_py_ssize_t.patch @@ -0,0 +1,11 @@ +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 + From 73fd0c25da5b20398b5da6051cdcb3140ae2011c Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 23 Feb 2022 20:13:29 +0100 Subject: [PATCH 15/87] Clean up %post, %preun and %postun scripts --- uwsgi.spec | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 3db1e53..9bf000d 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1320,36 +1320,13 @@ getent passwd uwsgi >/dev/null || \ exit 0 %post -%if 0%{?systemd_post:1} - %systemd_post uwsgi.service -%else - if [ $1 -eq 1 ] ; then - # Initial installation - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - fi -%endif +%systemd_post uwsgi.service %preun -%if 0%{?systemd_preun:1} - %systemd_preun uwsgi.service -%else - if [ $1 -eq 0 ] ; then - # Package removal, not upgrade - /bin/systemctl --no-reload disable uwsgi.service > /dev/null 2>&1 || : - /bin/systemctl stop uwsgi.service > /dev/null 2>&1 || : - fi -%endif +%systemd_preun uwsgi.service %postun -%if 0%{?systemd_postun:1} - %systemd_postun uwsgi.service -%else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - if [ $1 -ge 1 ] ; then - # Package upgrade, not uninstall - /bin/systemctl try-restart uwsgi.service >/dev/null 2>&1 || : - fi -%endif +%systemd_postun uwsgi.service %files From 6d410724c0684c789612d977f96367bfcfa80f6a Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Fri, 4 Mar 2022 20:09:54 +0100 Subject: [PATCH 16/87] Add support for EPEL9 --- fedora.ini | 2 -- uwsgi.spec | 101 +++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 94 insertions(+), 9 deletions(-) diff --git a/fedora.ini b/fedora.ini index 7811aab..951846b 100644 --- a/fedora.ini +++ b/fedora.ini @@ -11,7 +11,6 @@ malloc_implementation = libc embedded_plugins = corerouter, echo, ping plugins = airbrake, alarm_curl, - alarm_xmpp, cache, carbon, cgi, @@ -23,7 +22,6 @@ plugins = airbrake, emperor_amqp, fastrouter, forkptyrouter, - geoip, graylog2, http, ldap, diff --git a/uwsgi.spec b/uwsgi.spec index 9bf000d..14dd844 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -14,9 +14,12 @@ %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 # javapackages-tools retired (apache-ivy orphanage) %bcond_with java # Fedora httpd includes mod_proxy_uwsgi @@ -49,6 +52,8 @@ %bcond_without python2 %bcond_without python3 %bcond_without python3_other +%bcond_without gloox +%bcond_without geoip # This only exists on EL7 %bcond_without tcp_wrappers # el7 doesn't have zeromq @@ -60,6 +65,7 @@ # el7 does have perl-PSGI # el7 does have perl-Coro %bcond_without perl +%bcond_without perlcoro # el7 httpd does not include mod_proxy_uwsgi %bcond_without mod_proxy_uwsgi # el7 can now build glusterfs but only on x86_64 @@ -82,9 +88,12 @@ %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 # javapackages-tools retired (apache-ivy orphanage) %bcond_with java # Fedora httpd includes mod_proxy_uwsgi @@ -110,6 +119,49 @@ #EL8 endif %endif +%if 0%{?rhel} == 9 +%bcond_without go +%bcond_without python3 +%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 +# 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 endif +%endif + %global manual_py_compile 1 # Turn off byte compilation so it doesn't try @@ -135,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -195,12 +247,21 @@ BuildRequires: openssl-devel BuildRequires: bzip2-devel, gmp-devel, pam-devel BuildRequires: sqlite-devel, libcap-devel BuildRequires: httpd-devel, libcurl-devel -BuildRequires: gloox-devel, libstdc++-devel -BuildRequires: GeoIP-devel, libevent-devel, zlib-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, perl-Coro +BuildRequires: perl-devel, perl-ExtUtils-Embed +%if %{with perlcoro} +BuildRequires: perl-Coro +%endif %endif %if %{with zeromq} BuildRequires: zeromq-devel @@ -371,12 +432,14 @@ 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}, gloox +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-alarm-xmpp This package contains the alarm_xmpp alarm plugin for uWSGI +%endif # Transformations @@ -555,6 +618,7 @@ Requires: perl-PSGI, 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 @@ -562,6 +626,7 @@ Requires: uwsgi-plugin-common = %{version}-%{release}, uwsgi-plugin-psgi = %{ver %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 @@ -614,12 +679,14 @@ Requires: uwsgi-plugin-common = %{version}-%{release} 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}, GeoIP +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 @@ -1173,7 +1240,7 @@ cp -p %{SOURCE5} README.Fedora %patch14 -p1 %patch15 -p1 -%if %{with perl} && (%{with python3} || %{with python3_other}) +%if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py %endif @@ -1225,8 +1292,10 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v %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 @@ -1249,6 +1318,12 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v 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 tcp_wrappers} CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/router_access fedora %endif @@ -1391,8 +1466,10 @@ exit 0 %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 @@ -1471,9 +1548,11 @@ exit 0 %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 @@ -1500,8 +1579,10 @@ exit 0 %{_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 @@ -1752,6 +1833,12 @@ exit 0 %changelog +* 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 From 927b0ea2f07930b9da36aa32a658049fd3e6d442 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 1 Jun 2022 08:39:30 +0200 Subject: [PATCH 17/87] Perl 5.36 rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 14dd844..e590ac8 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -187,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1833,6 +1833,9 @@ exit 0 %changelog +* 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 From 35a88dd5f8f1f586c587f789bade370743af4847 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Mon, 13 Jun 2022 19:54:20 +0200 Subject: [PATCH 18/87] Rebuilt for Python 3.11 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index e590ac8..e4063f8 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -187,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1833,6 +1833,9 @@ exit 0 %changelog +* 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 From 703b4ef92df1f0058bc07543fde9754de2fecc95 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 30 Jun 2022 10:31:35 +0000 Subject: [PATCH 19/87] Add Python 3.11 support Resolves: rhbz#2099185 --- uwsgi.spec | 7 +- uwsgi_python311.patch | 174 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 uwsgi_python311.patch diff --git a/uwsgi.spec b/uwsgi.spec index e4063f8..016d6a8 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -187,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -216,6 +216,7 @@ Patch13: uwsgi_fix_chroot_chdir.patch # https://github.com/unbit/uwsgi/issues/2356 Patch14: uwsgi_fix_php_arginfo.patch Patch15: uwsgi_fix_python_py_ssize_t.patch +Patch16: uwsgi_python311.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1239,6 +1240,7 @@ cp -p %{SOURCE5} README.Fedora %patch13 -p1 %patch14 -p1 %patch15 -p1 +%patch16 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1833,6 +1835,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_python311.patch b/uwsgi_python311.patch new file mode 100644 index 0000000..ddf0a3d --- /dev/null +++ b/uwsgi_python311.patch @@ -0,0 +1,174 @@ +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 *); From 061e65645fbde5372b1a64e5becd0eef077aa5ea Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 11:37:12 +0000 Subject: [PATCH 20/87] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 016d6a8..150b288 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -187,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1835,6 +1835,9 @@ exit 0 %changelog +* 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) From a3b3307d31f54e455d5732477802af503349a759 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Tue, 9 Aug 2022 22:05:51 +0200 Subject: [PATCH 21/87] Fix PHP 8.1 support --- uwsgi.spec | 8 ++++- uwsgi_fix_php81_filename_zend_string.patch | 42 ++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 uwsgi_fix_php81_filename_zend_string.patch diff --git a/uwsgi.spec b/uwsgi.spec index 150b288..0cc77f1 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -187,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -217,6 +217,8 @@ Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_fix_php_arginfo.patch Patch15: uwsgi_fix_python_py_ssize_t.patch Patch16: uwsgi_python311.patch +# https://github.com/unbit/uwsgi/pull/2400 +Patch17: uwsgi_fix_php81_filename_zend_string.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1241,6 +1243,7 @@ cp -p %{SOURCE5} README.Fedora %patch14 -p1 %patch15 -p1 %patch16 -p1 +%patch17 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1835,6 +1838,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_php81_filename_zend_string.patch b/uwsgi_fix_php81_filename_zend_string.patch new file mode 100644 index 0000000..81d9025 --- /dev/null +++ b/uwsgi_fix_php81_filename_zend_string.patch @@ -0,0 +1,42 @@ +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; + From 4cfce955e51396c4d68be16fe7d90d98baf373f6 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Fri, 16 Sep 2022 20:22:45 +0200 Subject: [PATCH 22/87] Remove deprecated StandardError setting from .service file --- uwsgi.service | 1 - 1 file changed, 1 deletion(-) diff --git a/uwsgi.service b/uwsgi.service index 73db94c..dec058d 100644 --- a/uwsgi.service +++ b/uwsgi.service @@ -9,7 +9,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGINT Restart=always Type=notify -StandardError=syslog NotifyAccess=all [Install] From 361f4afe4bc0e34f3e28fdbd9324a278a54c7cdc Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 6 Oct 2022 20:23:45 +0200 Subject: [PATCH 23/87] Fix PHP 8.2 support --- uwsgi.spec | 7 ++++++- uwsgi_fix_php82.patch | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 uwsgi_fix_php82.patch diff --git a/uwsgi.spec b/uwsgi.spec index 0cc77f1..336ec39 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -187,7 +187,7 @@ Name: uwsgi Version: 2.0.20 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -219,6 +219,7 @@ Patch15: uwsgi_fix_python_py_ssize_t.patch Patch16: uwsgi_python311.patch # https://github.com/unbit/uwsgi/pull/2400 Patch17: uwsgi_fix_php81_filename_zend_string.patch +Patch18: uwsgi_fix_php82.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1244,6 +1245,7 @@ cp -p %{SOURCE5} README.Fedora %patch15 -p1 %patch16 -p1 %patch17 -p1 +%patch18 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1838,6 +1840,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_php82.patch b/uwsgi_fix_php82.patch new file mode 100644 index 0000000..66a8e49 --- /dev/null +++ b/uwsgi_fix_php82.patch @@ -0,0 +1,15 @@ +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; From 9a8c2b97e26552cce11fdf52001d0346a32f91d2 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Fri, 28 Oct 2022 19:25:26 +0200 Subject: [PATCH 24/87] Update to 2.0.21 --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 13 ++++++------- uwsgi_fix_mono.patch | 14 +++++++------- uwsgi_fix_rpath.patch | 36 ++++++++++++++++++------------------ 5 files changed, 35 insertions(+), 34 deletions(-) diff --git a/.gitignore b/.gitignore index fb9d183..a8a8f9c 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,5 @@ /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 diff --git a/sources b/sources index 3e2395c..d55d324 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (uwsgi-2.0.20.tar.gz) = 22677a8ad1ea886e1a3a153f486474ce064a55e5b12515322345116980f699f4e2e73267f991c300d904284e06f265ea821e71ba3c97832b6f25705475b498ff -SHA512 (uwsgi-docs-9b4ef5f.tar.gz) = faacb571533c5e770cf5701e979efec44b042d8eda6051d79a65216067715d113168663e8fc0f84133fecaeecee3053b60a5f9ac7938558f40a6cae90cd79b52 +SHA512 (uwsgi-2.0.21.tar.gz) = 36a9c1b87a4c3d08482b9045d2227f56b006acb53f38ddf1b510880ae5fc24c0177a077338ec8af3ef0b8f8e220bc4fc7f8311dab8066e13cbcbb616f736c795 +SHA512 (uwsgi-docs-47e1794.tar.gz) = 8fa66303b405da519f986e8a848439bb76d8043a860bb468e43fb451b672a5234ec1a06835b47f0e9bb467bab1bc0daf7fae387dfa1ef0ed3a3a501234fc5950 diff --git a/uwsgi.spec b/uwsgi.spec index 336ec39..f0648cc 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 9b4ef5fa68fe42929a5e5410165d36fcc7b2d2c7 +%global commit 47e17949d0fd95e524d4f90cc58a3fcb11bc0bae %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -186,8 +186,8 @@ %endif Name: uwsgi -Version: 2.0.20 -Release: 10%{?dist} +Version: 2.0.21 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1241,10 +1241,6 @@ cp -p %{SOURCE5} README.Fedora %endif %patch12 -p1 %patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 %patch18 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} @@ -1840,6 +1836,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_mono.patch b/uwsgi_fix_mono.patch index 217eb68..bce3b1a 100644 --- a/uwsgi_fix_mono.patch +++ b/uwsgi_fix_mono.patch @@ -1,15 +1,15 @@ -diff -Naurp a/plugins/mono/uwsgiplugin.py b/plugins/mono/uwsgiplugin.py ---- a/plugins/mono/uwsgiplugin.py 2016-10-03 03:16:59.000000000 -0500 -+++ b/plugins/mono/uwsgiplugin.py 2017-03-20 16:18:54.917935286 -0500 -@@ -1,9 +1,9 @@ - import os - NAME='mono' +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() ++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_rpath.patch b/uwsgi_fix_rpath.patch index 4c4178b..cb9295b 100644 --- a/uwsgi_fix_rpath.patch +++ b/uwsgi_fix_rpath.patch @@ -1,7 +1,7 @@ -diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py ---- a/plugins/jvm/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 -+++ b/plugins/jvm/uwsgiplugin.py 2022-01-23 10:50:20.403612334 +0100 -@@ -65,11 +65,6 @@ +diff -uNwr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py +--- a/plugins/jvm/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/jvm/uwsgiplugin.py 2022-10-27 20:37:16.544261133 +0200 +@@ -66,11 +66,6 @@ GCC_LIST = ['jvm_plugin'] @@ -11,11 +11,11 @@ diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py - os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:] - def post_build(config): - if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0: + 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 2021-10-06 07:22:45.000000000 +0200 -+++ b/plugins/php/uwsgiplugin.py 2022-01-23 10:50:20.404612340 +0100 +diff -uNwr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py +--- a/plugins/php/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/php/uwsgiplugin.py 2022-10-27 20:37:39.006374938 +0200 @@ -19,7 +19,6 @@ if ld_run_path: @@ -24,10 +24,10 @@ diff -uNr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] -diff -uNr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py ---- a/plugins/python/uwsgiplugin.py 2021-10-06 07:22:45.000000000 +0200 -+++ b/plugins/python/uwsgiplugin.py 2022-01-23 10:50:31.286681373 +0100 -@@ -60,9 +60,6 @@ +diff -uNwr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py +--- a/plugins/python/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/python/uwsgiplugin.py 2022-10-27 20:38:16.898566910 +0200 +@@ -62,9 +62,6 @@ libdir = "%s/lib" % sysconfig.PREFIX LDFLAGS.append("-L%s" % libdir) @@ -37,9 +37,9 @@ diff -uNr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py 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 2021-10-06 07:22:45.000000000 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2022-01-23 10:50:20.408612365 +0100 +diff -uNwr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +--- a/plugins/rack/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/rack/uwsgiplugin.py 2022-10-27 20:38:50.787738600 +0200 @@ -46,7 +46,6 @@ if has_shared == 'yes': @@ -48,9 +48,9 @@ diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py 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 2021-10-06 07:22:45.000000000 +0200 -+++ b/plugins/ruby19/uwsgiplugin.py 2022-01-23 10:50:20.408612365 +0100 +diff -uNwr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +--- a/plugins/ruby19/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/ruby19/uwsgiplugin.py 2022-10-27 20:39:48.879032934 +0200 @@ -40,6 +40,5 @@ libpath = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['libdir']\"" % rbconfig).read().rstrip() From b41d6035d61b2ed897c4f08723daee07a4fcbf2d Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Fri, 28 Oct 2022 21:39:35 +0200 Subject: [PATCH 25/87] Drop the perl-PSGI Requirement from the Perl plugin, it's not trictly needed --- uwsgi.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index f0648cc..200d947 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -62,9 +62,8 @@ %ifarch x86_64 %bcond_without python2_greenlet %endif -# el7 does have perl-PSGI -# el7 does have perl-Coro %bcond_without perl +# el7 does have perl-Coro %bcond_without perlcoro # el7 httpd does not include mod_proxy_uwsgi %bcond_without mod_proxy_uwsgi @@ -187,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -617,7 +616,7 @@ 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: perl-PSGI, uwsgi-plugin-common = %{version}-%{release} +Requires: uwsgi-plugin-common = %{version}-%{release} %description -n uwsgi-plugin-psgi This package contains the PSGI plugin for uWSGI @@ -1836,6 +1835,10 @@ exit 0 %changelog +* 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 From eee272fdb86d37c8c44f41eb8a57b83f7e6fc92c Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Wed, 4 Jan 2023 15:21:46 +0900 Subject: [PATCH 26/87] Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 200d947..ad692cb 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -186,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1835,6 +1835,9 @@ exit 0 %changelog +* 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 From 4cca0607cdb338dc3eadc72495ea342e360b2150 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 06:02:54 +0000 Subject: [PATCH 27/87] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index ad692cb..655fa83 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -186,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1835,6 +1835,9 @@ exit 0 %changelog +* 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 From e5468e855f6424756080c6e005882e2c2fd06c1c Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Tue, 24 Jan 2023 21:10:19 +0100 Subject: [PATCH 28/87] Rebuilt for new libgo.so --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 655fa83..e2890be 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -186,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1835,6 +1835,9 @@ exit 0 %changelog +* 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 From 8e28bafc5ef348fa589b3560d75bac22e6141aa6 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 22 Apr 2023 15:28:53 +0200 Subject: [PATCH 29/87] Fix Ruby/Rack plugin for Ruby >= 3.2 --- uwsgi.spec | 7 ++++++- uwsgi_fix_ruby_taint.patch | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 uwsgi_fix_ruby_taint.patch diff --git a/uwsgi.spec b/uwsgi.spec index e2890be..6b51a54 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -186,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -219,6 +219,7 @@ Patch16: uwsgi_python311.patch # https://github.com/unbit/uwsgi/pull/2400 Patch17: uwsgi_fix_php81_filename_zend_string.patch Patch18: uwsgi_fix_php82.patch +Patch19: uwsgi_fix_ruby_taint.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1241,6 +1242,7 @@ cp -p %{SOURCE5} README.Fedora %patch12 -p1 %patch13 -p1 %patch18 -p1 +%patch19 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1835,6 +1837,9 @@ exit 0 %changelog +* Fri Apr 21 2023 Ralf Ertzinger - 2.0.21-6 +- Fix Ruby/Rack plugin for Ruby >= 3.2 + * Tue Jan 24 2023 Ralf Ertzinger - 2.0.21-5 - Rebuilt for new libgo.so diff --git a/uwsgi_fix_ruby_taint.patch b/uwsgi_fix_ruby_taint.patch new file mode 100644 index 0000000..b23b671 --- /dev/null +++ b/uwsgi_fix_ruby_taint.patch @@ -0,0 +1,27 @@ +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-04-21 21:51:06.675598538 +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 -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +--- a/plugins/rack/uwsgiplugin.py 2023-04-21 21:47:16.170430600 +0200 ++++ b/plugins/rack/uwsgiplugin.py 2023-04-21 21:49:33.070124247 +0200 +@@ -18,6 +18,8 @@ + CFLAGS.append('-DRUBY19') + if version >= '2.0': + CFLAGS.append('-DRUBY20') ++ if version >= '2.7': ++ CFLAGS.append('-DRUBY27') + CFLAGS.append('-Wno-unused-parameter') + rbconfig = 'RbConfig' + else: From 9a0d37a514eda1faae6ee76c6c4eb246c77b0871 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 22 Apr 2023 21:20:36 +0200 Subject: [PATCH 30/87] Fix incomplete patch for Ruby taint issue --- uwsgi.spec | 4 ++-- uwsgi_fix_ruby_taint.patch | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 6b51a54..64cd91d 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -186,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1837,7 +1837,7 @@ exit 0 %changelog -* Fri Apr 21 2023 Ralf Ertzinger - 2.0.21-6 +* 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 diff --git a/uwsgi_fix_ruby_taint.patch b/uwsgi_fix_ruby_taint.patch index b23b671..720fb81 100644 --- a/uwsgi_fix_ruby_taint.patch +++ b/uwsgi_fix_ruby_taint.patch @@ -1,6 +1,6 @@ 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-04-21 21:51:06.675598538 +0200 ++++ b/plugins/rack/rack_plugin.c 2023-04-22 21:18:03.451028685 +0200 @@ -456,7 +456,11 @@ static void rack_hack_dollar_zero(VALUE name, ID id) { @@ -14,8 +14,20 @@ diff -uNr a/plugins/rack/rack_plugin.c b/plugins/rack/rack_plugin.c #ifndef RUBY19 diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2023-04-21 21:47:16.170430600 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2023-04-21 21:49:33.070124247 +0200 +--- a/plugins/rack/uwsgiplugin.py 2023-04-22 21:17:26.854810444 +0200 ++++ b/plugins/rack/uwsgiplugin.py 2023-04-22 21:18:03.454028704 +0200 +@@ -18,6 +18,8 @@ + CFLAGS.append('-DRUBY19') + if version >= '2.0': + CFLAGS.append('-DRUBY20') ++ if version >= '2.7': ++ CFLAGS.append('-DRUBY27') + CFLAGS.append('-Wno-unused-parameter') + rbconfig = 'RbConfig' + else: +diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +--- a/plugins/ruby19/uwsgiplugin.py 2023-04-22 21:17:26.854810444 +0200 ++++ b/plugins/ruby19/uwsgiplugin.py 2023-04-22 21:18:36.479225658 +0200 @@ -18,6 +18,8 @@ CFLAGS.append('-DRUBY19') if version >= '2.0': From 613d1530bdc2f7ffadada60b5ef373279ec86b91 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Thu, 15 Jun 2023 18:55:12 +0200 Subject: [PATCH 31/87] Rebuilt for Python 3.12 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 64cd91d..6aac1e8 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -186,7 +186,7 @@ Name: uwsgi Version: 2.0.21 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1837,6 +1837,9 @@ exit 0 %changelog +* 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 From 046b3f783efbeaa456e9ead7d8fc41249268ff5a Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 15 Jun 2023 19:50:29 +0200 Subject: [PATCH 32/87] Rework Ruby patches Disable python3-greenlet plugin for EPEL9 --- uwsgi.spec | 19 +++++++++++++++---- uwsgi_fix_ruby_taint.patch | 30 +++++++++++++++--------------- uwsgi_ruby20_compatibility.patch | 32 ++++++++++++-------------------- 3 files changed, 42 insertions(+), 39 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 6aac1e8..0e7782a 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -10,6 +10,7 @@ %if 0%{?fedora} %bcond_without go %bcond_without python3 +%bcond_without python3_greenlet %bcond_without ruby19 %bcond_without tuntap %bcond_without zeromq @@ -52,6 +53,7 @@ %bcond_without python2 %bcond_without python3 %bcond_without python3_other +%bcond_without python3_greenlet %bcond_without gloox %bcond_without geoip # This only exists on EL7 @@ -83,6 +85,7 @@ %if 0%{?rhel} == 8 %bcond_without go %bcond_without python3 +%bcond_without python3_greenlet %bcond_without ruby19 %bcond_without tuntap %bcond_without zeromq @@ -121,6 +124,8 @@ %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 @@ -186,7 +191,7 @@ Name: uwsgi Version: 2.0.21 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -234,6 +239,8 @@ BuildRequires: python-greenlet-devel %endif %if %{with python3} BuildRequires: python%{python3_pkgversion}-devel +%endif +%if %{with python3_greenlet} BuildRequires: python%{python3_pkgversion}-greenlet-devel %endif %if %{with python3_other} @@ -743,7 +750,7 @@ This package contains the Python 2 greenlet plugin for uWSGI %endif %endif -%if %{with python3} +%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} @@ -1308,7 +1315,7 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v %if %{with python2_greenlet} CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/greenlet fedora %endif -%if %{with python3} +%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} @@ -1613,7 +1620,7 @@ exit 0 %{_libdir}/uwsgi/greenlet_plugin.so %endif -%if %{with python3} +%if %{with python3_greenlet} %files -n uwsgi-plugin-python%{python3_pkgversion}-greenlet %{_libdir}/uwsgi/python%{python3_pkgversion}_greenlet_plugin.so %endif @@ -1837,6 +1844,10 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_ruby_taint.patch b/uwsgi_fix_ruby_taint.patch index 720fb81..31f649a 100644 --- a/uwsgi_fix_ruby_taint.patch +++ b/uwsgi_fix_ruby_taint.patch @@ -1,6 +1,6 @@ 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-04-22 21:18:03.451028685 +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) { @@ -14,26 +14,26 @@ diff -uNr a/plugins/rack/rack_plugin.c b/plugins/rack/rack_plugin.c #ifndef RUBY19 diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2023-04-22 21:17:26.854810444 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2023-04-22 21:18:03.454028704 +0200 -@@ -18,6 +18,8 @@ +--- a/plugins/rack/uwsgiplugin.py 2023-06-13 21:46:52.300833924 +0200 ++++ b/plugins/rack/uwsgiplugin.py 2023-06-13 21:48:54.740613764 +0200 +@@ -19,6 +19,8 @@ CFLAGS.append('-DRUBY19') - if version >= '2.0': - CFLAGS.append('-DRUBY20') -+ if version >= '2.7': -+ CFLAGS.append('-DRUBY27') CFLAGS.append('-Wno-unused-parameter') rbconfig = 'RbConfig' ++ if v >= (2, 7): ++ CFLAGS.append('-DRUBY27') else: + CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['CFLAGS']\"" % rbconfig).read().rstrip().split() + diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py ---- a/plugins/ruby19/uwsgiplugin.py 2023-04-22 21:17:26.854810444 +0200 -+++ b/plugins/ruby19/uwsgiplugin.py 2023-04-22 21:18:36.479225658 +0200 -@@ -18,6 +18,8 @@ +--- a/plugins/ruby19/uwsgiplugin.py 2023-06-13 21:46:52.300833924 +0200 ++++ b/plugins/ruby19/uwsgiplugin.py 2023-06-13 21:49:24.566803721 +0200 +@@ -19,6 +19,8 @@ CFLAGS.append('-DRUBY19') - if version >= '2.0': - CFLAGS.append('-DRUBY20') -+ if version >= '2.7': -+ CFLAGS.append('-DRUBY27') CFLAGS.append('-Wno-unused-parameter') rbconfig = 'RbConfig' ++ if v >= (2, 7): ++ CFLAGS.append('-DRUBY27') else: + CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['CFLAGS']\"" % rbconfig).read().rstrip().split() + diff --git a/uwsgi_ruby20_compatibility.patch b/uwsgi_ruby20_compatibility.patch index b4bf20d..6ac05dd 100644 --- a/uwsgi_ruby20_compatibility.patch +++ b/uwsgi_ruby20_compatibility.patch @@ -1,42 +1,34 @@ -diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py -index 2375bc9..b908417 100644 ---- a/plugins/rack/uwsgiplugin.py -+++ b/plugins/rack/uwsgiplugin.py -@@ -10,13 +10,14 @@ except: +diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +--- a/plugins/rack/uwsgiplugin.py 2023-06-13 22:05:49.685878391 +0200 ++++ b/plugins/rack/uwsgiplugin.py 2023-06-13 22:07:22.640425653 +0200 +@@ -10,11 +10,11 @@ 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 version >= '1.9': ++if v >= (1, 9): CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() CFLAGS.append('-DRUBY19') -+ if version >= '2.0': -+ CFLAGS.append('-DRUBY20') CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' - else: -diff --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py -index 4f35984..156018f 100644 ---- a/plugins/ruby19/uwsgiplugin.py -+++ b/plugins/ruby19/uwsgiplugin.py -@@ -10,13 +10,14 @@ except: +diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +--- a/plugins/ruby19/uwsgiplugin.py 2023-06-13 22:05:49.685878391 +0200 ++++ b/plugins/ruby19/uwsgiplugin.py 2023-06-13 22:07:13.470371664 +0200 +@@ -10,11 +10,11 @@ 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': -+if version >= '1.9': ++if v >= (1, 9): CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() CFLAGS.append('-DRUBY19') -+ if version >= '2.0': -+ CFLAGS.append('-DRUBY20') CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' - else: From 5a83c85c740b621d57f26afb23052409e162bf45 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Thu, 15 Jun 2023 22:51:02 +0200 Subject: [PATCH 33/87] Rebuilt for Python 3.12 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 0e7782a..8397438 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -191,7 +191,7 @@ Name: uwsgi Version: 2.0.21 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1844,6 +1844,9 @@ exit 0 %changelog +* 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 From 03e47f3db8883478f9275ffad633ad36cf612680 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 11 Jul 2023 15:47:10 +0200 Subject: [PATCH 34/87] Perl 5.38 rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 8397438..6c427e8 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -191,7 +191,7 @@ Name: uwsgi Version: 2.0.21 -Release: 10%{?dist} +Release: 11%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1844,6 +1844,9 @@ exit 0 %changelog +* 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 From 9c7aeda8491a6f9bc7a0f3fcadd6ef6957bfdab8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jul 2023 17:21:11 +0000 Subject: [PATCH 35/87] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 6c427e8..a9eb650 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -191,7 +191,7 @@ Name: uwsgi Version: 2.0.21 -Release: 11%{?dist} +Release: 12%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1844,6 +1844,9 @@ exit 0 %changelog +* 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 From 36451ce9eb7e6059d948397d22e3fe00a1ec9ebe Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 30 Jul 2023 09:48:50 +0200 Subject: [PATCH 36/87] Update to 2.0.22 This updates uwsgi to 2.0.22. It also adds an (incomplete) patch to support python 3.12, used in the upcoming Fedora 39. --- .gitignore | 2 + sources | 4 +- uwsgi.spec | 25 +++---- uwsgi_fix_jvm_missing_path.patch | 12 +++ uwsgi_fix_ruby_taint.patch | 24 ------ uwsgi_python312.patch | 124 +++++++++++++++++++++++++++++++ uwsgi_ruby20_compatibility.patch | 22 ++++-- 7 files changed, 167 insertions(+), 46 deletions(-) create mode 100644 uwsgi_fix_jvm_missing_path.patch create mode 100644 uwsgi_python312.patch diff --git a/.gitignore b/.gitignore index a8a8f9c..70d60d7 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,5 @@ /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 diff --git a/sources b/sources index d55d324..fbbca13 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (uwsgi-2.0.21.tar.gz) = 36a9c1b87a4c3d08482b9045d2227f56b006acb53f38ddf1b510880ae5fc24c0177a077338ec8af3ef0b8f8e220bc4fc7f8311dab8066e13cbcbb616f736c795 -SHA512 (uwsgi-docs-47e1794.tar.gz) = 8fa66303b405da519f986e8a848439bb76d8043a860bb468e43fb451b672a5234ec1a06835b47f0e9bb467bab1bc0daf7fae387dfa1ef0ed3a3a501234fc5950 +SHA512 (uwsgi-2.0.22.tar.gz) = 28aaf786a88f034752ce980f6ae04ee5ea361443ffad7d7e9ec9a88a60dd63c649a44c2d41bb6ddc1572c321567da4c3985f907498bf250e2cd7cd11f4686303 +SHA512 (uwsgi-docs-9c89fef.tar.gz) = be7dfcc3a55ec7a7b9531b5570120d47f9ad304193f55ee73651b2024faaeea07fa4f8e358458dd15c3e36e06f02b757fe6e2db07f952ab2563168a396f68d43 diff --git a/uwsgi.spec b/uwsgi.spec index a9eb650..f00a9ca 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 47e17949d0fd95e524d4f90cc58a3fcb11bc0bae +%global commit 9c89fef106799ddd6f5b383936853afecd2c0cce %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -190,8 +190,8 @@ %endif Name: uwsgi -Version: 2.0.21 -Release: 12%{?dist} +Version: 2.0.22 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -217,14 +217,9 @@ Patch7: uwsgi_fix_mono.patch # https://github.com/unbit/uwsgi/issues/2283 Patch12: uwsgi_fix_php8.patch Patch13: uwsgi_fix_chroot_chdir.patch -# https://github.com/unbit/uwsgi/issues/2356 -Patch14: uwsgi_fix_php_arginfo.patch -Patch15: uwsgi_fix_python_py_ssize_t.patch -Patch16: uwsgi_python311.patch -# https://github.com/unbit/uwsgi/pull/2400 -Patch17: uwsgi_fix_php81_filename_zend_string.patch -Patch18: uwsgi_fix_php82.patch -Patch19: uwsgi_fix_ruby_taint.patch +# https://github.com/unbit/uwsgi/issues/2552 +Patch20: uwsgi_fix_jvm_missing_path.patch +Patch21: uwsgi_python312.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1248,8 +1243,8 @@ cp -p %{SOURCE5} README.Fedora %endif %patch12 -p1 %patch13 -p1 -%patch18 -p1 -%patch19 -p1 +%patch20 -p1 +%patch21 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1844,6 +1839,10 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_jvm_missing_path.patch b/uwsgi_fix_jvm_missing_path.patch new file mode 100644 index 0000000..29960d8 --- /dev/null +++ b/uwsgi_fix_jvm_missing_path.patch @@ -0,0 +1,12 @@ +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_ruby_taint.patch b/uwsgi_fix_ruby_taint.patch index 31f649a..df7fe16 100644 --- a/uwsgi_fix_ruby_taint.patch +++ b/uwsgi_fix_ruby_taint.patch @@ -13,27 +13,3 @@ diff -uNr a/plugins/rack/rack_plugin.c b/plugins/rack/rack_plugin.c } #ifndef RUBY19 -diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2023-06-13 21:46:52.300833924 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2023-06-13 21:48:54.740613764 +0200 -@@ -19,6 +19,8 @@ - CFLAGS.append('-DRUBY19') - CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' -+ if v >= (2, 7): -+ CFLAGS.append('-DRUBY27') - else: - CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['CFLAGS']\"" % rbconfig).read().rstrip().split() - -diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py ---- a/plugins/ruby19/uwsgiplugin.py 2023-06-13 21:46:52.300833924 +0200 -+++ b/plugins/ruby19/uwsgiplugin.py 2023-06-13 21:49:24.566803721 +0200 -@@ -19,6 +19,8 @@ - CFLAGS.append('-DRUBY19') - CFLAGS.append('-Wno-unused-parameter') - rbconfig = 'RbConfig' -+ if v >= (2, 7): -+ CFLAGS.append('-DRUBY27') - else: - CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['CFLAGS']\"" % rbconfig).read().rstrip().split() - diff --git a/uwsgi_python312.patch b/uwsgi_python312.patch new file mode 100644 index 0000000..f04080e --- /dev/null +++ b/uwsgi_python312.patch @@ -0,0 +1,124 @@ +diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c +--- a/plugins/python/python_plugin.c 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/python/python_plugin.c 2023-07-13 19:35:32.020467751 +0200 +@@ -1161,7 +1161,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 +1327,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 +1344,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 +1605,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 +1618,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 +1856,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 +1869,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 2022-10-24 12:21:58.000000000 +0200 ++++ b/plugins/python/uwsgi_python.h 2023-07-13 19:31:50.798050705 +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_ruby20_compatibility.patch b/uwsgi_ruby20_compatibility.patch index 6ac05dd..6fdaa02 100644 --- a/uwsgi_ruby20_compatibility.patch +++ b/uwsgi_ruby20_compatibility.patch @@ -1,7 +1,7 @@ diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2023-06-13 22:05:49.685878391 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2023-06-13 22:07:22.640425653 +0200 -@@ -10,11 +10,11 @@ +--- 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() @@ -14,11 +14,15 @@ diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +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-06-13 22:05:49.685878391 +0200 -+++ b/plugins/ruby19/uwsgiplugin.py 2023-06-13 22:07:13.470371664 +0200 -@@ -10,11 +10,11 @@ +--- 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() @@ -27,8 +31,12 @@ diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py GCC_LIST = ['../rack/rack_plugin', '../rack/rack_api'] --if v[0] == '1' and v[1] == '9': +-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' From e8deb619aad81e10f352447e2e98758d231f4d44 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Fri, 15 Sep 2023 18:16:22 +0200 Subject: [PATCH 37/87] 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) --- uwsgi.spec | 57 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index f00a9ca..e7717c6 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -3,6 +3,17 @@ %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}} @@ -43,6 +54,19 @@ %else %bcond_without gridfs %endif + +# Fedora 39 ships with python 3.12, which at this point isn't supported +# by uwsgi. To get a working python module, build against the (still +# existing) python3.11, too +%if 0%{?fedora} == 39 +%bcond_without python3_other +%define python3_other_pkgversion 3.11 +%define python3_other_version 3.11 +%define python3_other_version_nodots 311 +%define __python3_other python3.11 +%define python3_other_sitelib %(RPM_BUILD_ROOT= %{__python3_other} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))") +%endif + #Fedora endif %endif @@ -191,7 +215,7 @@ Name: uwsgi Version: 2.0.22 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -368,7 +392,7 @@ access to the uWSGI API. %package -n python%{python3_other_pkgversion}-uwsgidecorators Summary: Python %{python3_other_version} decorators providing access to the uwsgi API Requires: uwsgi = %{version}-%{release} -Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release} +Requires: uwsgi-plugin-python%{python3_other_version_nodots} = %{version}-%{release} %description -n python%{python3_other_pkgversion}-uwsgidecorators The uwsgidecorators Python %{python3_other_version} module provides @@ -715,11 +739,11 @@ This package contains the Python %{python3_version} gevent plugin for uWSGI %endif %if %{with python3_other} -%package -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent +%package -n uwsgi-plugin-python%{python3_other_version_nodots}-gevent Summary: uWSGI - Plugin for Python %{python3_other_version} GEvent support -Requires: uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release}, libevent +Requires: uwsgi-plugin-python%{python3_other_version_nodots} = %{version}-%{release}, libevent -%description -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent +%description -n uwsgi-plugin-python%{python3_other_version_nodots}-gevent This package contains the Python %{python3_other_version} gevent plugin for uWSGI %endif @@ -874,11 +898,11 @@ This package contains the Python %{python3_version} plugin for uWSGI %endif %if %{with python3_other} -%package -n uwsgi-plugin-python%{python3_other_pkgversion} +%package -n uwsgi-plugin-python%{python3_other_version_nodots} Summary: uWSGI - Plugin for Python %{python3_other_version} support Requires: python%{python3_other_pkgversion}, uwsgi-plugin-common = %{version}-%{release} -%description -n uwsgi-plugin-python%{python3_other_pkgversion} +%description -n uwsgi-plugin-python%{python3_other_version_nodots} This package contains the Python %{python3_other_version} plugin for uWSGI %endif @@ -1251,7 +1275,7 @@ cp -p %{SOURCE5} README.Fedora %endif %build -CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --build fedora.ini +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 @@ -1263,8 +1287,8 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py -- CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py --verbose --plugin plugins/tornado fedora python%{python3_pkgversion}_tornado %endif %if %{with python3_other} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_other_pkgversion} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_other_pkgversion}_gevent +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_other_version_nodots} +CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_other_version_nodots}_gevent %endif %if %{with mongodblibs} CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/mongodblog fedora @@ -1601,8 +1625,8 @@ exit 0 %endif %if %{with python3_other} -%files -n uwsgi-plugin-python%{python3_other_pkgversion}-gevent -%{_libdir}/uwsgi/python%{python3_other_pkgversion}_gevent_plugin.so +%files -n uwsgi-plugin-python%{python3_other_version_nodots}-gevent +%{_libdir}/uwsgi/python%{python3_other_version_nodots}_gevent_plugin.so %endif %if %{with glusterfs} @@ -1680,8 +1704,8 @@ exit 0 %endif %if %{with python3_other} -%files -n uwsgi-plugin-python%{python3_other_pkgversion} -%{_libdir}/uwsgi/python%{python3_other_pkgversion}_plugin.so +%files -n uwsgi-plugin-python%{python3_other_version_nodots} +%{_libdir}/uwsgi/python%{python3_other_version_nodots}_plugin.so %endif %files -n uwsgi-plugin-rack @@ -1839,6 +1863,11 @@ exit 0 %changelog +* 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 From c7c20878872f61487c9c70b718dc14b99ffa143d Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 16 Sep 2023 20:01:03 +0200 Subject: [PATCH 38/87] Extend building the python 3.11 module to rawhide --- uwsgi.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index e7717c6..4f83576 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -55,10 +55,10 @@ %bcond_without gridfs %endif -# Fedora 39 ships with python 3.12, which at this point isn't supported +# Fedora 39+ ships with python 3.12, which at this point isn't supported # by uwsgi. To get a working python module, build against the (still # existing) python3.11, too -%if 0%{?fedora} == 39 +%if 0%{?fedora} > 38 %bcond_without python3_other %define python3_other_pkgversion 3.11 %define python3_other_version 3.11 From 6e64b872732dbe908cca993a86c9c156e2620b5e Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 16 Sep 2023 20:12:35 +0200 Subject: [PATCH 39/87] Changes missing from previous commit (release/clog) --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 4f83576..37c5ddf 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -215,7 +215,7 @@ Name: uwsgi Version: 2.0.22 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1863,6 +1863,9 @@ exit 0 %changelog +* 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 From a5bb2db7fa743a2307b5a9c899602b8bc73e1fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 26 Sep 2023 12:02:01 +0200 Subject: [PATCH 40/87] Don't build the Python 3.11 module on Fedora 39+, it is not installable --- uwsgi.spec | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 37c5ddf..19bb967 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -54,19 +54,6 @@ %else %bcond_without gridfs %endif - -# Fedora 39+ ships with python 3.12, which at this point isn't supported -# by uwsgi. To get a working python module, build against the (still -# existing) python3.11, too -%if 0%{?fedora} > 38 -%bcond_without python3_other -%define python3_other_pkgversion 3.11 -%define python3_other_version 3.11 -%define python3_other_version_nodots 311 -%define __python3_other python3.11 -%define python3_other_sitelib %(RPM_BUILD_ROOT= %{__python3_other} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))") -%endif - #Fedora endif %endif @@ -215,7 +202,7 @@ Name: uwsgi Version: 2.0.22 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1863,6 +1850,10 @@ exit 0 %changelog +* 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 From 32a630388928fafbff4da458238e9d732ca3d3fa Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 30 Sep 2023 19:02:38 +0200 Subject: [PATCH 41/87] Rework python 3.12 patch --- uwsgi.spec | 5 ++++- uwsgi_python312.patch | 50 +++++++++++++++++++++++++++++++++---------- 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 19bb967..d011722 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -202,7 +202,7 @@ Name: uwsgi Version: 2.0.22 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1850,6 +1850,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_python312.patch b/uwsgi_python312.patch index f04080e..7595cd2 100644 --- a/uwsgi_python312.patch +++ b/uwsgi_python312.patch @@ -1,7 +1,35 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c ---- a/plugins/python/python_plugin.c 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/python/python_plugin.c 2023-07-13 19:35:32.020467751 +0200 -@@ -1161,7 +1161,10 @@ +--- 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) { @@ -13,7 +41,7 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c up.current_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async); #else up.current_recursion_depth = uwsgi_malloc(sizeof(int)*uwsgi.async); -@@ -1324,7 +1327,12 @@ +@@ -1324,7 +1333,12 @@ // Acquire the gil and import lock before forking in order to avoid // deadlocks in workers UWSGI_GET_GIL @@ -26,7 +54,7 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c } } -@@ -1336,7 +1344,12 @@ +@@ -1336,7 +1350,12 @@ if (uwsgi.has_threads) { if (step == 0) { // Release locks within master process @@ -39,7 +67,7 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c UWSGI_RELEASE_GIL } else { -@@ -1592,7 +1605,11 @@ +@@ -1592,7 +1611,11 @@ PyGILState_Release(pgst); if (wsgi_req) { @@ -52,7 +80,7 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining; up.current_frame[wsgi_req->async_id] = tstate->cframe; #else -@@ -1601,7 +1618,11 @@ +@@ -1601,7 +1624,11 @@ #endif } else { @@ -65,7 +93,7 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c up.current_main_recursion_remaining = tstate->recursion_remaining; up.current_main_frame = tstate->cframe; #else -@@ -1835,7 +1856,11 @@ +@@ -1835,7 +1862,11 @@ PyGILState_Release(pgst); if (wsgi_req) { @@ -78,7 +106,7 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id]; tstate->cframe = up.current_frame[wsgi_req->async_id]; #else -@@ -1844,7 +1869,11 @@ +@@ -1844,7 +1875,11 @@ #endif } else { @@ -92,8 +120,8 @@ diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c 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 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/python/uwsgi_python.h 2023-07-13 19:31:50.798050705 +0200 +--- 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 From 6bb552f1a3f9714eb99c00b118fc9dd4390731f1 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 3 Oct 2023 10:51:38 +0200 Subject: [PATCH 42/87] rebuild for https://fedoraproject.org/wiki/Changes/php83 add patch for PHP 8.3 from https://github.com/unbit/uwsgi/pull/2559 --- uwsgi.spec | 32 ++++++++++++++++---------- uwsgi_fix_php83.patch | 52 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 uwsgi_fix_php83.patch diff --git a/uwsgi.spec b/uwsgi.spec index d011722..589d036 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -202,7 +202,7 @@ Name: uwsgi Version: 2.0.22 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -228,6 +228,8 @@ Patch7: uwsgi_fix_mono.patch # https://github.com/unbit/uwsgi/issues/2283 Patch12: uwsgi_fix_php8.patch Patch13: uwsgi_fix_chroot_chdir.patch +# https://github.com/unbit/uwsgi/pull/2559 +Patch14: uwsgi_fix_php83.patch # https://github.com/unbit/uwsgi/issues/2552 Patch20: uwsgi_fix_jvm_missing_path.patch Patch21: uwsgi_python312.patch @@ -1239,23 +1241,24 @@ Fully Apache API compliant proxy module cp -p %{SOURCE1} buildconf/ echo "plugin_dir = %{_libdir}/uwsgi" >> buildconf/fedora.ini cp -p %{SOURCE5} README.Fedora -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 %if 0%{?fedora} -%patch5 -p1 +%patch -P5 -p1 %endif %if %{with v8} && 0%{?fedora} -%patch6 -p1 +%patch -P6 -p1 %endif %if %{with mono} -%patch7 -p1 +%patch -P7 -p1 %endif -%patch12 -p1 -%patch13 -p1 -%patch20 -p1 -%patch21 -p1 +%patch -P12 -p1 +%patch -P13 -p1 +%patch -P14 -p1 +%patch -P20 -p1 +%patch -P21 -p1 %if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py @@ -1850,6 +1853,11 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_php83.patch b/uwsgi_fix_php83.patch new file mode 100644 index 0000000..ed343a9 --- /dev/null +++ b/uwsgi_fix_php83.patch @@ -0,0 +1,52 @@ +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; From 196bf72239ee89bb5a7d7cbec2d987dcc295d369 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 21 Oct 2023 19:15:17 +0200 Subject: [PATCH 43/87] Drop 2to3 call, it doesn't do anything anymore --- uwsgi.spec | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 589d036..9be4b99 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -202,7 +202,7 @@ Name: uwsgi Version: 2.0.22 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1260,10 +1260,6 @@ cp -p %{SOURCE5} README.Fedora %patch -P20 -p1 %patch -P21 -p1 -%if %{with perl} && (%{with python3} || %{with python3_other}) && %{with perlcoro} -%{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py -%endif - %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini %if %{with python2} @@ -1853,6 +1849,9 @@ exit 0 %changelog +* 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 From 0bbf1dd4645a8c1d72bb1b2770ddd8c436778e90 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 21 Oct 2023 19:17:26 +0200 Subject: [PATCH 44/87] Add comment for adding patches --- uwsgi.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/uwsgi.spec b/uwsgi.spec index 9be4b99..d4bcf0f 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -217,6 +217,8 @@ Source4: https://github.com/unbit/%{docrepo}/archive/%{commit}/%{docrepo} Source5: README.Fedora Source7: uwsgi.tmpfiles +# 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 From b6771ca19fd5acfb2834ccf85ade717739f3a232 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 2 Nov 2023 21:31:30 +0100 Subject: [PATCH 45/87] Update to 2.0.23, drop merged patches --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 17 ++++++----------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 70d60d7..b43ef6c 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,5 @@ /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 diff --git a/sources b/sources index fbbca13..6c2dafd 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (uwsgi-2.0.22.tar.gz) = 28aaf786a88f034752ce980f6ae04ee5ea361443ffad7d7e9ec9a88a60dd63c649a44c2d41bb6ddc1572c321567da4c3985f907498bf250e2cd7cd11f4686303 -SHA512 (uwsgi-docs-9c89fef.tar.gz) = be7dfcc3a55ec7a7b9531b5570120d47f9ad304193f55ee73651b2024faaeea07fa4f8e358458dd15c3e36e06f02b757fe6e2db07f952ab2563168a396f68d43 +SHA512 (uwsgi-2.0.23.tar.gz) = 4060dd66f8c6309497b52a961c36a58fe2b3b3afc7e11b97cfa464757c614d1d44ccc561b18500a394b5d95e5660eae48759003a30ec07379a6f079f63f3899b +SHA512 (uwsgi-docs-3be14d3.tar.gz) = 73f517fc1bb5efaa7f39ee2084011c6d3a16ab02ae590d134140eee09e27b57f5ae444c733c654ad0ec430f4627902d23a934d84d3dec431ae14fc76bf26326c diff --git a/uwsgi.spec b/uwsgi.spec index d4bcf0f..ca35ebe 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 9c89fef106799ddd6f5b383936853afecd2c0cce +%global commit 3be14d357b7b73a82311db034de034f8c09035e8 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -201,8 +201,8 @@ %endif Name: uwsgi -Version: 2.0.22 -Release: 7%{?dist} +Version: 2.0.23 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -230,11 +230,6 @@ Patch7: uwsgi_fix_mono.patch # https://github.com/unbit/uwsgi/issues/2283 Patch12: uwsgi_fix_php8.patch Patch13: uwsgi_fix_chroot_chdir.patch -# https://github.com/unbit/uwsgi/pull/2559 -Patch14: uwsgi_fix_php83.patch -# https://github.com/unbit/uwsgi/issues/2552 -Patch20: uwsgi_fix_jvm_missing_path.patch -Patch21: uwsgi_python312.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1258,9 +1253,6 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P12 -p1 %patch -P13 -p1 -%patch -P14 -p1 -%patch -P20 -p1 -%patch -P21 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1851,6 +1843,9 @@ exit 0 %changelog +* 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 From 5d4ae9e199f581f2ed702e5eb63c9773c3af5ab4 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Wed, 3 Jan 2024 23:13:45 +0900 Subject: [PATCH 46/87] Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index ca35ebe..76140f4 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -202,7 +202,7 @@ Name: uwsgi Version: 2.0.23 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1843,6 +1843,9 @@ exit 0 %changelog +* 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 From c8dfeab0b8df6dd98ff5b677098e3117449d4266 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Tue, 23 Jan 2024 21:25:42 +0100 Subject: [PATCH 47/87] Add reworked patch for python3.12 --- uwsgi.spec | 2 + uwsgi_python312-2.patch | 82 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 uwsgi_python312-2.patch diff --git a/uwsgi.spec b/uwsgi.spec index 76140f4..6dee064 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -230,6 +230,7 @@ Patch7: uwsgi_fix_mono.patch # https://github.com/unbit/uwsgi/issues/2283 Patch12: uwsgi_fix_php8.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 @@ -1253,6 +1254,7 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P12 -p1 %patch -P13 -p1 +%patch -P14 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini diff --git a/uwsgi_python312-2.patch b/uwsgi_python312-2.patch new file mode 100644 index 0000000..7a2d6b3 --- /dev/null +++ b/uwsgi_python312-2.patch @@ -0,0 +1,82 @@ +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 From 94be6255864e2ebd1e2d87a234aaf11ccb062d0b Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Tue, 23 Jan 2024 21:26:52 +0100 Subject: [PATCH 48/87] Build plugin for python3.11 under EPEL9 --- uwsgi.spec | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 6dee064..90e1d6b 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -174,6 +174,19 @@ %else %bcond_without gridfs %endif + +# EL9 has multiple python3 versions, but does not provide the +# convenience macros that EL7 has. Set those ourselves. +# +# This needs some serious rework after EL7 is gone. +%bcond_without python3_other +%if %{with python3_other} +%global python3_other_pkgversion 3.11 +%global __python3_other python3.11 +%global python3_other_sitelib %(RPM_BUILD_ROOT= %{__python3_other} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")} +%global python3_other_version 3.11 +%global python3_other_version_nodots 311 +%endif #EL9 endif %endif @@ -202,7 +215,7 @@ Name: uwsgi Version: 2.0.23 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1845,6 +1858,10 @@ exit 0 %changelog +* 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 From 65dfd0fc879c2f471f7ccbb50a0d7b5483091cca Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jan 2024 07:23:48 +0000 Subject: [PATCH 49/87] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 90e1d6b..ef88779 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -215,7 +215,7 @@ Name: uwsgi Version: 2.0.23 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1858,6 +1858,9 @@ exit 0 %changelog +* 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 From b9c84238a9972a43075fa18303ae6c6745cdf7bf Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 10 Feb 2024 21:46:05 +0100 Subject: [PATCH 50/87] Update to 2.0.24, drop merged patches --- .gitignore | 2 + sources | 4 +- uwsgi.spec | 16 ++++--- uwsgi_fix_gcc_format_signedness.patch | 64 +++++++++++++++++++++++++++ uwsgi_fix_glusterfs_io_cb.patch | 13 ++++++ uwsgi_fix_rpath.patch | 42 +++++++++--------- 6 files changed, 112 insertions(+), 29 deletions(-) create mode 100644 uwsgi_fix_gcc_format_signedness.patch create mode 100644 uwsgi_fix_glusterfs_io_cb.patch diff --git a/.gitignore b/.gitignore index b43ef6c..8d25461 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ /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 diff --git a/sources b/sources index 6c2dafd..41ee9d8 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (uwsgi-2.0.23.tar.gz) = 4060dd66f8c6309497b52a961c36a58fe2b3b3afc7e11b97cfa464757c614d1d44ccc561b18500a394b5d95e5660eae48759003a30ec07379a6f079f63f3899b -SHA512 (uwsgi-docs-3be14d3.tar.gz) = 73f517fc1bb5efaa7f39ee2084011c6d3a16ab02ae590d134140eee09e27b57f5ae444c733c654ad0ec430f4627902d23a934d84d3dec431ae14fc76bf26326c +SHA512 (uwsgi-2.0.24.tar.gz) = 55af38c1518409f8351c93a027f97958a8cdf36b1b5750dc316b9bc1cd35f9c3243c078e743c3b435c6c86d0991d5575c719326cc05ca9aad7d26dbdb78ab335 +SHA512 (uwsgi-docs-4e23afe.tar.gz) = 52ad1bdae491261aa3055241eeb6b9d12180b2a7b28b25b586453fe4fb6caf44755944e257ddddaf41c2b8dfb66b89cd0017a52036c8d54ecb7e4a8140edb76a diff --git a/uwsgi.spec b/uwsgi.spec index ef88779..15ef702 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 3be14d357b7b73a82311db034de034f8c09035e8 +%global commit 4e23afe3582b85103098b6047c349cffa552d692 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -214,8 +214,8 @@ %endif Name: uwsgi -Version: 2.0.23 -Release: 4%{?dist} +Version: 2.0.24 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -240,10 +240,10 @@ Patch3: uwsgi_fix_lua.patch Patch5: uwsgi_fix_mongodb.patch Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch -# https://github.com/unbit/uwsgi/issues/2283 -Patch12: uwsgi_fix_php8.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch +Patch15: uwsgi_fix_gcc_format_signedness.patch +Patch16: uwsgi_fix_glusterfs_io_cb.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1265,9 +1265,10 @@ cp -p %{SOURCE5} README.Fedora %if %{with mono} %patch -P7 -p1 %endif -%patch -P12 -p1 %patch -P13 -p1 %patch -P14 -p1 +%patch -P15 -p1 +%patch -P16 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1858,6 +1859,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_fix_gcc_format_signedness.patch b/uwsgi_fix_gcc_format_signedness.patch new file mode 100644 index 0000000..44daae1 --- /dev/null +++ b/uwsgi_fix_gcc_format_signedness.patch @@ -0,0 +1,64 @@ +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 new file mode 100644 index 0000000..aa5d71b --- /dev/null +++ b/uwsgi_fix_glusterfs_io_cb.patch @@ -0,0 +1,13 @@ +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_rpath.patch b/uwsgi_fix_rpath.patch index cb9295b..c05d4b8 100644 --- a/uwsgi_fix_rpath.patch +++ b/uwsgi_fix_rpath.patch @@ -1,7 +1,7 @@ -diff -uNwr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py ---- a/plugins/jvm/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/jvm/uwsgiplugin.py 2022-10-27 20:37:16.544261133 +0200 -@@ -66,11 +66,6 @@ +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'] @@ -13,21 +13,21 @@ diff -uNwr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py def post_build(config): if subprocess.call("javac %s/plugins/jvm/uwsgi.java" % os.getcwd(), shell=True) != 0: os._exit(1) -diff -uNwr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py ---- a/plugins/php/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/php/uwsgiplugin.py 2022-10-27 20:37:39.006374938 +0200 +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 - LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version] - -diff -uNwr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py ---- a/plugins/python/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/python/uwsgiplugin.py 2022-10-27 20:38:16.898566910 +0200 -@@ -62,9 +62,6 @@ + # 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) @@ -37,10 +37,10 @@ diff -uNwr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py LIBS.append('-lpython%s' % get_python_version()) else: -diff -uNwr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py ---- a/plugins/rack/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/rack/uwsgiplugin.py 2022-10-27 20:38:50.787738600 +0200 -@@ -46,7 +46,6 @@ +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 ) @@ -48,10 +48,10 @@ diff -uNwr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py 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 -uNwr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py ---- a/plugins/ruby19/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200 -+++ b/plugins/ruby19/uwsgiplugin.py 2022-10-27 20:39:48.879032934 +0200 -@@ -40,6 +40,5 @@ +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 ) From d986271efb6b3cd099be8676ce0861a692b8522f Mon Sep 17 00:00:00 2001 From: Dominik 'Rathann' Mierzejewski Date: Tue, 19 Mar 2024 10:57:17 +0100 Subject: [PATCH 51/87] Rebuilt for gloox-1.0.28 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 15ef702..374f0f7 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -215,7 +215,7 @@ Name: uwsgi Version: 2.0.24 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1859,6 +1859,9 @@ exit 0 %changelog +* 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 From 5017f0c5b9700da99f95bcc831dc8fae53aa3d80 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Tue, 16 Apr 2024 20:24:11 +0200 Subject: [PATCH 52/87] 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 --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 19 +++++++++++-------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 8d25461..7951476 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,5 @@ /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 diff --git a/sources b/sources index 41ee9d8..9afac1d 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (uwsgi-2.0.24.tar.gz) = 55af38c1518409f8351c93a027f97958a8cdf36b1b5750dc316b9bc1cd35f9c3243c078e743c3b435c6c86d0991d5575c719326cc05ca9aad7d26dbdb78ab335 -SHA512 (uwsgi-docs-4e23afe.tar.gz) = 52ad1bdae491261aa3055241eeb6b9d12180b2a7b28b25b586453fe4fb6caf44755944e257ddddaf41c2b8dfb66b89cd0017a52036c8d54ecb7e4a8140edb76a +SHA512 (2.0.25.1.tar.gz) = 3b2a78917b129f5a2f38f3538e30b132e4cd6e270df55365ccc0dc6b94641a262af1484c62b252d0a24121eb68417cb061210e89e2b7885992ab4ffa07092119 +SHA512 (uwsgi-docs-8dcaacd.tar.gz) = 03f520652becb4409e9cf5fe30a2ce5595693786a08dac9ee59e05a7ba29283dced45f2416e8ccf758b1064f3002e34d6ae9fa166af5eea5cdbc99aaaf36ec4f diff --git a/uwsgi.spec b/uwsgi.spec index 374f0f7..08f0cf4 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 4e23afe3582b85103098b6047c349cffa552d692 +%global commit 8dcaacd4900accea52939f5495bfffd0f7408ad1 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -214,15 +214,17 @@ %endif Name: uwsgi -Version: 2.0.24 -Release: 2%{?dist} +Version: 2.0.25.1 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT License: GPLv2 with exceptions and MIT URL: https://github.com/unbit/uwsgi -Source0: http://projects.unbit.it/downloads/uwsgi-%{version}.tar.gz +ExcludeArch: %{ix86} + +Source0: https://github.com/unbit/uwsgi/archive/refs/tags/%{version}.tar.gz Source1: fedora.ini Source2: uwsgi.service Source3: emperor.ini @@ -242,8 +244,6 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch -Patch15: uwsgi_fix_gcc_format_signedness.patch -Patch16: uwsgi_fix_glusterfs_io_cb.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1267,8 +1267,6 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 -%patch -P15 -p1 -%patch -P16 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1859,6 +1857,11 @@ exit 0 %changelog +* 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 From 64940f3b452c5534234fd73f068a789d23de2bd7 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 9 May 2024 20:34:52 +0200 Subject: [PATCH 53/87] Rework support for multiple python versions --- uwsgi.spec | 171 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 124 insertions(+), 47 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 08f0cf4..a9ffd3b 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -63,7 +63,14 @@ %bcond_without java %bcond_without python2 %bcond_without python3 -%bcond_without python3_other +%bcond_without python3_alternate1 +%if %{with python3_alternate1} +%global python3_alternate1_pkgname python34 +%global __python3_alternate1 python3.4 +%global python3_alternate1_version 3.4 +%global python3_alternate1_version_nodots 34 +%global python3_alternate1_sitelib %(RPM_BUILD_ROOT= %{__python3_alternate1} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")} +%endif %bcond_without python3_greenlet %bcond_without gloox %bcond_without geoip @@ -179,13 +186,21 @@ # convenience macros that EL7 has. Set those ourselves. # # This needs some serious rework after EL7 is gone. -%bcond_without python3_other -%if %{with python3_other} -%global python3_other_pkgversion 3.11 -%global __python3_other python3.11 -%global python3_other_sitelib %(RPM_BUILD_ROOT= %{__python3_other} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")} -%global python3_other_version 3.11 -%global python3_other_version_nodots 311 +%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 #EL9 endif %endif @@ -202,8 +217,11 @@ %if %{with python3} %global __python %{__python3} %else -%if %{with python3_other} -%global __python %{__python3_other} +%if %{with python3_alternate1} +%global __python %{__python3_alternate1} +%else +%if %{with python3_alternate2} +%global __python %{__python3_alternate2} %else %if %{with python2} %global __python %{__python2} @@ -212,10 +230,11 @@ %endif %endif %endif +%endif Name: uwsgi Version: 2.0.25.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -262,8 +281,11 @@ BuildRequires: python%{python3_pkgversion}-devel %if %{with python3_greenlet} BuildRequires: python%{python3_pkgversion}-greenlet-devel %endif -%if %{with python3_other} -BuildRequires: python%{python3_other_pkgversion}-devel +%if %{with python3_alternate1} +BuildRequires: %{python3_alternate1_pkgname}-devel +%endif +%if %{with python3_alternate2} +BuildRequires: %{python3_alternate2_pkgname}-devel %endif %if %{with glusterfs} BuildRequires: glusterfs-devel, glusterfs-api-devel @@ -388,14 +410,25 @@ The uwsgidecorators Python %{python3_version} module provides higher-level access to the uWSGI API. %endif -%if %{with python3_other} -%package -n python%{python3_other_pkgversion}-uwsgidecorators -Summary: Python %{python3_other_version} decorators providing access to the uwsgi API +%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_other_version_nodots} = %{version}-%{release} +Requires: uwsgi-plugin-python%{python3_alternate1_version_nodots} = %{version}-%{release} -%description -n python%{python3_other_pkgversion}-uwsgidecorators -The uwsgidecorators Python %{python3_other_version} module provides +%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 @@ -738,13 +771,22 @@ Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release} This package contains the Python %{python3_version} gevent plugin for uWSGI %endif -%if %{with python3_other} -%package -n uwsgi-plugin-python%{python3_other_version_nodots}-gevent -Summary: uWSGI - Plugin for Python %{python3_other_version} GEvent support -Requires: uwsgi-plugin-python%{python3_other_version_nodots} = %{version}-%{release}, libevent +%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_other_version_nodots}-gevent -This package contains the Python %{python3_other_version} gevent plugin for uWSGI +%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 glusterfs} @@ -897,13 +939,22 @@ Provides: uwsgi-plugin-python3 = %{version}-%{release} This package contains the Python %{python3_version} plugin for uWSGI %endif -%if %{with python3_other} -%package -n uwsgi-plugin-python%{python3_other_version_nodots} -Summary: uWSGI - Plugin for Python %{python3_other_version} support -Requires: python%{python3_other_pkgversion}, uwsgi-plugin-common = %{version}-%{release} +%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_other_version_nodots} -This package contains the Python %{python3_other_version} plugin for uWSGI +%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 %package -n uwsgi-plugin-rack @@ -1280,9 +1331,13 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3} uwsgiconfig.py -- 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_other} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/python fedora python%{python3_other_version_nodots} -CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_other} uwsgiconfig.py --verbose --plugin plugins/gevent fedora python%{python3_other_version_nodots}_gevent +%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 mongodblibs} CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --verbose --plugin plugins/mongodblog fedora @@ -1391,10 +1446,16 @@ install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_sitelib}/uwsgidec %py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}/uwsgidecorators.py %endif %endif -%if %{with python3_other} -install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_other_sitelib}/uwsgidecorators.py +%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_other} %{buildroot}%{python3_other_sitelib}/uwsgidecorators.py +%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 java} @@ -1452,10 +1513,16 @@ exit 0 %{python3_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_version_nodots}*.py* %endif -%if %{with python3_other} -%files -n python%{python3_other_pkgversion}-uwsgidecorators -%{python3_other_sitelib}/uwsgidecorators.py -%{python3_other_sitelib}/__pycache__/uwsgidecorators.cpython-%{python3_other_version_nodots}*.py* +%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 %files -n uwsgi-docs @@ -1618,9 +1685,14 @@ exit 0 %{_libdir}/uwsgi/python%{python3_pkgversion}_gevent_plugin.so %endif -%if %{with python3_other} -%files -n uwsgi-plugin-python%{python3_other_version_nodots}-gevent -%{_libdir}/uwsgi/python%{python3_other_version_nodots}_gevent_plugin.so +%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 glusterfs} @@ -1697,9 +1769,14 @@ exit 0 %{_libdir}/uwsgi/python%{python3_pkgversion}_plugin.so %endif -%if %{with python3_other} -%files -n uwsgi-plugin-python%{python3_other_version_nodots} -%{_libdir}/uwsgi/python%{python3_other_version_nodots}_plugin.so +%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 %files -n uwsgi-plugin-rack From 8a5c0bd8332f5041b1979860727a84a38b4456dd Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 6 Jun 2024 19:07:35 +0200 Subject: [PATCH 54/87] Update to 2.0.26 Rework support for multiple python versions --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 10 +++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 7951476..e60ce59 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,5 @@ /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 diff --git a/sources b/sources index 9afac1d..825b046 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (2.0.25.1.tar.gz) = 3b2a78917b129f5a2f38f3538e30b132e4cd6e270df55365ccc0dc6b94641a262af1484c62b252d0a24121eb68417cb061210e89e2b7885992ab4ffa07092119 -SHA512 (uwsgi-docs-8dcaacd.tar.gz) = 03f520652becb4409e9cf5fe30a2ce5595693786a08dac9ee59e05a7ba29283dced45f2416e8ccf758b1064f3002e34d6ae9fa166af5eea5cdbc99aaaf36ec4f +SHA512 (2.0.26.tar.gz) = 3bb1c7855a5a83eaff18e69f22618794ede2f6df7c8eee42d34163d3319014272223e2c48d013601cd18a17916c5b91b9a0eb4816608442d389c6ae38c83371c +SHA512 (uwsgi-docs-59e6cd1.tar.gz) = db243bcf23417ec4eb87c93f7ec3bc8ef03c122bf61b63ae56f8c2cfc86bda0569023bdd6ecaf130027379792e778ffc3e8621f1493bd6f7499c46ffe8393f43 diff --git a/uwsgi.spec b/uwsgi.spec index a9ffd3b..2b214ed 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 8dcaacd4900accea52939f5495bfffd0f7408ad1 +%global commit 59e6cd1044e20eaae73e5cd8114b77fb38c99ac5 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -233,8 +233,8 @@ %endif Name: uwsgi -Version: 2.0.25.1 -Release: 2%{?dist} +Version: 2.0.26 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1934,6 +1934,10 @@ exit 0 %changelog +* 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 From 0ed57cdb2741951eb6242360b2bbf7e0bca9f33f Mon Sep 17 00:00:00 2001 From: Python Maint Date: Sun, 9 Jun 2024 01:40:22 +0200 Subject: [PATCH 55/87] Rebuilt for Python 3.13 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 2b214ed..3d8991d 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -234,7 +234,7 @@ Name: uwsgi Version: 2.0.26 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1934,6 +1934,9 @@ exit 0 %changelog +* 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 From 4b286aba5ac599a9baeead99d42eb226eccd0f2e Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 12 Jun 2024 12:48:12 +0200 Subject: [PATCH 56/87] Perl 5.40 rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 3d8991d..8d34eaf 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -234,7 +234,7 @@ Name: uwsgi Version: 2.0.26 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1934,6 +1934,9 @@ exit 0 %changelog +* 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 From dce67072b9a90e3e2f4edd964a750a1775c06c4e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jul 2024 08:29:55 +0000 Subject: [PATCH 57/87] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 8d34eaf..51684a4 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -234,7 +234,7 @@ Name: uwsgi Version: 2.0.26 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1934,6 +1934,9 @@ exit 0 %changelog +* 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 From c0b79e45a5563208c5c602729cea91a98f13aea8 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 15 Aug 2024 19:53:46 +0200 Subject: [PATCH 58/87] Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 Add patch for python 3.13 --- uwsgi.spec | 8 +- uwsgi_python313.patch | 193 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 uwsgi_python313.patch diff --git a/uwsgi.spec b/uwsgi.spec index 51684a4..a66c3df 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -234,7 +234,7 @@ Name: uwsgi Version: 2.0.26 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -263,6 +263,8 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch +# https://github.com/unbit/uwsgi/pull/2655 +Patch15: uwsgi_python313.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1318,6 +1320,7 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 +%patch -P15 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1934,6 +1937,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_python313.patch b/uwsgi_python313.patch new file mode 100644 index 0000000..6031408 --- /dev/null +++ b/uwsgi_python313.patch @@ -0,0 +1,193 @@ +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; From 591a578dd8ea7d2fd179c87c5362743910133ef1 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 4 Sep 2024 21:44:07 +0200 Subject: [PATCH 59/87] Cleanup work, EL10 support - Drop support for EL7 - Add support for EL10 - Explicitly require pcre2 (all builds already pulled this in anyway) --- uwsgi.spec | 114 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 48 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index a66c3df..732590c 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -57,48 +57,6 @@ #Fedora endif %endif -# Conditionally enable/disable some things in epel7 -%if 0%{?rhel} == 7 -# el7 does have java -%bcond_without java -%bcond_without python2 -%bcond_without python3 -%bcond_without python3_alternate1 -%if %{with python3_alternate1} -%global python3_alternate1_pkgname python34 -%global __python3_alternate1 python3.4 -%global python3_alternate1_version 3.4 -%global python3_alternate1_version_nodots 34 -%global python3_alternate1_sitelib %(RPM_BUILD_ROOT= %{__python3_alternate1} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")} -%endif -%bcond_without python3_greenlet -%bcond_without gloox -%bcond_without geoip -# This only exists on EL7 -%bcond_without tcp_wrappers -# el7 doesn't have zeromq -%bcond_with zeromq -# el7 does have python-greenlet, but only on x86_64 -%ifarch x86_64 -%bcond_without python2_greenlet -%endif -%bcond_without perl -# el7 does have perl-Coro -%bcond_without perlcoro -# el7 httpd does not include mod_proxy_uwsgi -%bcond_without mod_proxy_uwsgi -# el7 can now build glusterfs but only on x86_64 -%ifnarch x86_64 -%bcond_with glusterfs -%else -%bcond_without glusterfs -%endif -# this fails in el7 not sure why -%bcond_with gridfs -# EL7 PHP is too old -%bcond_with php -%endif - # epel8 builds pretty similar to Fedora for now %if 0%{?rhel} == 8 %bcond_without go @@ -182,10 +140,7 @@ %bcond_without gridfs %endif -# EL9 has multiple python3 versions, but does not provide the -# convenience macros that EL7 has. Set those ourselves. -# -# This needs some serious rework after EL7 is gone. +# EL9 has multiple python3 versions %bcond_without python3_alternate1 %if %{with python3_alternate1} %global python3_alternate1_pkgname python3.11 @@ -205,6 +160,63 @@ #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 +# 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 @@ -234,7 +246,7 @@ Name: uwsgi Version: 2.0.26 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -292,7 +304,7 @@ BuildRequires: %{python3_alternate2_pkgname}-devel %if %{with glusterfs} BuildRequires: glusterfs-devel, glusterfs-api-devel %endif -BuildRequires: lua-devel, ruby, pcre-devel +BuildRequires: lua-devel, ruby, pcre2-devel %if %{with php} BuildRequires: php-devel, php-embedded %endif @@ -1937,6 +1949,12 @@ exit 0 %changelog +* 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 From ee7dd133ddec5de5276507d59f25479a9d568e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Wed, 4 Sep 2024 22:36:26 +0200 Subject: [PATCH 60/87] convert license to SPDX This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 --- uwsgi.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 732590c..aa18ece 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -246,11 +246,12 @@ Name: uwsgi Version: 2.0.26 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT -License: GPLv2 with exceptions and 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} @@ -1949,6 +1950,9 @@ exit 0 %changelog +* 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 From 08576b2d2589d1cf291c41f8c9dc7583031344e5 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 22 Sep 2024 21:15:53 +0200 Subject: [PATCH 61/87] Disable building the Ruby rack plugin for EPEL10 --- fedora.ini | 1 - uwsgi.spec | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/fedora.ini b/fedora.ini index 951846b..7c3cda6 100644 --- a/fedora.ini +++ b/fedora.ini @@ -35,7 +35,6 @@ plugins = airbrake, notfound, pam, pty, - rack, rawrouter, redislog, router_basicauth, diff --git a/uwsgi.spec b/uwsgi.spec index aa18ece..968fa2a 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -32,6 +32,7 @@ %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 @@ -72,6 +73,7 @@ %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 @@ -113,6 +115,7 @@ %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 @@ -177,6 +180,8 @@ %bcond_with glusterfs %bcond_without php %bcond_without pq +# EPEL10 doesn't have rubygem-rack yet +%bcond_with ruby_rack # EPEL10 doesn't have gloox yet %bcond_with gloox # EPEL10 doesn't have GeoIP yet @@ -246,7 +251,7 @@ Name: uwsgi Version: 2.0.26 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -972,12 +977,14 @@ Requires: %{python3_alternate2_pkgname}, uwsgi-plugin-common = %{version}-%{rele This package contains the Python %{python3_alternate2_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 @@ -1419,6 +1426,9 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v %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 @@ -1795,8 +1805,10 @@ exit 0 %{_libdir}/uwsgi/python%{python3_alternate2_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 @@ -1950,6 +1962,9 @@ exit 0 %changelog +* 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 From 670041ecc344f0c3cd91501ebd0e7597b1a4769a Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 25 Sep 2024 18:42:22 +0200 Subject: [PATCH 62/87] pdate to 2.0.27 Drop merged patches Re-enable rack plugin for EPEL10, dependencies now present --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 17 +++++++++-------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index e60ce59..793b016 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,5 @@ /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 diff --git a/sources b/sources index 825b046..6892f4e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (2.0.26.tar.gz) = 3bb1c7855a5a83eaff18e69f22618794ede2f6df7c8eee42d34163d3319014272223e2c48d013601cd18a17916c5b91b9a0eb4816608442d389c6ae38c83371c -SHA512 (uwsgi-docs-59e6cd1.tar.gz) = db243bcf23417ec4eb87c93f7ec3bc8ef03c122bf61b63ae56f8c2cfc86bda0569023bdd6ecaf130027379792e778ffc3e8621f1493bd6f7499c46ffe8393f43 +SHA512 (2.0.27.tar.gz) = 78de6b8aa401ca5e27204cc68dec540617407dc9a0dad2c785a7eadc449889aad4eb516d4d8d257dc46e5b91b6c2d85be5953b19e0897375a7f0fecaa298d066 +SHA512 (uwsgi-docs-c0f17cd.tar.gz) = ae5483f0d0bbbe417e11ed83bf0f9f89a0bd742f201f4bc243c1a084274f8abb2f26d7176150a8a875a6408a328ac935357af40e1e2efb815d8fb51da12b9566 diff --git a/uwsgi.spec b/uwsgi.spec index 968fa2a..a5ab8f0 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 59e6cd1044e20eaae73e5cd8114b77fb38c99ac5 +%global commit c0f17cd25b0f2fd60312e9d7194cf7cdfd39303a %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -180,8 +180,7 @@ %bcond_with glusterfs %bcond_without php %bcond_without pq -# EPEL10 doesn't have rubygem-rack yet -%bcond_with ruby_rack +%bcond_without ruby_rack # EPEL10 doesn't have gloox yet %bcond_with gloox # EPEL10 doesn't have GeoIP yet @@ -250,8 +249,8 @@ %endif Name: uwsgi -Version: 2.0.26 -Release: 8%{?dist} +Version: 2.0.27 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -281,8 +280,6 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch -# https://github.com/unbit/uwsgi/pull/2655 -Patch15: uwsgi_python313.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1340,7 +1337,6 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 -%patch -P15 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1962,6 +1958,11 @@ exit 0 %changelog +* 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 From f03b56ba3a5df36bc74e113f7492f033158f6ecd Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 29 Sep 2024 19:27:25 +0200 Subject: [PATCH 63/87] Only build fiber plugin when rack plugin is also built --- uwsgi.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index a5ab8f0..2a65ba3 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.27 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -743,12 +743,14 @@ 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 @@ -1382,7 +1384,9 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --v %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} @@ -1683,9 +1687,11 @@ exit 0 %{_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 @@ -1958,6 +1964,9 @@ exit 0 %changelog +* 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 From d3a2179c1da93bead669dc0c84b24c33f19be4e0 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 14 Oct 2024 10:42:39 +0200 Subject: [PATCH 64/87] rebuild for https://fedoraproject.org/wiki/Changes/php84 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 2a65ba3..381b8fc 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.27 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1964,6 +1964,9 @@ exit 0 %changelog +* 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 From e40dac04962e9b9c814f64f143dcde07ff47ce50 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Mon, 14 Oct 2024 20:12:42 +0200 Subject: [PATCH 65/87] Fix uWSGI auto-reloading on config change --- uwsgi-2.0.27-graceful-reload.patch | 41 ++++++++++++++++++++++++++++++ uwsgi.spec | 8 +++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 uwsgi-2.0.27-graceful-reload.patch diff --git a/uwsgi-2.0.27-graceful-reload.patch b/uwsgi-2.0.27-graceful-reload.patch new file mode 100644 index 0000000..dcec832 --- /dev/null +++ b/uwsgi-2.0.27-graceful-reload.patch @@ -0,0 +1,41 @@ +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.spec b/uwsgi.spec index 381b8fc..9add041 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.27 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -280,6 +280,8 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch +# https://github.com/unbit/uwsgi/issues/2681 +Patch15: uwsgi-2.0.27-graceful-reload.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1339,6 +1341,7 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 +%patch -P15 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1964,6 +1967,9 @@ exit 0 %changelog +* 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 From 64c090a890bfbc09c9c1825f1e141c84a409c68e Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 22 Oct 2024 13:40:31 +0100 Subject: [PATCH 66/87] Rebuild for Jansson 2.14 (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/) --- uwsgi.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 9add041..78f54df 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.27 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1967,6 +1967,10 @@ exit 0 %changelog +* 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 From b7b8802b0f317fe41c69877f54d0ddb282f77626 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 2 Nov 2024 21:24:40 +0100 Subject: [PATCH 67/87] Update to 2.0.28, drop merged patches --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 12 ++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 793b016..159e647 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,5 @@ /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 diff --git a/sources b/sources index 6892f4e..b5af45c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (2.0.27.tar.gz) = 78de6b8aa401ca5e27204cc68dec540617407dc9a0dad2c785a7eadc449889aad4eb516d4d8d257dc46e5b91b6c2d85be5953b19e0897375a7f0fecaa298d066 -SHA512 (uwsgi-docs-c0f17cd.tar.gz) = ae5483f0d0bbbe417e11ed83bf0f9f89a0bd742f201f4bc243c1a084274f8abb2f26d7176150a8a875a6408a328ac935357af40e1e2efb815d8fb51da12b9566 +SHA512 (2.0.28.tar.gz) = e5e8a4a21c590a2bc4023879fbf4c29ec4ed7a7dc201e76ff738a3bb5730bd3844ae39d2bf4fcd20be3935c54c5dcea9a785ede1ecf02225646342cbe70c4c72 +SHA512 (uwsgi-docs-9606cb0.tar.gz) = be8dccf6839e5162e1ab1ab0d84c7ba2cc7a36fa752be8667ebf10bd796ebd217900328b87946bc2ec107b45aff0080b24961c2ba8aced30a33853029c1ac923 diff --git a/uwsgi.spec b/uwsgi.spec index 78f54df..bef664e 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit c0f17cd25b0f2fd60312e9d7194cf7cdfd39303a +%global commit 9606cb0ee032e77113a043b21fcc386738de301b %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -249,8 +249,8 @@ %endif Name: uwsgi -Version: 2.0.27 -Release: 5%{?dist} +Version: 2.0.28 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -280,8 +280,6 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch -# https://github.com/unbit/uwsgi/issues/2681 -Patch15: uwsgi-2.0.27-graceful-reload.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1341,7 +1339,6 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 -%patch -P15 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1967,6 +1964,9 @@ exit 0 %changelog +* 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/) From 6fe6c653dd390b11b1476b705d88036110be03bb Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Wed, 8 Jan 2025 10:41:52 +0900 Subject: [PATCH 68/87] Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index bef664e..79153f0 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.28 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1964,6 +1964,9 @@ exit 0 %changelog +* 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 From 19e19698a5fea1a95781f5370e617359fda97de2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 14:01:56 +0000 Subject: [PATCH 69/87] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 79153f0..cdf2d9f 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.28 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1964,6 +1964,9 @@ exit 0 %changelog +* 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 From 6e2e54ccb9a7d1a536de205f08fb4bc46375b130 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Fri, 24 Jan 2025 21:14:49 +0100 Subject: [PATCH 70/87] Fix type errors flagged by GCC15 --- uwsgi.spec | 7 +- uwsgi_gcc15-signal-handler.patch | 341 +++++++++++++++++++++++++++++++ 2 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 uwsgi_gcc15-signal-handler.patch diff --git a/uwsgi.spec b/uwsgi.spec index cdf2d9f..f1cdceb 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.28 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -280,6 +280,7 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch +Patch15: uwsgi_gcc15-signal-handler.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1339,6 +1340,7 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 +%patch -P15 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -1964,6 +1966,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi_gcc15-signal-handler.patch b/uwsgi_gcc15-signal-handler.patch new file mode 100644 index 0000000..b63250a --- /dev/null +++ b/uwsgi_gcc15-signal-handler.patch @@ -0,0 +1,341 @@ +diff -uNr a/core/emperor.c b/core/emperor.c +--- a/core/emperor.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/emperor.c 2025-01-24 19:16:51.668840358 +0100 +@@ -598,7 +598,7 @@ + } + + +-static void emperor_stats() { ++static void emperor_stats(int sn) { + + struct uwsgi_instance *c_ui = ui->ui_next; + +diff -uNr a/core/fifo.c b/core/fifo.c +--- a/core/fifo.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/fifo.c 2025-01-24 19:52:16.760905071 +0100 +@@ -26,18 +26,18 @@ + + #define announce_fifo uwsgi_log_verbose("active master fifo is now %s\n", uwsgi_fifo_by_slot()) + +-static void uwsgi_fifo_set_slot_zero() { uwsgi.master_fifo_slot = 0; announce_fifo; } +-static void uwsgi_fifo_set_slot_one() { uwsgi.master_fifo_slot = 1; announce_fifo; } +-static void uwsgi_fifo_set_slot_two() { uwsgi.master_fifo_slot = 2; announce_fifo; } +-static void uwsgi_fifo_set_slot_three() { uwsgi.master_fifo_slot = 3; announce_fifo; } +-static void uwsgi_fifo_set_slot_four() { uwsgi.master_fifo_slot = 4; announce_fifo; } +-static void uwsgi_fifo_set_slot_five() { uwsgi.master_fifo_slot = 5; announce_fifo; } +-static void uwsgi_fifo_set_slot_six() { uwsgi.master_fifo_slot = 6; announce_fifo; } +-static void uwsgi_fifo_set_slot_seven() { uwsgi.master_fifo_slot = 7; announce_fifo; } +-static void uwsgi_fifo_set_slot_eight() { uwsgi.master_fifo_slot = 8; announce_fifo; } +-static void uwsgi_fifo_set_slot_nine() { uwsgi.master_fifo_slot = 9; announce_fifo; } ++static void uwsgi_fifo_set_slot_zero(int _) { uwsgi.master_fifo_slot = 0; announce_fifo; } ++static void uwsgi_fifo_set_slot_one(int _) { uwsgi.master_fifo_slot = 1; announce_fifo; } ++static void uwsgi_fifo_set_slot_two(int _) { uwsgi.master_fifo_slot = 2; announce_fifo; } ++static void uwsgi_fifo_set_slot_three(int _) { uwsgi.master_fifo_slot = 3; announce_fifo; } ++static void uwsgi_fifo_set_slot_four(int _) { uwsgi.master_fifo_slot = 4; announce_fifo; } ++static void uwsgi_fifo_set_slot_five(int _) { uwsgi.master_fifo_slot = 5; announce_fifo; } ++static void uwsgi_fifo_set_slot_six(int _) { uwsgi.master_fifo_slot = 6; announce_fifo; } ++static void uwsgi_fifo_set_slot_seven(int _) { uwsgi.master_fifo_slot = 7; announce_fifo; } ++static void uwsgi_fifo_set_slot_eight(int _) { uwsgi.master_fifo_slot = 8; announce_fifo; } ++static void uwsgi_fifo_set_slot_nine(int _) { uwsgi.master_fifo_slot = 9; announce_fifo; } + +-static void subscriptions_blocker() { ++static void subscriptions_blocker(int _) { + if (uwsgi.subscriptions_blocked) { + uwsgi_log_verbose("subscriptions re-enabled\n"); + uwsgi.subscriptions_blocked = 0; +@@ -48,7 +48,7 @@ + } + } + +-static void emperor_rescan() { ++static void emperor_rescan(int _) { + if (uwsgi.emperor_pid > 0) { + if (kill(uwsgi.emperor_pid, SIGWINCH)) { + uwsgi_error("emperor_rescan()/kill()"); +diff -uNr a/core/logging.c b/core/logging.c +--- a/core/logging.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/logging.c 2025-01-24 19:38:12.555044665 +0100 +@@ -509,10 +509,10 @@ + } + + if (need_rotation) { +- uwsgi_log_rotate(); ++ uwsgi_log_rotate(0); + } + else if (need_reopen) { +- uwsgi_log_reopen(); ++ uwsgi_log_reopen(0); + } + } + +@@ -552,13 +552,13 @@ + free(rot_name); + } + +-void uwsgi_log_rotate() { ++void uwsgi_log_rotate(int _) { + if (!uwsgi.logfile) + return; + uwsgi_log_do_rotate(uwsgi.logfile, uwsgi.log_backupname, uwsgi.shared->logsize, uwsgi.original_log_fd); + } + +-void uwsgi_log_reopen() { ++void uwsgi_log_reopen(int _) { + char message[1024]; + if (!uwsgi.logfile) return; + int ret = snprintf(message, 1024, "[%d] logsize: %llu, triggering log-reopen...\n", (int) uwsgi_now(), (unsigned long long) uwsgi.shared->logsize); +diff -uNr a/core/master.c b/core/master.c +--- a/core/master.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/master.c 2025-01-24 19:44:56.074389538 +0100 +@@ -26,7 +26,7 @@ + if (uwsgi.vassal_sos) { + if (uwsgi.current_time - last_sos > uwsgi.vassal_sos) { + uwsgi_log_verbose("asking Emperor for reinforcements (overload: %llu)...\n", (unsigned long long) ushared->overloaded); +- vassal_sos(); ++ vassal_sos(0); + last_sos = uwsgi.current_time; + } + } +@@ -294,12 +294,12 @@ + if (uwsgi.shared->backlog >= (uint64_t) uwsgi.vassal_sos_backlog) { + // ask emperor for help + uwsgi_log_verbose("asking Emperor for reinforcements (backlog: %llu)...\n", (unsigned long long) uwsgi.shared->backlog); +- vassal_sos(); ++ vassal_sos(0); + } + } + } + +-void vassal_sos() { ++void vassal_sos(int _) { + if (!uwsgi.has_emperor) { + uwsgi_log("[broodlord] instance not governed by an Emperor !!!\n"); + return; +@@ -835,19 +835,19 @@ + touched = uwsgi_check_touches(uwsgi.touch_workers_reload); + if (touched) { + uwsgi_log_verbose("*** %s has been touched... workers reload !!! ***\n", touched); +- uwsgi_reload_workers(); ++ uwsgi_reload_workers(0); + continue; + } + touched = uwsgi_check_touches(uwsgi.touch_mules_reload); + if (touched) { + uwsgi_log_verbose("*** %s has been touched... mules reload !!! ***\n", touched); +- uwsgi_reload_mules(); ++ uwsgi_reload_mules(0); + continue; + } + touched = uwsgi_check_touches(uwsgi.touch_spoolers_reload); + if (touched) { + uwsgi_log_verbose("*** %s has been touched... spoolers reload !!! ***\n", touched); +- uwsgi_reload_spoolers(); ++ uwsgi_reload_spoolers(0); + continue; + } + touched = uwsgi_check_touches(uwsgi.touch_chain_reload); +@@ -1090,7 +1090,7 @@ + // never here + } + +-void uwsgi_reload_workers() { ++void uwsgi_reload_workers(int _) { + int i; + uwsgi_block_signal(SIGHUP); + for (i = 1; i <= uwsgi.numproc; i++) { +@@ -1101,7 +1101,7 @@ + uwsgi_unblock_signal(SIGHUP); + } + +-void uwsgi_reload_mules() { ++void uwsgi_reload_mules(int _) { + int i; + + uwsgi_block_signal(SIGHUP); +@@ -1113,7 +1113,7 @@ + uwsgi_unblock_signal(SIGHUP); + } + +-void uwsgi_reload_spoolers() { ++void uwsgi_reload_spoolers(int _) { + struct uwsgi_spooler *us; + + uwsgi_block_signal(SIGHUP); +@@ -1127,7 +1127,7 @@ + uwsgi_unblock_signal(SIGHUP); + } + +-void uwsgi_chain_reload() { ++void uwsgi_chain_reload(int _) { + if (!uwsgi.status.chain_reloading) { + uwsgi_log_verbose("chain reload starting...\n"); + uwsgi.status.chain_reloading = 1; +@@ -1137,7 +1137,7 @@ + } + } + +-void uwsgi_brutally_reload_workers() { ++void uwsgi_brutally_reload_workers(int _) { + int i; + for (i = 1; i <= uwsgi.numproc; i++) { + if (uwsgi.workers[i].pid > 0) { +diff -uNr a/core/master_utils.c b/core/master_utils.c +--- a/core/master_utils.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/master_utils.c 2025-01-24 19:49:28.710316162 +0100 +@@ -2,7 +2,7 @@ + + extern struct uwsgi_server uwsgi; + +-void worker_wakeup() { ++void worker_wakeup(int sn) { + } + + uint64_t uwsgi_worker_exceptions(int wid) { +@@ -1725,7 +1725,7 @@ + add_reload_fds(uwsgi.brutal_reload_on_fd, "brutal"); + } + +-void uwsgi_refork_master() { ++void uwsgi_refork_master(int _) { + pid_t pid = fork(); + if (pid < 0) { + uwsgi_error("uwsgi_refork_master()/fork()"); +@@ -1746,15 +1746,15 @@ + exit(1); + } + +-void uwsgi_cheaper_increase() { ++void uwsgi_cheaper_increase(int _) { + uwsgi.cheaper_fifo_delta++; + } + +-void uwsgi_cheaper_decrease() { ++void uwsgi_cheaper_decrease(int _) { + uwsgi.cheaper_fifo_delta--; + } + +-void uwsgi_go_cheap() { ++void uwsgi_go_cheap(int _) { + int i; + int waitpid_status; + if (uwsgi.status.is_cheap) return; +diff -uNr a/core/spooler.c b/core/spooler.c +--- a/core/spooler.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/spooler.c 2025-01-24 19:56:28.472783607 +0100 +@@ -12,7 +12,7 @@ + static uint64_t wakeup = 0; + + // function to allow waking up the spooler if blocked in event_wait +-void spooler_wakeup() { ++void spooler_wakeup(int sn) { + wakeup++; + } + +diff -uNr a/core/uwsgi.c b/core/uwsgi.c +--- a/core/uwsgi.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/core/uwsgi.c 2025-01-24 19:59:45.448471107 +0100 +@@ -4957,7 +4957,7 @@ + exit(0); + } + +-void uwsgi_update_pidfiles() { ++void uwsgi_update_pidfiles(int _) { + if (uwsgi.pidfile) { + uwsgi_write_pidfile(uwsgi.pidfile); + } +diff -uNr a/plugins/fiber/fiber.c b/plugins/fiber/fiber.c +--- a/plugins/fiber/fiber.c 2024-10-26 11:59:26.000000000 +0200 ++++ b/plugins/fiber/fiber.c 2025-01-24 20:18:47.222902654 +0100 +@@ -15,12 +15,12 @@ + }; + + +-VALUE uwsgi_fiber_request() { ++VALUE uwsgi_fiber_request(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg) { + async_schedule_to_req_green(); + return Qnil; + } + +-VALUE rb_fiber_schedule_to_req() { ++VALUE rb_fiber_schedule_to_req(VALUE args) { + int id = uwsgi.wsgi_req->async_id; + + if (!uwsgi.wsgi_req->suspended) { +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 _) { + // 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 -uNr a/uwsgi.h b/uwsgi.h +--- a/uwsgi.h 2024-10-26 11:59:26.000000000 +0200 ++++ b/uwsgi.h 2025-01-24 20:44:03.648790992 +0100 +@@ -4787,20 +4787,20 @@ + int uwsgi_master_fifo_manage(int); + + void uwsgi_log_do_rotate(char *, char *, off_t, int); +-void uwsgi_log_rotate(); +-void uwsgi_log_reopen(); +-void uwsgi_reload_workers(); +-void uwsgi_reload_mules(); +-void uwsgi_reload_spoolers(); +-void uwsgi_chain_reload(); +-void uwsgi_refork_master(); +-void uwsgi_update_pidfiles(); ++void uwsgi_log_rotate(int); ++void uwsgi_log_reopen(int); ++void uwsgi_reload_workers(int); ++void uwsgi_reload_mules(int); ++void uwsgi_reload_spoolers(int); ++void uwsgi_chain_reload(int); ++void uwsgi_refork_master(int); ++void uwsgi_update_pidfiles(int); + void gracefully_kill_them_all(int); +-void uwsgi_brutally_reload_workers(); ++void uwsgi_brutally_reload_workers(int); + +-void uwsgi_cheaper_increase(); +-void uwsgi_cheaper_decrease(); +-void uwsgi_go_cheap(); ++void uwsgi_cheaper_increase(int); ++void uwsgi_cheaper_decrease(int); ++void uwsgi_go_cheap(int); + + char **uwsgi_split_quoted(char *, size_t, char *, size_t *); + +@@ -4987,7 +4987,7 @@ + + int uwsgi_notify_socket_manage(int); + int uwsgi_notify_msg(char *, char *, size_t); +-void vassal_sos(); ++void vassal_sos(int); + + int uwsgi_wait_for_fs(char *, int); + int uwsgi_wait_for_mountpoint(char *); From 72801155cd17bd2ef4c49f529ebd40ec9fdd993e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sat, 1 Feb 2025 19:58:05 +0100 Subject: [PATCH 71/87] Add explicit BR: libxcrypt-devel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Björn Esser --- uwsgi.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index f1cdceb..82bf618 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.28 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -284,6 +284,7 @@ Patch15: uwsgi_gcc15-signal-handler.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 @@ -1966,6 +1967,9 @@ exit 0 %changelog +* 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 From e82e663aebe013fe8418c8e8af3e2bbe1f957ed1 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Tue, 18 Feb 2025 22:23:30 +0100 Subject: [PATCH 72/87] Add sysusers.d config file to allow rpm to create users/groups automatically --- uwsgi.spec | 16 +++++++--------- uwsgi.sysusers | 1 + 2 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 uwsgi.sysusers diff --git a/uwsgi.spec b/uwsgi.spec index 82bf618..d5ae8ea 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.28 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -267,6 +267,7 @@ 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 @@ -372,7 +373,6 @@ Obsoletes: uwsgi-routers <= 2.0.6 Obsoletes: uwsgi-plugin-erlang <= 1.9.20-1 Obsoletes: uwsgi-plugin-admin <= 2.0.6 -Requires(pre): shadow-utils %{?systemd_requires} %filter_requires_in %{_usrsrc} @@ -1500,13 +1500,7 @@ install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so %endif - -%pre -getent group uwsgi >/dev/null || groupadd -r uwsgi -getent passwd uwsgi >/dev/null || \ - useradd -r -g uwsgi -d /run/uwsgi -s /sbin/nologin \ - -c "uWSGI daemon user" uwsgi -exit 0 +install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %post %systemd_post uwsgi.service @@ -1526,6 +1520,7 @@ exit 0 %dir %{_sysconfdir}/uwsgi.d %doc README README.Fedora CHANGELOG %license LICENSE +%{_sysusersdir}/uwsgi.conf %files -n uwsgi-devel %{_includedir}/uwsgi @@ -1967,6 +1962,9 @@ exit 0 %changelog +* 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 diff --git a/uwsgi.sysusers b/uwsgi.sysusers new file mode 100644 index 0000000..30b5692 --- /dev/null +++ b/uwsgi.sysusers @@ -0,0 +1 @@ +u uwsgi - 'uWSGI daemon user' /run/uwsgi - From 2cad1e43b7b3a07ee3a55ea199a5f46af53d0066 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Mon, 24 Mar 2025 19:45:33 +0100 Subject: [PATCH 73/87] Rebuild for new libgo --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index d5ae8ea..1f6b02c 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.28 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From b0edddcb6b83b67aea1f98bd223ac30bed15a0cc Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sat, 12 Apr 2025 12:57:47 +0200 Subject: [PATCH 74/87] Update to 2.0.29 --- .gitignore | 2 + sources | 4 +- uwsgi.spec | 9 +- uwsgi_gcc15-signal-handler.patch | 310 +------------------------------ 4 files changed, 11 insertions(+), 314 deletions(-) diff --git a/.gitignore b/.gitignore index 159e647..0561e1e 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,5 @@ /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 diff --git a/sources b/sources index b5af45c..4451a97 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (2.0.28.tar.gz) = e5e8a4a21c590a2bc4023879fbf4c29ec4ed7a7dc201e76ff738a3bb5730bd3844ae39d2bf4fcd20be3935c54c5dcea9a785ede1ecf02225646342cbe70c4c72 -SHA512 (uwsgi-docs-9606cb0.tar.gz) = be8dccf6839e5162e1ab1ab0d84c7ba2cc7a36fa752be8667ebf10bd796ebd217900328b87946bc2ec107b45aff0080b24961c2ba8aced30a33853029c1ac923 +SHA512 (2.0.29.tar.gz) = 6aaaaae9e067814e430dd80e5ac44e806f937c84f0b38a7ac3f399e92a392a426fe41c23c76371203a31625f985a3f5b397a3294b634c1c7a1280981023bdad1 +SHA512 (uwsgi-docs-b9da5ea.tar.gz) = 94756864572994feb0387d7712bc19538f5a8cf6eed57c6171ee12cb8b7a3e268b2d9695c0d4205c4972401fd2a246badfbb118880f3e531c2803dd3431c8420 diff --git a/uwsgi.spec b/uwsgi.spec index 1f6b02c..17ba2cb 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit 9606cb0ee032e77113a043b21fcc386738de301b +%global commit b9da5eadc78985ec6dff7e3a755ca7be42f9f4c2 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -249,8 +249,8 @@ %endif Name: uwsgi -Version: 2.0.28 -Release: 7%{?dist} +Version: 2.0.29 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 diff --git a/uwsgi_gcc15-signal-handler.patch b/uwsgi_gcc15-signal-handler.patch index b63250a..a36dc99 100644 --- a/uwsgi_gcc15-signal-handler.patch +++ b/uwsgi_gcc15-signal-handler.patch @@ -1,266 +1,3 @@ -diff -uNr a/core/emperor.c b/core/emperor.c ---- a/core/emperor.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/emperor.c 2025-01-24 19:16:51.668840358 +0100 -@@ -598,7 +598,7 @@ - } - - --static void emperor_stats() { -+static void emperor_stats(int sn) { - - struct uwsgi_instance *c_ui = ui->ui_next; - -diff -uNr a/core/fifo.c b/core/fifo.c ---- a/core/fifo.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/fifo.c 2025-01-24 19:52:16.760905071 +0100 -@@ -26,18 +26,18 @@ - - #define announce_fifo uwsgi_log_verbose("active master fifo is now %s\n", uwsgi_fifo_by_slot()) - --static void uwsgi_fifo_set_slot_zero() { uwsgi.master_fifo_slot = 0; announce_fifo; } --static void uwsgi_fifo_set_slot_one() { uwsgi.master_fifo_slot = 1; announce_fifo; } --static void uwsgi_fifo_set_slot_two() { uwsgi.master_fifo_slot = 2; announce_fifo; } --static void uwsgi_fifo_set_slot_three() { uwsgi.master_fifo_slot = 3; announce_fifo; } --static void uwsgi_fifo_set_slot_four() { uwsgi.master_fifo_slot = 4; announce_fifo; } --static void uwsgi_fifo_set_slot_five() { uwsgi.master_fifo_slot = 5; announce_fifo; } --static void uwsgi_fifo_set_slot_six() { uwsgi.master_fifo_slot = 6; announce_fifo; } --static void uwsgi_fifo_set_slot_seven() { uwsgi.master_fifo_slot = 7; announce_fifo; } --static void uwsgi_fifo_set_slot_eight() { uwsgi.master_fifo_slot = 8; announce_fifo; } --static void uwsgi_fifo_set_slot_nine() { uwsgi.master_fifo_slot = 9; announce_fifo; } -+static void uwsgi_fifo_set_slot_zero(int _) { uwsgi.master_fifo_slot = 0; announce_fifo; } -+static void uwsgi_fifo_set_slot_one(int _) { uwsgi.master_fifo_slot = 1; announce_fifo; } -+static void uwsgi_fifo_set_slot_two(int _) { uwsgi.master_fifo_slot = 2; announce_fifo; } -+static void uwsgi_fifo_set_slot_three(int _) { uwsgi.master_fifo_slot = 3; announce_fifo; } -+static void uwsgi_fifo_set_slot_four(int _) { uwsgi.master_fifo_slot = 4; announce_fifo; } -+static void uwsgi_fifo_set_slot_five(int _) { uwsgi.master_fifo_slot = 5; announce_fifo; } -+static void uwsgi_fifo_set_slot_six(int _) { uwsgi.master_fifo_slot = 6; announce_fifo; } -+static void uwsgi_fifo_set_slot_seven(int _) { uwsgi.master_fifo_slot = 7; announce_fifo; } -+static void uwsgi_fifo_set_slot_eight(int _) { uwsgi.master_fifo_slot = 8; announce_fifo; } -+static void uwsgi_fifo_set_slot_nine(int _) { uwsgi.master_fifo_slot = 9; announce_fifo; } - --static void subscriptions_blocker() { -+static void subscriptions_blocker(int _) { - if (uwsgi.subscriptions_blocked) { - uwsgi_log_verbose("subscriptions re-enabled\n"); - uwsgi.subscriptions_blocked = 0; -@@ -48,7 +48,7 @@ - } - } - --static void emperor_rescan() { -+static void emperor_rescan(int _) { - if (uwsgi.emperor_pid > 0) { - if (kill(uwsgi.emperor_pid, SIGWINCH)) { - uwsgi_error("emperor_rescan()/kill()"); -diff -uNr a/core/logging.c b/core/logging.c ---- a/core/logging.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/logging.c 2025-01-24 19:38:12.555044665 +0100 -@@ -509,10 +509,10 @@ - } - - if (need_rotation) { -- uwsgi_log_rotate(); -+ uwsgi_log_rotate(0); - } - else if (need_reopen) { -- uwsgi_log_reopen(); -+ uwsgi_log_reopen(0); - } - } - -@@ -552,13 +552,13 @@ - free(rot_name); - } - --void uwsgi_log_rotate() { -+void uwsgi_log_rotate(int _) { - if (!uwsgi.logfile) - return; - uwsgi_log_do_rotate(uwsgi.logfile, uwsgi.log_backupname, uwsgi.shared->logsize, uwsgi.original_log_fd); - } - --void uwsgi_log_reopen() { -+void uwsgi_log_reopen(int _) { - char message[1024]; - if (!uwsgi.logfile) return; - int ret = snprintf(message, 1024, "[%d] logsize: %llu, triggering log-reopen...\n", (int) uwsgi_now(), (unsigned long long) uwsgi.shared->logsize); -diff -uNr a/core/master.c b/core/master.c ---- a/core/master.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/master.c 2025-01-24 19:44:56.074389538 +0100 -@@ -26,7 +26,7 @@ - if (uwsgi.vassal_sos) { - if (uwsgi.current_time - last_sos > uwsgi.vassal_sos) { - uwsgi_log_verbose("asking Emperor for reinforcements (overload: %llu)...\n", (unsigned long long) ushared->overloaded); -- vassal_sos(); -+ vassal_sos(0); - last_sos = uwsgi.current_time; - } - } -@@ -294,12 +294,12 @@ - if (uwsgi.shared->backlog >= (uint64_t) uwsgi.vassal_sos_backlog) { - // ask emperor for help - uwsgi_log_verbose("asking Emperor for reinforcements (backlog: %llu)...\n", (unsigned long long) uwsgi.shared->backlog); -- vassal_sos(); -+ vassal_sos(0); - } - } - } - --void vassal_sos() { -+void vassal_sos(int _) { - if (!uwsgi.has_emperor) { - uwsgi_log("[broodlord] instance not governed by an Emperor !!!\n"); - return; -@@ -835,19 +835,19 @@ - touched = uwsgi_check_touches(uwsgi.touch_workers_reload); - if (touched) { - uwsgi_log_verbose("*** %s has been touched... workers reload !!! ***\n", touched); -- uwsgi_reload_workers(); -+ uwsgi_reload_workers(0); - continue; - } - touched = uwsgi_check_touches(uwsgi.touch_mules_reload); - if (touched) { - uwsgi_log_verbose("*** %s has been touched... mules reload !!! ***\n", touched); -- uwsgi_reload_mules(); -+ uwsgi_reload_mules(0); - continue; - } - touched = uwsgi_check_touches(uwsgi.touch_spoolers_reload); - if (touched) { - uwsgi_log_verbose("*** %s has been touched... spoolers reload !!! ***\n", touched); -- uwsgi_reload_spoolers(); -+ uwsgi_reload_spoolers(0); - continue; - } - touched = uwsgi_check_touches(uwsgi.touch_chain_reload); -@@ -1090,7 +1090,7 @@ - // never here - } - --void uwsgi_reload_workers() { -+void uwsgi_reload_workers(int _) { - int i; - uwsgi_block_signal(SIGHUP); - for (i = 1; i <= uwsgi.numproc; i++) { -@@ -1101,7 +1101,7 @@ - uwsgi_unblock_signal(SIGHUP); - } - --void uwsgi_reload_mules() { -+void uwsgi_reload_mules(int _) { - int i; - - uwsgi_block_signal(SIGHUP); -@@ -1113,7 +1113,7 @@ - uwsgi_unblock_signal(SIGHUP); - } - --void uwsgi_reload_spoolers() { -+void uwsgi_reload_spoolers(int _) { - struct uwsgi_spooler *us; - - uwsgi_block_signal(SIGHUP); -@@ -1127,7 +1127,7 @@ - uwsgi_unblock_signal(SIGHUP); - } - --void uwsgi_chain_reload() { -+void uwsgi_chain_reload(int _) { - if (!uwsgi.status.chain_reloading) { - uwsgi_log_verbose("chain reload starting...\n"); - uwsgi.status.chain_reloading = 1; -@@ -1137,7 +1137,7 @@ - } - } - --void uwsgi_brutally_reload_workers() { -+void uwsgi_brutally_reload_workers(int _) { - int i; - for (i = 1; i <= uwsgi.numproc; i++) { - if (uwsgi.workers[i].pid > 0) { -diff -uNr a/core/master_utils.c b/core/master_utils.c ---- a/core/master_utils.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/master_utils.c 2025-01-24 19:49:28.710316162 +0100 -@@ -2,7 +2,7 @@ - - extern struct uwsgi_server uwsgi; - --void worker_wakeup() { -+void worker_wakeup(int sn) { - } - - uint64_t uwsgi_worker_exceptions(int wid) { -@@ -1725,7 +1725,7 @@ - add_reload_fds(uwsgi.brutal_reload_on_fd, "brutal"); - } - --void uwsgi_refork_master() { -+void uwsgi_refork_master(int _) { - pid_t pid = fork(); - if (pid < 0) { - uwsgi_error("uwsgi_refork_master()/fork()"); -@@ -1746,15 +1746,15 @@ - exit(1); - } - --void uwsgi_cheaper_increase() { -+void uwsgi_cheaper_increase(int _) { - uwsgi.cheaper_fifo_delta++; - } - --void uwsgi_cheaper_decrease() { -+void uwsgi_cheaper_decrease(int _) { - uwsgi.cheaper_fifo_delta--; - } - --void uwsgi_go_cheap() { -+void uwsgi_go_cheap(int _) { - int i; - int waitpid_status; - if (uwsgi.status.is_cheap) return; -diff -uNr a/core/spooler.c b/core/spooler.c ---- a/core/spooler.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/spooler.c 2025-01-24 19:56:28.472783607 +0100 -@@ -12,7 +12,7 @@ - static uint64_t wakeup = 0; - - // function to allow waking up the spooler if blocked in event_wait --void spooler_wakeup() { -+void spooler_wakeup(int sn) { - wakeup++; - } - -diff -uNr a/core/uwsgi.c b/core/uwsgi.c ---- a/core/uwsgi.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/core/uwsgi.c 2025-01-24 19:59:45.448471107 +0100 -@@ -4957,7 +4957,7 @@ - exit(0); - } - --void uwsgi_update_pidfiles() { -+void uwsgi_update_pidfiles(int _) { - if (uwsgi.pidfile) { - uwsgi_write_pidfile(uwsgi.pidfile); - } -diff -uNr a/plugins/fiber/fiber.c b/plugins/fiber/fiber.c ---- a/plugins/fiber/fiber.c 2024-10-26 11:59:26.000000000 +0200 -+++ b/plugins/fiber/fiber.c 2025-01-24 20:18:47.222902654 +0100 -@@ -15,12 +15,12 @@ - }; - - --VALUE uwsgi_fiber_request() { -+VALUE uwsgi_fiber_request(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg) { - async_schedule_to_req_green(); - return Qnil; - } - --VALUE rb_fiber_schedule_to_req() { -+VALUE rb_fiber_schedule_to_req(VALUE args) { - int id = uwsgi.wsgi_req->async_id; - - if (!uwsgi.wsgi_req->suspended) { 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 @@ -269,7 +6,7 @@ diff -uNr a/plugins/pty/pty.c b/plugins/pty/pty.c } -static void uwsgi_pty_winch() { -+static void uwsgi_pty_winch(int _) { ++static void uwsgi_pty_winch(int signum) { // 2 uwsgi packets char uwsgi_pkt[8]; #ifdef TIOCGWINSZ @@ -294,48 +31,3 @@ diff -uNr a/plugins/tuntap/tuntap.c b/plugins/tuntap/tuntap.c if (!utt.routers) return; -diff -uNr a/uwsgi.h b/uwsgi.h ---- a/uwsgi.h 2024-10-26 11:59:26.000000000 +0200 -+++ b/uwsgi.h 2025-01-24 20:44:03.648790992 +0100 -@@ -4787,20 +4787,20 @@ - int uwsgi_master_fifo_manage(int); - - void uwsgi_log_do_rotate(char *, char *, off_t, int); --void uwsgi_log_rotate(); --void uwsgi_log_reopen(); --void uwsgi_reload_workers(); --void uwsgi_reload_mules(); --void uwsgi_reload_spoolers(); --void uwsgi_chain_reload(); --void uwsgi_refork_master(); --void uwsgi_update_pidfiles(); -+void uwsgi_log_rotate(int); -+void uwsgi_log_reopen(int); -+void uwsgi_reload_workers(int); -+void uwsgi_reload_mules(int); -+void uwsgi_reload_spoolers(int); -+void uwsgi_chain_reload(int); -+void uwsgi_refork_master(int); -+void uwsgi_update_pidfiles(int); - void gracefully_kill_them_all(int); --void uwsgi_brutally_reload_workers(); -+void uwsgi_brutally_reload_workers(int); - --void uwsgi_cheaper_increase(); --void uwsgi_cheaper_decrease(); --void uwsgi_go_cheap(); -+void uwsgi_cheaper_increase(int); -+void uwsgi_cheaper_decrease(int); -+void uwsgi_go_cheap(int); - - char **uwsgi_split_quoted(char *, size_t, char *, size_t *); - -@@ -4987,7 +4987,7 @@ - - int uwsgi_notify_socket_manage(int); - int uwsgi_notify_msg(char *, char *, size_t); --void vassal_sos(); -+void vassal_sos(int); - - int uwsgi_wait_for_fs(char *, int); - int uwsgi_wait_for_mountpoint(char *); From f6a6568654ed64290635e2a2142027f40440df32 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Tue, 3 Jun 2025 15:52:55 +0200 Subject: [PATCH 75/87] Rebuilt for Python 3.14 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 17ba2cb..65df39b 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.29 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 7fdcfd0cd4fcba663aae9158b19b07dfbedd1199 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 8 Jun 2025 18:37:32 +0200 Subject: [PATCH 76/87] Update to 2.0.30 --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 9 ++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 0561e1e..3fb1840 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,5 @@ /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 diff --git a/sources b/sources index 4451a97..3f730d8 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (2.0.29.tar.gz) = 6aaaaae9e067814e430dd80e5ac44e806f937c84f0b38a7ac3f399e92a392a426fe41c23c76371203a31625f985a3f5b397a3294b634c1c7a1280981023bdad1 -SHA512 (uwsgi-docs-b9da5ea.tar.gz) = 94756864572994feb0387d7712bc19538f5a8cf6eed57c6171ee12cb8b7a3e268b2d9695c0d4205c4972401fd2a246badfbb118880f3e531c2803dd3431c8420 +SHA512 (2.0.30.tar.gz) = a8ff667e55956285427d440cf40c552ad6628c192e3b4d0a3d8d5f96aec09c18466feb64f4b305d84194a7d5e2bb15a49a1d6b807af538e474e72867ceb7f644 +SHA512 (uwsgi-docs-f728a25.tar.gz) = d9c43572ea325fc841b929d82f24fd2ec6e798899b7f0d2a74936ad51967f71c09d759f1a2cfb7708a2f9828ac46d06c50c81c9a72828c160231fa281f317415 diff --git a/uwsgi.spec b/uwsgi.spec index 65df39b..b7c1705 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit b9da5eadc78985ec6dff7e3a755ca7be42f9f4c2 +%global commit f728a2505313a928413af07720db7b261e8adcd4 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -249,8 +249,8 @@ %endif Name: uwsgi -Version: 2.0.29 -Release: 2%{?dist} +Version: 2.0.30 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 14c9d4c7a604d9a891aef8204487a3aa7c8e2772 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Mon, 9 Jun 2025 07:43:54 +0200 Subject: [PATCH 77/87] Rebuilt for Python 3.14 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index b7c1705..b51c235 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.30 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 0d453e9ae85969e96ee89b3ab13d196e95790ce2 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 8 Jul 2025 14:25:37 +0200 Subject: [PATCH 78/87] Perl 5.42 rebuild --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index b51c235..7d8dfd2 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.30 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 1e2ce24bb0e5b19136360a1d70c997de2f7aba6b Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 24 Jul 2025 16:11:11 +0200 Subject: [PATCH 79/87] Disable perl-Coro for rawhide, as this blocks rebuilding for perl 5.42 (see https://bugzilla.redhat.com/show_bug.cgi?id=2379448) --- uwsgi.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 7d8dfd2..dbb8684 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -26,7 +26,7 @@ %bcond_without tuntap %bcond_without zeromq %bcond_without perl -%bcond_without perlcoro +%bcond_with perlcoro %bcond_without glusterfs %bcond_without php %bcond_without pq @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.30 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,10 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 06e8062cb468efd5e498b8c2eea38383ac6ed92b Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 15 Aug 2025 15:21:55 +0200 Subject: [PATCH 80/87] Rebuilt for Python 3.14.0rc2 bytecode --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index dbb8684..e682c26 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -250,7 +250,7 @@ Name: uwsgi Version: 2.0.30 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -1962,6 +1962,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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) From 305e1c563fe8c061bf748b964c904750c45c511b Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 20 Aug 2025 20:35:03 +0200 Subject: [PATCH 81/87] Add python3.13 module for EL9 --- uwsgi.spec | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index e682c26..3269d84 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -160,6 +160,14 @@ %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 @@ -239,6 +247,9 @@ %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 @@ -247,10 +258,11 @@ %endif %endif %endif +%endif Name: uwsgi Version: 2.0.30 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -307,6 +319,9 @@ BuildRequires: %{python3_alternate1_pkgname}-devel %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 @@ -451,6 +466,17 @@ 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 @@ -810,6 +836,15 @@ Requires: uwsgi-plugin-python%{python3_alternate2_version_nodots} = %{version}-% 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 @@ -978,6 +1013,15 @@ Requires: %{python3_alternate2_pkgname}, uwsgi-plugin-common = %{version}-%{rele 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 @@ -1363,6 +1407,10 @@ CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python3_alternate1} uwsgic 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 @@ -1487,6 +1535,12 @@ install -D -p -m 0644 uwsgidecorators.py %{buildroot}%{python3_alternate2_siteli %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 @@ -1549,6 +1603,12 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %{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 @@ -1721,6 +1781,11 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %{_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 @@ -1805,6 +1870,11 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %{_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 @@ -1962,6 +2032,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From fce9901ade52fe029f1d1cd63e99bb6c0a340424 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 19 Sep 2025 15:01:52 +0200 Subject: [PATCH 82/87] Rebuilt for Python 3.14.0rc3 bytecode --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 3269d84..790480e 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -262,7 +262,7 @@ Name: uwsgi Version: 2.0.30 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -2032,6 +2032,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 451e6fd8be531397ba8abcf742efaf50176a5078 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 12 Oct 2025 16:53:42 +0200 Subject: [PATCH 83/87] Update to 2.0.31, drop merged patches --- .gitignore | 2 ++ sources | 4 ++-- uwsgi.spec | 11 ++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 3fb1840..cceb6ff 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,5 @@ /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/sources b/sources index 3f730d8..6394bca 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (2.0.30.tar.gz) = a8ff667e55956285427d440cf40c552ad6628c192e3b4d0a3d8d5f96aec09c18466feb64f4b305d84194a7d5e2bb15a49a1d6b807af538e474e72867ceb7f644 -SHA512 (uwsgi-docs-f728a25.tar.gz) = d9c43572ea325fc841b929d82f24fd2ec6e798899b7f0d2a74936ad51967f71c09d759f1a2cfb7708a2f9828ac46d06c50c81c9a72828c160231fa281f317415 +SHA512 (uwsgi-docs-5784c30.tar.gz) = 4f966da4a867e45043a0eb4a123b439c8ab1f7ce6e8b32d770545ff7fae586e4e7dd011106aa6ed0ec82a6c6192937e0fd12ed681443332205566fc329e11cd8 +SHA512 (2.0.31.tar.gz) = d4d327f36455438e165298cb5a7d483c951f4acd3d834b46ceeda105bd3664792ead226b02e06db62e92c210544778119bf75a55d9d4f30f8fba896c7de51e6d diff --git a/uwsgi.spec b/uwsgi.spec index 790480e..3359e4c 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -1,5 +1,5 @@ # Documentation sources: -%global commit f728a2505313a928413af07720db7b261e8adcd4 +%global commit 5784c30866a94942a5200db4d5f6c2850afb1caa %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global docrepo uwsgi-docs @@ -261,8 +261,8 @@ %endif Name: uwsgi -Version: 2.0.30 -Release: 7%{?dist} +Version: 2.0.31 +Release: 1%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -293,7 +293,6 @@ Patch6: uwsgi_v8-314_compatibility.patch Patch7: uwsgi_fix_mono.patch Patch13: uwsgi_fix_chroot_chdir.patch Patch14: uwsgi_python312-2.patch -Patch15: uwsgi_gcc15-signal-handler.patch BuildRequires: curl, libxml2-devel, libuuid-devel, jansson-devel BuildRequires: libyaml-devel, ruby-devel @@ -1385,7 +1384,6 @@ cp -p %{SOURCE5} README.Fedora %endif %patch -P13 -p1 %patch -P14 -p1 -%patch -P15 -p1 %build CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable -fPIC" %{__python} uwsgiconfig.py --verbose --build fedora.ini @@ -2032,6 +2030,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From b2673a41cc434fed2eb1a4a4a8952b5fa91b646c Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 15 Oct 2025 07:59:30 +0200 Subject: [PATCH 84/87] rebuild for https://fedoraproject.org/wiki/Changes/php85 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 3359e4c..decf399 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -262,7 +262,7 @@ Name: uwsgi Version: 2.0.31 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -2030,6 +2030,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 87e2b9fbb4ab9498c5f49e87addb776fe0b007fe Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 26 Nov 2025 21:49:21 +0100 Subject: [PATCH 85/87] Fix path errors for EPEL9 uwsgidecorator packages --- uwsgi.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index decf399..f32fc84 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -148,7 +148,7 @@ %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_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 @@ -156,7 +156,7 @@ %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_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 @@ -164,7 +164,7 @@ %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_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 @@ -262,7 +262,7 @@ Name: uwsgi Version: 2.0.31 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -2030,6 +2030,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From 4f78b765d16702a889e6149633461ba77ae46bd8 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Thu, 8 Jan 2026 20:15:17 +0900 Subject: [PATCH 86/87] Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index f32fc84..338f608 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -262,7 +262,7 @@ Name: uwsgi Version: 2.0.31 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -2030,6 +2030,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %changelog +* 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 From dd58e131b7f1e4ab706a7ff635210214351a5a7e Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 11 Jan 2026 18:29:57 +0100 Subject: [PATCH 87/87] Rebuild for new gccgo libraries --- uwsgi.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 338f608..424e718 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -262,7 +262,7 @@ Name: uwsgi Version: 2.0.31 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast, self-healing, application container server # uwsgi is licensed under GPLv2 with a linking exception # docs are licensed under MIT @@ -2030,6 +2030,9 @@ install -m0644 -D %{SOURCE8} %{buildroot}%{_sysusersdir}/uwsgi.conf %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