From 64940f3b452c5534234fd73f068a789d23de2bd7 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Thu, 9 May 2024 20:34:52 +0200 Subject: [PATCH 01/35] 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 02/35] 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 03/35] 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 04/35] 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 05/35] 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 06/35] 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 07/35] 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 08/35] 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 09/35] 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 10/35] 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 11/35] 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 12/35] 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 13/35] 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 14/35] 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 15/35] 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 16/35] 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 17/35] 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 18/35] 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 19/35] 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 20/35] 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 21/35] 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 22/35] 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 23/35] 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 24/35] 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 25/35] 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 26/35] 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 27/35] 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 28/35] 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 29/35] 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 30/35] 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 31/35] 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 32/35] 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 33/35] 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 34/35] 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 35/35] 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