From 6ce71e5bb084fd8404c5d1e5c579f6ae8691ec6e Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Wed, 16 Feb 2022 19:40:16 +0100 Subject: [PATCH 01/75] 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 02/75] 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 03/75] 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 04/75] 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 05/75] 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 06/75] 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 07/75] 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 08/75] 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 09/75] 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 10/75] 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 11/75] 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 12/75] 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 13/75] 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 14/75] 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 15/75] 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 16/75] 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 17/75] 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 18/75] 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 19/75] 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 20/75] 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 21/75] 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 22/75] 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 23/75] 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 24/75] 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 25/75] 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 26/75] 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 27/75] 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 28/75] 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 29/75] 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 30/75] 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 31/75] 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 32/75] 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 33/75] 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 34/75] 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 35/75] 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 36/75] 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 37/75] 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 38/75] 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 39/75] 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 40/75] 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 41/75] 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 42/75] 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 43/75] 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 44/75] 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 45/75] 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 46/75] 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 47/75] 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 48/75] 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 49/75] 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 50/75] 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 51/75] 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 52/75] 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 53/75] 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 54/75] 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 55/75] 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 56/75] 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 57/75] 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 58/75] 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 59/75] 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 60/75] 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 61/75] 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 62/75] 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 63/75] 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 64/75] 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 65/75] 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 66/75] 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 67/75] 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 68/75] 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 69/75] 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 70/75] 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 71/75] 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 72/75] 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 73/75] 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 74/75] 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 75/75] 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