Compare commits

...
Sign in to create a new pull request.

428 commits

Author SHA1 Message Date
Ralf Ertzinger
dd58e131b7 Rebuild for new gccgo libraries 2026-01-11 18:29:57 +01:00
Mamoru TASAKA
4f78b765d1 Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 2026-01-08 20:15:17 +09:00
Ralf Ertzinger
87e2b9fbb4 Fix path errors for EPEL9 uwsgidecorator packages 2025-11-26 21:49:21 +01:00
Remi Collet
b2673a41cc rebuild for https://fedoraproject.org/wiki/Changes/php85 2025-10-15 07:59:30 +02:00
Ralf Ertzinger
451e6fd8be Update to 2.0.31, drop merged patches 2025-10-12 16:53:42 +02:00
Python Maint
fce9901ade Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 15:01:52 +02:00
Ralf Ertzinger
305e1c563f Add python3.13 module for EL9 2025-08-20 20:37:21 +02:00
Python Maint
06e8062cb4 Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 15:21:55 +02:00
Ralf Ertzinger
1e2ce24bb0 Disable perl-Coro for rawhide, as this blocks rebuilding
for perl 5.42 (see https://bugzilla.redhat.com/show_bug.cgi?id=2379448)
2025-07-24 16:11:11 +02:00
Jitka Plesnikova
0d453e9ae8 Perl 5.42 rebuild 2025-07-08 14:25:37 +02:00
Python Maint
14c9d4c7a6 Rebuilt for Python 3.14 2025-06-09 07:43:54 +02:00
Ralf Ertzinger
7fdcfd0cd4 Update to 2.0.30 2025-06-08 18:37:32 +02:00
Python Maint
f6a6568654 Rebuilt for Python 3.14 2025-06-03 15:52:55 +02:00
Ralf Ertzinger
b0edddcb6b Update to 2.0.29 2025-04-12 12:57:47 +02:00
Ralf Ertzinger
2cad1e43b7 Rebuild for new libgo 2025-03-24 19:45:33 +01:00
Ralf Ertzinger
e82e663aeb Add sysusers.d config file to allow rpm to create users/groups automatically 2025-02-18 22:23:30 +01:00
Björn Esser
72801155cd
Add explicit BR: libxcrypt-devel
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2025-02-01 19:58:05 +01:00
Ralf Ertzinger
6e2e54ccb9 Fix type errors flagged by GCC15 2025-01-24 21:14:49 +01:00
Fedora Release Engineering
19e19698a5 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 14:01:56 +00:00
Mamoru TASAKA
6fe6c653dd Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4 2025-01-08 10:41:52 +09:00
Ralf Ertzinger
b7b8802b0f Update to 2.0.28, drop merged patches 2024-11-02 21:25:32 +01:00
Richard W.M. Jones
64c090a890 Rebuild for Jansson 2.14
(https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/)
2024-10-22 13:40:31 +01:00
Ralf Ertzinger
e40dac0496 Fix uWSGI auto-reloading on config change 2024-10-14 20:12:42 +02:00
Remi Collet
d3a2179c1d rebuild for https://fedoraproject.org/wiki/Changes/php84 2024-10-14 10:42:39 +02:00
Ralf Ertzinger
f03b56ba3a Only build fiber plugin when rack plugin is also built 2024-09-29 19:27:25 +02:00
Ralf Ertzinger
670041ecc3 pdate to 2.0.27
Drop merged patches
Re-enable rack plugin for EPEL10, dependencies now present
2024-09-25 18:42:22 +02:00
Ralf Ertzinger
08576b2d25 Disable building the Ruby rack plugin for EPEL10 2024-09-22 21:15:53 +02:00
Miroslav Suchý
ee7dd133dd convert license to SPDX
This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4
2024-09-04 22:36:26 +02:00
Ralf Ertzinger
591a578dd8 Cleanup work, EL10 support
- Drop support for EL7
- Add support for EL10
- Explicitly require pcre2 (all builds already pulled this
  in anyway)
2024-09-04 21:44:07 +02:00
Ralf Ertzinger
c0b79e45a5 Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
Add patch for python 3.13
2024-08-15 19:53:46 +02:00
Fedora Release Engineering
dce67072b9 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 08:29:55 +00:00
Jitka Plesnikova
4b286aba5a Perl 5.40 rebuild 2024-06-12 12:48:12 +02:00
Python Maint
0ed57cdb27 Rebuilt for Python 3.13 2024-06-09 01:40:22 +02:00
Ralf Ertzinger
8a5c0bd833 Update to 2.0.26
Rework support for multiple python versions
2024-06-06 19:11:42 +02:00
Ralf Ertzinger
64940f3b45 Rework support for multiple python versions 2024-05-09 20:34:52 +02:00
Ralf Ertzinger
5017f0c5b9 Update to 2.0.25.1, drop merged patches
Use github.com as source for the main tarball
Do not build for i686 any more
2024-04-16 20:24:11 +02:00
Dominik 'Rathann' Mierzejewski
d986271efb Rebuilt for gloox-1.0.28 2024-03-19 10:57:17 +01:00
Ralf Ertzinger
b9c84238a9 Update to 2.0.24, drop merged patches 2024-02-10 21:46:05 +01:00
Fedora Release Engineering
65dfd0fc87 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 07:23:48 +00:00
Ralf Ertzinger
94be625586 Build plugin for python3.11 under EPEL9 2024-01-23 21:57:07 +01:00
Ralf Ertzinger
c8dfeab0b8 Add reworked patch for python3.12 2024-01-23 21:35:44 +01:00
Mamoru TASAKA
5d4ae9e199 Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3 2024-01-03 23:13:45 +09:00
Ralf Ertzinger
b6771ca19f Update to 2.0.23, drop merged patches 2023-11-02 21:31:30 +01:00
Ralf Ertzinger
0bbf1dd464 Add comment for adding patches 2023-10-21 19:17:26 +02:00
Ralf Ertzinger
196bf72239 Drop 2to3 call, it doesn't do anything anymore 2023-10-21 19:15:17 +02:00
Remi Collet
6bb552f1a3 rebuild for https://fedoraproject.org/wiki/Changes/php83
add patch for PHP 8.3 from
  https://github.com/unbit/uwsgi/pull/2559
2023-10-03 10:51:38 +02:00
Ralf Ertzinger
32a6303889 Rework python 3.12 patch 2023-09-30 19:02:38 +02:00
Miro Hrončok
a5bb2db7fa Don't build the Python 3.11 module on Fedora 39+, it is not installable 2023-09-26 12:02:01 +02:00
Ralf Ertzinger
6e64b87273 Changes missing from previous commit (release/clog) 2023-09-16 20:12:35 +02:00
Ralf Ertzinger
c7c2087887 Extend building the python 3.11 module to rawhide 2023-09-16 20:01:03 +02:00
Ralf Ertzinger
e8deb619aa For Fedora 39, build an extra module against Python 3.11
Disable PIE and enable PIC for the mail executable to avoid crashes when using
  the PHP module (see BZ2203863)
2023-09-15 18:16:22 +02:00
Ralf Ertzinger
36451ce9eb Update to 2.0.22
This updates uwsgi to 2.0.22.

It also adds an (incomplete) patch to support python 3.12, used in
the upcoming Fedora 39.
2023-07-30 09:48:50 +02:00
Fedora Release Engineering
9c7aeda849 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 17:21:11 +00:00
Jitka Plesnikova
03e47f3db8 Perl 5.38 rebuild 2023-07-11 15:47:10 +02:00
Python Maint
5a83c85c74 Rebuilt for Python 3.12 2023-06-15 22:51:02 +02:00
Ralf Ertzinger
046b3f783e Rework Ruby patches
Disable python3-greenlet plugin for EPEL9
2023-06-15 19:50:45 +02:00
Python Maint
613d1530bd Rebuilt for Python 3.12 2023-06-15 18:55:12 +02:00
Ralf Ertzinger
9a0d37a514 Fix incomplete patch for Ruby taint issue 2023-04-22 21:20:36 +02:00
Ralf Ertzinger
8e28bafc5e Fix Ruby/Rack plugin for Ruby >= 3.2 2023-04-22 15:28:53 +02:00
Ralf Ertzinger
e5468e855f Rebuilt for new libgo.so 2023-01-24 21:10:19 +01:00
Fedora Release Engineering
4cca0607cd Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-21 06:02:54 +00:00
Mamoru TASAKA
eee272fdb8 Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 2023-01-04 15:21:46 +09:00
Ralf Ertzinger
b41d6035d6 Drop the perl-PSGI Requirement from the Perl plugin, it's not
trictly needed
2022-10-28 21:39:35 +02:00
Ralf Ertzinger
9a8c2b97e2 Update to 2.0.21 2022-10-28 19:25:26 +02:00
Ralf Ertzinger
361f4afe4b Fix PHP 8.2 support 2022-10-06 20:23:45 +02:00
Ralf Ertzinger
4cfce955e5 Remove deprecated StandardError setting from .service file 2022-09-16 20:22:45 +02:00
Ralf Ertzinger
a3b3307d31 Fix PHP 8.1 support 2022-08-09 22:10:37 +02:00
Fedora Release Engineering
061e65645f Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-23 11:37:12 +00:00
Victor Stinner
703b4ef92d Add Python 3.11 support
Resolves: rhbz#2099185
2022-06-30 18:02:15 +02:00
Python Maint
35a88dd5f8 Rebuilt for Python 3.11 2022-06-13 19:54:20 +02:00
Jitka Plesnikova
927b0ea2f0 Perl 5.36 rebuild 2022-06-01 08:39:30 +02:00
Ralf Ertzinger
6d410724c0 Add support for EPEL9 2022-03-04 20:09:54 +01:00
Ralf Ertzinger
73fd0c25da Clean up %post, %preun and %postun scripts 2022-02-23 20:13:29 +01:00
Ralf Ertzinger
9ce919a50a Fix errors in uwsgi python module when building against python3.10 or higher 2022-02-19 21:28:32 +01:00
Ralf Ertzinger
6ce71e5bb0 F37 rebuild for new libgo 2022-02-16 19:40:16 +01:00
Ralf Ertzinger
07af6e6242 Adding emperor-amqp for all targets
Adding emperor-pg for Fedora/EPEL8
Adding emperor-zeromq for Fedora/EPEL8
2022-02-12 13:45:27 +01:00
Ralf Ertzinger
91de37bf29 Fix gccgo plugin build for F36 2022-02-07 22:31:19 +01:00
Ralf Ertzinger
8fe9ce38dd Update to 2.0.20
Fix build against PHP8
Remove support for EL6
General logic cleanup and removal of dead code from the spec file
Add --verbose to build step to show compiler settings
2022-02-02 20:32:34 +01:00
fe1aea352d Unretirement request: https://pagure.io/releng/issue/10604 2022-02-01 08:05:02 +01:00
Miro Hrončok
a94cfe59a9 Orphaned for 6+ weeks 2021-06-17 02:06:02 +02:00
Python Maint
e4283b49ff Rebuilt for Python 3.10 2021-06-04 21:19:09 +02:00
Jitka Plesnikova
7401d4cffd Perl 5.34 rebuild 2021-05-21 23:09:36 +02:00
Tomas Hrnciar
531ba59523 BuildRequire setuptools explicitly
See https://fedoraproject.org/wiki/Changes/Reduce_dependencies_on_python3-setuptools
2021-04-19 13:18:32 +02:00
Michael Scherer
c9429687f8 Fix description for uwsgi-alarm-xmpp 2021-02-14 09:56:00 +01:00
Fedora Release Engineering
19f789b571 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 22:51:21 +00:00
Mamoru TASAKA
930caad53a F-34: rebuild against ruby 3.0 2021-01-06 20:25:37 +09:00
Miro Hrončok
168dba046f Rebuilt for libevent soname change 2020-09-15 16:02:41 +02:00
Fedora Release Engineering
7fa41a7e4a - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-08-01 09:34:22 +00:00
Fedora Release Engineering
96127378c4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 13:29:39 +00:00
Jitka Plesnikova
dfd1fb950b Perl 5.32 rebuild 2020-06-25 15:16:22 +02:00
Björn Esser
af7825dd63 Rebuild (gloox) 2020-05-31 11:43:02 +02:00
Miro Hrončok
c8ebef779a Rebuilt for Python 3.9 2020-05-26 03:54:15 +02:00
Jorge Gallegos
3d1927f6ba Patching php-plugin for segfault 2020-05-13 11:52:02 -05:00
Jorge Gallegos
82821ca03d Tagging new release 2020-04-27 14:51:19 -05:00
Jorge Gallegos
0b6c3eba0c Re-using tmpfiles.d trick
Now I get it, my apologies Carl, you were right. Using tmpfiles.d is
probably the only way to accomplish this.
2020-04-27 14:31:08 -05:00
Jorge Gallegos
2a49ef202d Revert "Forgot to remove this file now it's unused"
This reverts commit 30e2365eb4.
2020-04-27 14:25:20 -05:00
Jorge Gallegos
23438515e5 Merge branch 'epel7' of ssh://pkgs.fedoraproject.org/rpms/uwsgi into epel7 2020-04-09 12:42:46 -05:00
Jorge Gallegos
30e2365eb4 Forgot to remove this file now it's unused 2020-04-07 12:26:19 -05:00
Jorge Gallegos
661b66920f Remove old source files 2020-04-07 12:15:51 -05:00
Jorge Gallegos
bc6183b9e2 New release to fix several BZ 2020-04-07 12:10:48 -05:00
Jorge Gallegos
71672ba1c3 change mkdirs for install -d
yes, I know I'd decided to use mkdir because it only creates
directories, but since some directories also require extra permissions I
didn't wanna mix mkdir+chmod and now I ended up with some dirs created
with mkdir and some with install -d and i hate it.
2020-04-07 12:07:36 -05:00
Jorge Gallegos
d05aba75a8 Fix python plugins provides BZ 1628147 2020-04-07 12:07:36 -05:00
Jorge Gallegos
41f728617a Add a fix for psgi + GCC10 BZ 1794335
Also removing the tmpfiles stuff. Adding the directory as part of the
rpm contents seems a less confusing approach, sorry Carl.
2020-04-07 12:06:45 -05:00
Jorge Gallegos
8e873057a1 we'll never need to commit log files 2020-04-07 12:06:45 -05:00
Jorge Gallegos
3f8c8eaa42 Move path options outside main config BZ 1687403
If we put the paths in the service/init files they can reference
/run or /var/run respectively
2020-04-07 12:06:11 -05:00
Fedora Release Engineering
dddb412ec0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-31 02:51:41 +00:00
Mamoru TASAKA
fdb577b876 F-32: rebuild against ruby27 2020-01-18 11:31:37 +09:00
Miro Hrončok
c358b506e7 Make the package buildable --without python2 2019-09-05 00:08:40 +02:00
Miro Hrončok
fd803aa02b Rebuilt for Python 3.8 2019-08-19 11:08:56 +02:00
Fedora Release Engineering
62174e1a16 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-27 02:43:16 +00:00
Miro Hrončok
283c15c199 Don't require python2 from uwsgi-plugin-pty 2019-07-22 14:58:23 +02:00
Carl George
3d1cc42f40 Add missing conditional for gccgo subpackage 2019-06-19 16:24:26 -05:00
Carl George
ba0b9b866a Disable python2 subpackages on F31+ 2019-06-19 16:24:12 -05:00
Carl George
90f06bad6c Use openssl everywhere, instead of compat-openssl10 on F26+ 2019-06-19 13:44:21 -05:00
Carl George
8990d6f68d Latest upstream 2.0.18 2019-06-19 13:30:37 -05:00
Jitka Plesnikova
e6997a8f69 Perl 5.30 rebuild 2019-05-31 19:43:03 +02:00
Carl George
34254698e1 Re-enable mono plugins on ppc64le 2019-04-03 07:36:59 -05:00
Carl George
e751a2372b Disable mono plugins on ppc64le because mono-4.8.0-17 dropped that arch rhbz#1686983 2019-03-26 15:54:41 -05:00
Carl George
bbc4d7fe28 Disable mongo plugins on Fedora
mongo-cxx-driver-legacy is broken in rawhide.

https://bugzilla.redhat.com/show_bug.cgi?id=1675407
2019-03-26 15:15:59 -05:00
Carl George
565208c465 Disable v8 plugin on Fedora
v8-314 was retired.
2019-03-26 15:14:19 -05:00
Carl George
5b32fcf186 Disable jvm plugin on Fedora and EL6
javapackages-tools will soon be retired due to apache-ivy being orphaned.
2019-03-26 15:11:36 -05:00
Carl George
0329e9ef2c Remove java-1.8.0-openjdk-aarch32 hack
This is no longer necessary because java-1.8.0-openjdk-aarch32 no longer
provides java-devel.

https://src.fedoraproject.org/rpms/java-1.8.0-openjdk-aarch32/c/8e3a1b61c91f8f2526330948cb04c251b06aa788
2019-03-26 12:48:03 -05:00
Remi Collet
ecb3415871 rebuild for libargon2 new soname 2019-03-18 13:25:51 +01:00
Troy Dawson
c8ece00ee6 Rebuilt to change main python from 3.4 to 3.6 2019-03-07 17:30:45 -08:00
Fedora Release Engineering
6e586d9813 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-03 11:00:55 +00:00
Mamoru TASAKA
cbb7a3c206 F-30: rebuild against ruby26 2019-01-21 16:31:30 +09:00
Björn Esser
e452c9f9ac
Rebuilt for libcrypt.so.2 (#1666033) 2019-01-14 19:18:36 +01:00
Carl George
52a8ead85c BuildRequire mongo-cxx-driver-legacy-devel on F30+ 2018-11-03 16:15:42 -05:00
Carl George
0e782a470a Don't build python2-uwsgidecorators on F30+ 2018-11-03 15:31:06 -05:00
Carl George
0b485a922f Remove Group tags
https://fedoraproject.org/wiki/Packaging:Guidelines#Tags_and_Sections
2018-11-02 15:41:28 -05:00
Carl George
7477451151 Drop mod_proxy_uwsgi subpackage on Fedora, as this module now provided by httpd rhbz#1574335 2018-09-12 08:12:35 -05:00
Tadej Janež
ebddc2497d
Re-enable greenlet plugin on EL7
Python 3 version is always built.
Python 2 version is only built on x86_64.
2018-07-14 21:21:21 +02:00
Carl George
04976fdcca Be more explicit with uwsgidecorators files 2018-07-12 17:57:39 -05:00
Carl George
23e28f6561 Make python2-uwsgidecorators own the right files (rhbz#1600721) 2018-07-12 17:56:33 -05:00
Carl George
ac629b39a4 Remove obsolete macro fallback 2018-07-12 17:54:55 -05:00
Jason Tibbitts
71365b638d Remove needless use of %defattr 2018-07-10 01:43:51 -05:00
Carl George
c23e76ace5 Disable greenlet plugin on EL7 2018-07-08 22:51:35 -05:00
Carl George
146845f7f0 Remove %%config from systemd unit file
https://fedoraproject.org/wiki/Packaging:Systemd#.25files_section
2018-07-08 22:02:25 -05:00
Carl George
a18b816fc2 Build with versioned python command 2018-07-08 22:01:23 -05:00
Carl George
b55f3b2787 Use /var/run/uwsgi when not using systemd 2018-07-08 22:01:23 -05:00
Carl George
509df149e9 Use systemd tmpfiles to create /run/uwsgi with group write permissions (rhbz#1427303) 2018-07-08 22:01:23 -05:00
Carl George
0d6a6e469d Enable uwsgi-plugin-coroae on EL7 2018-07-08 21:39:23 -05:00
Carl George
9c0935432a Latest upstream (rhbz#1549354) 2018-07-08 21:39:23 -05:00
Carl George
d4ea661019 Remove redundant mkdir calls 2018-07-08 19:54:03 -05:00
Carl George
ebe8795458 Install files directly from %{_sourcedir} when possible 2018-07-08 19:40:55 -05:00
Carl George
74ad15ed91 Use %{systemd_requires} macro 2018-07-08 19:02:33 -05:00
Carl George
a85dc12a36 Use install command instead of %{__install}
"Macro forms of system executables SHOULD NOT be used..."

https://fedoraproject.org/wiki/Packaging:Guidelines#Macros
2018-07-08 19:00:15 -05:00
Carl George
44f048e846 Expand %{name} throughout spec file
Since the name is static, there is no benefit to macroing it everywhere.
Just using the string 'uwsgi' improves readability.
2018-07-08 18:48:46 -05:00
Petr Písař
862bb39939 Perl 5.28 rebuild 2018-07-03 12:42:45 +02:00
Jitka Plesnikova
0e954d3ebb Perl 5.28 rebuild 2018-06-29 22:04:38 +02:00
Tadej Janež
7e7de241d5
Build Python 3 version of greenlet plugin on Fedora and EPEL7
Build Python 2 version of greenlet plugin on EPEL7
2018-06-27 14:46:55 +02:00
Tadej Janež
745752fec6
Always build Python 3 version of tornado plugin when building with Py3 2018-06-27 10:52:42 +02:00
Tadej Janež
a24a9f548a
Build Python 3 version(s) of gevent plugin on Fedora and EPEL7 2018-06-27 10:52:41 +02:00
Tadej Janež
e08669b5e4
Build Python 3 subpackages for the other Python 3 version in EPEL7 2018-06-26 09:46:22 +02:00
Tadej Janež
9054db2bf8
Modernize and generalize building of Python subpackages 2018-06-26 09:46:20 +02:00
Miro Hrončok
0e303f22f7 Rebuilt for Python 3.7 2018-06-19 11:30:06 +02:00
Till Maas
e56ed9bbc6 Fix building in Rawhide (#1556525) (Jakub Jelen)
Disable tcp_wrappers for Fedora 28 and newer (Jakub Jelen)
2018-04-03 22:39:31 +02:00
Jakub Jelen
ad5af2005f Add missing path to header files
This makes the package build in rawhide
2018-04-03 14:45:45 +02:00
Jakub Jelen
fef84e86e6 Do not generate the obsoleted subpackage 2018-03-29 18:29:40 +02:00
Jakub Jelen
42f326b768 Adjust the sources to build in rawhide 2018-03-29 18:29:23 +02:00
Jorge Gallegos
60883e8d8d Experimentally drop libgo 2018-02-20 12:38:22 -06:00
Jorge Gallegos
83c3254780 Bumping for new release 2018-02-12 20:42:27 -06:00
Jorge Gallegos
34b2b04b3c Added new-sources 2018-02-12 20:37:41 -06:00
Jorge Gallegos
d8740bf21a Conditionally disable router-access on f28
f28 retired tcp_wrappers, which are needed for router_access
2018-02-12 20:34:02 -06:00
Jorge Gallegos
3ab3bbef4a Updated to 2.0.16 2018-02-12 17:21:55 -06:00
Fedora Release Engineering
5885f15452 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-09 20:14:32 +00:00
Björn Esser
d6cc3b165c
Rebuilt for switch to libxcrypt 2018-01-20 23:08:40 +01:00
Remi Collet
6d32bbe5b0 rebuild for https://fedoraproject.org/wiki/Changes/php72 2017-10-03 12:42:51 +02:00
Fedora Release Engineering
4df00ea272 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild 2017-08-03 09:56:21 +00:00
Fedora Release Engineering
493a90e8c2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-27 21:07:52 +00:00
Kalev Lember
66e2aa4ef8 Rebuilt for Boost 1.64 2017-07-21 09:41:57 +02:00
Igor Gnatenko
5fc8198aeb Rebuild due to bug in RPM (RHBZ #1468476)
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
2017-07-07 13:11:51 +02:00
Jitka Plesnikova
065fa3048c Perl 5.26 rebuild 2017-06-04 07:40:18 +02:00
Jorge Gallegos
52ea83aac0 Bumping release in spec file 2017-05-18 18:32:21 -05:00
Jorge Gallegos
e5fcfa4342 Bumping release to 2.0.15 2017-05-18 18:31:34 -05:00
Jorge Gallegos
bcddaab88b Updating sources to 2.0.15 2017-05-18 18:30:11 -05:00
Carl George
f502577918 bump release
- Add patch7 to add glib-2.0 pkg-config flags to mono build
- Filter uwgi plugins from automatic provides rhbz#1352089
2017-03-20 16:37:28 -05:00
Carl George
230ee196ed Filter uwgi plugins from automatic provides rhbz#1352089 2017-03-20 16:33:31 -05:00
Carl George
3f332717e0 Add patch7 to add glib-2.0 pkg-config flags to mono build 2017-03-20 16:32:20 -05:00
Igor Gnatenko
7240cd33d4 Rebuild for brp-python-bytecompile
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
2017-02-15 17:41:24 +01:00
Carl George
fce59d6c48 Rebuild for boost soname bump 2017-02-08 07:49:25 -06:00
Kalev Lember
ff700575b3 Rebuilt for libgo soname bump 2017-02-05 23:00:15 +01:00
Mamoru TASAKA
5de9eb8d67 Workaround for build issue on arm(32): explicitly write
java-1.8.0-openjdk-headless as BR not to use java-1.8.0-openjdk-aarch32
  which does not provide server/libjvm.so
2017-01-15 02:26:45 +09:00
Jorge Gallegos
c0f03ba865 Bumping for release 2017-01-13 16:51:44 -06:00
Jorge Gallegos
ee4151c79e Adding the cheaper_busyness plugin 2017-01-13 16:46:12 -06:00
Jorge Gallegos
dff9522ddf Got tired of this giant string
Took me a look at the ConfigParser docs to figure out this could be
easily corrected.
2017-01-13 16:45:25 -06:00
Mamoru TASAKA
7e5aad0774 F-26: rebuild for ruby24 2017-01-13 12:40:44 +09:00
Miro Hrončok
1117945d1b Rebuild for Python 3.6 2016-12-22 13:08:41 +01:00
Carl George
67d3fd5713 bump release 2016-12-21 03:38:30 +00:00
Carl George
864a57ae9a enable -plugin-psgi on EL7, but leave -plugin-coroae disabled for now 2016-12-21 03:36:01 +00:00
Carl George
eda7982c79 perl cleanup 2016-12-21 03:30:42 +00:00
Carl George
c57fecad84 bump release 2016-11-30 12:35:39 -06:00
Carl George
c2c37c071f php plugin requires krb5 headers to build 2016-11-30 12:15:25 -06:00
Carl George
00ac8d4b16 uwsgi is not yet OpenSSL 1.1 compatible, build against compat-openssl10 on F26+
see also https://github.com/unbit/uwsgi/issues/1395
2016-11-30 11:02:50 -06:00
Jorge Gallegos
c52067e70b Bumped release 2016-10-05 13:28:49 -05:00
Jorge Gallegos
2fc5176ffb Updated source files 2016-10-05 13:27:51 -05:00
Jorge Gallegos
2de2fb8034 Updated to latest upstream stable 2016-10-05 13:15:52 -05:00
Jorge Gallegos
84ebfeb074 Make subpackage interdependencies versioned
To both version and release number
2016-10-05 13:07:50 -05:00
Jorge Gallegos
957a3c875e chmod uwsgi sock file for bz #1338038 2016-08-02 23:20:12 -05:00
Jorge Gallegos
c2f383ab58 greenlet and gevent depend on python bz #1325524
This will pull the python subpackage, but actually adding the load
configuration of the python plugin is responsibility of the user
2016-08-02 23:11:15 -05:00
Jorge Gallegos
96f551b5ba %config(noreplace) for uwsgi.ini bz #1339558 2016-08-02 22:54:01 -05:00
Carl George
3130e7c94b Own /usr/src/uwsgi rhbz#1351796 2016-08-02 15:53:22 -05:00
Carl George
02995563d5 Build against v8-314 on F25+ rhbz#1339293 2016-08-02 15:52:36 -05:00
Jorge Gallegos
6e11853b72 Bumped to latest stable version 2016-07-27 22:59:31 -05:00
Fedora Release Engineering
a71feb42b6 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages 2016-07-19 13:05:32 +00:00
Jitka Plesnikova
fb15115de9 Perl 5.24 rebuild 2016-05-17 04:35:55 +02:00
Peter Robinson
c81af7f362 bump release 2016-04-12 21:05:18 +01:00
Peter Robinson
ea8b8708f7 Mongodb doesn't depend on v8 anymore so is now supported on all LE arches 2016-04-12 21:01:47 +01:00
Fedora Release Engineering
67cd1567f5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild 2016-02-05 02:29:59 +00:00
Jonathan Wakely
2e0af756de Rebuilt for Boost 1.60 2016-01-29 14:54:09 +00:00
Vít Ondruch
1fd27a0925 Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.3 2016-01-13 16:55:17 +01:00
Jorge Gallegos
962c8f889d Bumping spec 2016-01-07 14:24:39 -08:00
Jorge Gallegos
098bb538cb Really fixing stats_pusher_mongodb 2016-01-07 14:23:32 -08:00
Jorge Gallegos
9986ff18f1 Bumping spec 2016-01-02 11:49:56 -08:00
Jorge Gallegos
29ce886841 Back to gcc 2016-01-02 11:49:36 -08:00
Jorge Gallegos
65aa0b5d9b Bumping for new release
Fedora 23 can't be upgraded just yet, issue with the stats pusher for
mongodb here https://github.com/unbit/uwsgi/issues/1140
2015-12-31 14:15:24 -08:00
Jorge Gallegos
7a357ad30d Adding the build profile to -devel subpackage 2015-12-31 14:11:15 -08:00
Jorge Gallegos
12df1717c2 Attempting to build with g++ 2015-12-31 09:59:44 -08:00
Jorge Gallegos
7aeddce457 First try was unsuccessful 2015-12-31 00:25:03 -08:00
Jorge Gallegos
dae1b29cb8 Fixing stats-pusher-mongo for gnu++11 2015-12-30 23:13:13 -08:00
Jorge Gallegos
e15cc78172 Using _mono macros instead of hardcoded paths 2015-12-30 22:38:10 -08:00
Jorge Gallegos
560ab084ba Modifying an old changelog entry for rpmlint 2015-12-30 22:37:29 -08:00
Jorge Gallegos
e138ad777e Making -devel not pull unnecessary deps 2015-12-30 22:36:26 -08:00
Jorge Gallegos
0c3c6ca210 Adjusting rpath patch for new release 2015-12-30 22:35:21 -08:00
Jorge Gallegos
388448d466 Updating to latest stable version 2.0.12 2015-12-30 22:34:36 -08:00
Ville Skyttä
c9e99425f8 Fix EL7 ppc64le build (remove the patch that breaks it) 2015-12-11 17:54:49 +02:00
Ville Skyttä
d147c00576 Don't build tornado3 for EL7 (no python3-tornado available yet) 2015-12-11 17:15:20 +02:00
Peter Robinson
1b423ae4ed Fixing glusterfs for non x86_64 on el7 2015-12-06 08:37:56 +00:00
Jorge Gallegos
eb6d74cd94 Bumping 2015-11-18 17:44:59 -08:00
Jorge Gallegos
894060cc00 Missing tag 2015-11-18 17:44:22 -08:00
Jorge Gallegos
a124aedfb4 EL6 doesn't have the py_compile macros
Leaving it to do whatever it does by default
2015-11-18 17:29:11 -08:00
Jorge Gallegos
6b308b7225 Let's see if this works 2015-11-18 14:05:08 -08:00
Jorge Gallegos
ec5c01271c ppc64 is a pain 2015-11-18 13:31:54 -08:00
Jorge Gallegos
50adc45433 Verbose changelog 2015-11-18 13:20:21 -08:00
Jorge Gallegos
20fd2d26f2 Adding the source to the -devel subpackage 2015-11-18 13:14:17 -08:00
Jorge Gallegos
ab1d3544e9 glusterfs in epel7 2015-11-17 21:50:22 -08:00
Jorge Gallegos
4981a46526 Adding uwsgidecorators 2015-11-17 21:43:39 -08:00
Jorge Gallegos
05864d2e10 Fixing bz #1258388 2015-11-17 21:15:38 -08:00
Jorge Gallegos
f4bda35700 Fixing bz #1261942 2015-11-17 20:47:40 -08:00
Jorge Gallegos
d19dde9b1c Fixing bz 1247395 2015-11-17 16:02:10 -08:00
Peter Robinson
2e37072e76 - Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 2015-11-10 18:14:59 +00:00
Jorge Gallegos
2ca7ce39e6 Updating to latest stable 2015-11-06 15:59:58 -08:00
Jonathan Wakely
8a901c17bc Rebuilt for Boost 1.59 2015-08-28 03:14:10 +01:00
Dennis Gilmore
3c71e3b14c - Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 2015-07-29 13:31:15 -05:00
David Tardon
23342e478b rebuild for Boost 1.58 2015-07-22 19:43:15 +02:00
Jorge Gallegos
6bc3738758 Updating to latest stable release 2015-07-21 08:31:14 -07:00
Jorge Gallegos
65dc87b3b2 Adding new sources 2015-07-21 08:28:12 -07:00
Jorge Gallegos
914248b53b Updated spec 2015-07-02 14:01:22 -07:00
Jorge Gallegos
871f9b8253 uwsgi_fix_glibc_compatibility merged upstream 2015-07-02 14:00:17 -07:00
Jorge Gallegos
b9388565b7 Bumping spec version for release 2015-07-02 13:18:58 -07:00
Jorge Gallegos
2c93995ed4 Adding the dummy and notfound plugins 2015-07-02 13:18:07 -07:00
Jorge Gallegos
4651be8085 License is license
Also getting rid of .gitignore in the docs directory
2015-07-02 13:10:39 -07:00
Jorge Gallegos
3e7925dfe4 Mark config files as %config 2015-07-02 13:08:24 -07:00
Jorge Gallegos
e94512c76d Adding sources for new version 2015-07-02 13:06:29 -07:00
Thomas Spura
92fe391fa7 rebuilt for new zeromq 4.1.2 2015-06-23 14:37:54 +02:00
Dennis Gilmore
3ad3eb25f4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild 2015-06-19 01:45:21 +00:00
Jitka Plesnikova
fe115c537d Perl 5.22 rebuild 2015-06-06 18:20:50 +02:00
Peter Robinson
c29e2ec294 Rebuild (mono4) 2015-05-18 21:59:35 +01:00
Jorge Gallegos
722ebc1515 Bumping spec for release 2015-04-23 11:42:40 -07:00
Jorge Gallegos
18f37987b6 Should've removed them from the buildconf file 2015-04-23 09:18:54 -07:00
Jorge Gallegos
311a51cf20 Add complement to conditional 2015-04-23 09:00:44 -07:00
Jorge Gallegos
4a487add87 must have missed this somehow 2015-04-23 08:54:13 -07:00
Jorge Gallegos
25115285eb Conditionally disable where java is not present
The jvm, jwsgi, and ring plugins depend on java, which is not present in
el6 ppc64
2015-04-23 08:42:27 -07:00
Jorge Gallegos
d6c7f77de0 Merge branch 'master' into f22
Conflicts:
	uwsgi.spec
2015-04-23 08:06:53 -07:00
Jorge Gallegos
3e967d3c4f conditionally apply jvm patch 2015-04-21 18:08:25 -07:00
Jorge Gallegos
473235164b Updating documentation tarball 2015-04-21 14:21:35 -07:00
Jorge Gallegos
c4d39effb1 Bumping release 2015-04-21 11:46:24 -07:00
Jorge Gallegos
2f1e607f28 Weirdly, EL6 doesn't have perl-PSGI, EL7 doesn't have perl-Coro 2015-04-21 11:38:33 -07:00
Jorge Gallegos
d75a395424 There is a method to this madness, you know. 2015-04-21 09:47:05 -07:00
Jorge Gallegos
00aa829193 Whitespace cleanup 2015-04-21 09:29:27 -07:00
Dan Horák
6a707d410a - conditionalize various subpackages depending on architectures (patch by Jakub Cajka) - #1211616 2015-04-21 16:07:02 +02:00
Dan Horák
f7f790c497 - conditionalize various subpackages depending on architectures (patch by Jakub Cajka) 2015-04-21 13:33:15 +02:00
Vít Ondruch
9bad5ce0c9 Fix glibc and MongoDB compatibility. 2015-04-14 08:49:34 +02:00
Vít Ondruch
03f9a7ac4c Fix glibc and MongoDB compatibility. 2015-04-14 08:40:05 +02:00
Jorge Gallegos
bee031cd4e Rebuilding because I am dumb. 2015-03-13 09:51:17 -07:00
Jorge Gallegos
6207ccdf3f PPC is missing several dependencies
Following https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires
2015-03-11 23:27:55 -07:00
Jorge Gallegos
6c2446c0b0 epel7 compatible 2015-03-10 21:28:59 -07:00
Jorge Gallegos
88482daef4 EL6 backwards-compatible changes 2015-03-06 09:25:42 -08:00
Jorge Gallegos
04aa0dba97 System V initscript hoopla 2015-02-27 08:34:13 -08:00
Jorge Gallegos
62e4bf0739 Updating to newer version 2015-02-26 21:04:26 -08:00
Jorge Gallegos
6e79929fec Simple SysV script 2015-02-26 20:47:32 -08:00
John
3ccbbc7efe Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_2.2 2015-01-16 19:34:42 +09:00
Jorge Gallegos
b7d3577ccb SystemD service definition sysconfig support
Forgot to add this before, and given that uWSGI *does* offer strong
support for environment variables, makes sense.
2014-09-18 07:53:55 -07:00
Jorge Gallegos
b2f4d05e94 Conditionally enable systemd integration
EL6 does not have systemd bits, so you can't use it.
2014-09-18 07:53:55 -07:00
Jorge Gallegos
bdc6fdc081 Fixing upgrade-path issues 2014-09-18 07:46:18 -07:00
Jorge Gallegos
c2bc6e5113 -plugin-http doesn't exist, is in -plugin-common 2014-09-18 07:43:46 -07:00
Jorge Gallegos
9d487b9f02 Updating to 2.0.7 2014-09-08 09:40:20 -07:00
Jorge Gallegos
7807a37c0f Releasing 2.0.6-1 2014-09-07 14:54:47 -07:00
Jorge Gallegos
4711c9826d Adding -stats-pusher-zabbix 2014-09-07 14:11:33 -07:00
Jorge Gallegos
df5862368c Adding -plugin-xslt 2014-09-07 14:03:36 -07:00
Jorge Gallegos
f09a4b1bc0 Adding -plugin-webdav 2014-09-07 13:57:29 -07:00
Jorge Gallegos
a262b38c3a Adding -plugin-v8 2014-09-07 13:45:36 -07:00
Jorge Gallegos
d4a8676907 Adding -router-tuntap 2014-09-07 13:32:41 -07:00
Jorge Gallegos
fcd5d0cfe8 Adding http transformation plugins 2014-09-07 13:21:02 -07:00
Jorge Gallegos
16c6bbb297 Adding -plugin-tornado and -plugin-tornado3
The latter is the python3 version
2014-09-05 19:53:12 -07:00
Jorge Gallegos
62ebdee334 Adding all -stats-pusher-* plugins 2014-09-05 19:39:35 -07:00
Jorge Gallegos
fe6fb1bbe1 Adding -plugin-ssi 2014-09-05 14:01:51 -07:00
Jorge Gallegos
16b2f78edd Adding -plugin-ldap 2014-09-05 10:43:23 -07:00
Jorge Gallegos
9204249517 Adding -plugin-sqlite3 2014-09-05 10:08:44 -07:00
Jorge Gallegos
a29b3bed90 Adding -plugin-spooler 2014-09-05 09:52:24 -07:00
Jorge Gallegos
f733bccb24 Adding -plugin-jwsgi 2014-09-04 10:42:50 -07:00
Jorge Gallegos
86e3ed1276 Adding -plugin-ring 2014-09-02 15:51:33 -07:00
Jorge Gallegos
dd8695b191 Adding -plugin-rbthreads 2014-09-02 15:40:31 -07:00
Jorge Gallegos
1069df7537 Adding -plugin-pty 2014-09-02 13:09:42 -07:00
Jorge Gallegos
03999d7a7a Adding -log-encoder-msgpack 2014-09-02 10:16:25 -07:00
Jorge Gallegos
050fbd029d Adding -plugin-mono 2014-09-02 09:45:39 -07:00
Jorge Gallegos
3e8ad22a64 Adding -plugin-mongrel2 2014-08-29 21:12:39 -07:00
Jorge Gallegos
32e09df47b Sigh I am sleepy 2014-08-29 20:48:46 -07:00
Jorge Gallegos
958dc88b80 Right dependencies for -plugin-gridfs 2014-08-29 20:47:15 -07:00
Jorge Gallegos
32a5119fe2 Adding -plugin-gridfs 2014-08-29 20:37:34 -07:00
Jorge Gallegos
a61617b702 Adding -logger-graylog2 2014-08-29 20:27:55 -07:00
Jorge Gallegos
7cc9a90aff This is the correct -devel dependency 2014-08-29 20:21:52 -07:00
Jorge Gallegos
8c68c2f827 Adding -plugin-glusterfs 2014-08-29 20:16:21 -07:00
Jorge Gallegos
08ff629684 Adding -plugin-gevent 2014-08-29 20:05:45 -07:00
Jorge Gallegos
1d736330b3 Adding -plugin-geoip 2014-08-29 17:55:48 -07:00
Jorge Gallegos
a5e0dad350 Adding missing lib for -plugin-gccgo 2014-08-29 17:52:50 -07:00
Jorge Gallegos
daba090369 Adding -plugin-gccgo 2014-08-29 17:31:45 -07:00
Jorge Gallegos
4e3fad0ee2 Adding -plugin-fiber 2014-08-29 17:23:41 -07:00
Jorge Gallegos
f1c00c06d8 Adding -plugin-dumbloop 2014-08-29 17:13:42 -07:00
Jorge Gallegos
472e588562 I am starting to forget things it seems 2014-08-29 17:08:34 -07:00
Jorge Gallegos
237f9983c3 Adding -plugin-curl-cron 2014-08-29 17:04:37 -07:00
Jorge Gallegos
f1770d8144 Adding -plugin-cplusplus 2014-08-29 16:57:37 -07:00
Jorge Gallegos
2e63ddad94 Seems like we need perl-Coro at buildtime too 2014-08-29 16:51:31 -07:00
Jorge Gallegos
4130a4ebbe Missed description 2014-08-29 16:45:10 -07:00
Jorge Gallegos
47b9711ade Adding -plugin-coroae 2014-08-29 16:44:26 -07:00
Jorge Gallegos
a897e3a105 Actually build the -alarm-xmpp plugin, duh 2014-08-29 16:35:56 -07:00
Jorge Gallegos
8559a2dd86 Adding -alarm-xmpp 2014-08-29 16:31:53 -07:00
Jorge Gallegos
2c45522e89 Adding -alarm-curl 2014-08-29 16:28:56 -07:00
Jorge Gallegos
7d205ee2a2 Packaging -plugin-airbrake 2014-08-29 15:37:46 -07:00
Jorge Gallegos
b07b2c3269 Broke up -routers into its individual -router-* 2014-08-29 15:26:44 -07:00
Jorge Gallegos
579508b70c Renaming -plugin-sslrouter to -router-ssl 2014-08-29 13:06:11 -07:00
Jorge Gallegos
911045d221 Renaming -plugin-rawrouter to -router-raw 2014-08-28 21:31:50 -07:00
Jorge Gallegos
1e02de4136 Redacted README better, I think 2014-08-28 21:27:24 -07:00
Jorge Gallegos
19448ac702 oops wrong order 2014-08-28 21:13:20 -07:00
Jorge Gallegos
63f114056c Splitting off the documentation to its subpackage 2014-08-28 21:12:01 -07:00
Jorge Gallegos
c4714c6fa8 Splitting off some non-essential embedded plugins:
Such as -plugin-cache, -plugin-rpc and -plugin-ugreen
2014-08-28 21:02:14 -07:00
Jorge Gallegos
327a0dce4a Splitting off -logger-syslog 2014-08-28 20:41:38 -07:00
Jorge Gallegos
541ccbafde Splitting off -logger-rsyslog 2014-08-28 14:58:25 -07:00
Jorge Gallegos
e35132d26c Packaging the right files for mongodb and redis 2014-08-28 13:13:27 -07:00
Jorge Gallegos
94c778df60 Splitting off -logger-redis 2014-08-28 12:17:22 -07:00
Jorge Gallegos
2477d1e79a I go back and forth between naming
I think I should stick with this one tho
2014-08-28 12:08:42 -07:00
Jorge Gallegos
fe6ac436b6 Splitting off -logger-mongodb 2014-08-28 12:07:10 -07:00
Jorge Gallegos
b10818cfd2 Splitting off -logger-logsocket 2014-08-28 12:05:27 -07:00
Jorge Gallegos
1682bf6bf6 Splitting off -logger-logfile 2014-08-28 12:02:52 -07:00
Jorge Gallegos
3ba9cc81ce Splitting off -logger-pipe 2014-08-28 11:53:11 -07:00
Jorge Gallegos
c2885f15f9 Splitting off -logger-crypto instead 2014-08-28 11:43:09 -07:00
Jorge Gallegos
8265cb589b Break out the major/minor/release numbers properly 2014-08-28 11:32:01 -07:00
Jorge Gallegos
4cfc2d5fd0 Reorganized spec, alphabetical and type 2014-08-28 11:27:25 -07:00
Jorge Gallegos
a0237020ee Splitting -router-fastrouter out of -common 2014-08-28 11:17:20 -07:00
Jorge Gallegos
b3c615d5ef Updating build profile
There are some options that don't exist anymore, and there are some
other options that changed what type of value they can read.
2014-08-27 16:05:50 -07:00
Jorge Gallegos
e537945df4 Updating sources, not sure why these didn't go out 2014-08-27 15:32:02 -07:00
Jorge Gallegos
39dd1c6047 Splitting out the README, I will be putting more stuff in here 2014-08-27 14:18:24 -07:00
Jorge Gallegos
6fa61b2046 Adding more router_* plugins
metrics, radius, and spngeo
2014-08-27 08:11:39 -07:00
Jorge Gallegos
ec9693128f Realized this Obsoletes has been wrong for a long time 2014-08-27 08:11:13 -07:00
Jorge Gallegos
240338b58c Adding -logger-systemd plugin 2014-08-26 15:32:52 -07:00
Jorge Gallegos
314d494b91 Adding -logger-zeromq plugin 2014-08-26 14:37:57 -07:00
Jorge Gallegos
ef1d3900ce Embed logcrypto and logpipe in the binary 2014-08-26 11:56:56 -07:00
Jorge Gallegos
3770c83e76 Tackling several issues
Solving BZ 1113307
Starting to tackle BZ 911686
2014-08-23 15:17:07 -07:00
Jorge Gallegos
8459d79bcb After careful inspection, it seems like this needs a value
not just "true"
2014-08-21 15:50:53 -07:00
Jorge Gallegos
b04c2904e2 Pre-bump for newest stable version in spec file 2014-08-21 15:50:18 -07:00
Jorge Gallegos
9c9e5862d1 Forgot docs 2014-08-20 21:13:46 -07:00
Jorge Gallegos
b6f51bd1bf Adding new sources for newest stable 2014-08-20 21:10:11 -07:00
Peter Robinson
fb7e41e7e0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild 2014-08-18 07:22:41 +00:00
Remi Collet
c4aa80b3b7 rebuild for https://fedoraproject.org/wiki/Changes/Php56 2014-06-22 12:44:10 +02:00
Dennis Gilmore
6d16bb7cb1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-07 22:10:37 -05:00
Kalev Lember
faef56ca3f Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 2014-05-28 15:31:01 +02:00
Vít Ondruch
01bea43fc3 Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.1 2014-04-29 12:51:53 +02:00
Jorge Gallegos
97184c6772 Bumping spec 2013-11-12 09:42:49 -08:00
Jorge Gallegos
952f174088 Updating to latest stable, uploading new sources 2013-11-12 08:56:39 -08:00
Jorge Gallegos
f2f1dec487 Forgot to delete the jvm arm patch file 2013-10-19 23:14:41 -07:00
Jorge Gallegos
0cb13fe004 Release 1.9.18.2-1 2013-10-19 23:11:25 -07:00
Jorge Gallegos
baaf45f282 The changelog entry must match major + minor 2013-10-19 23:09:29 -07:00
Jorge Gallegos
305cd5eb3e Adding more ignore entries
Like VIM swap files, and backups, and the mockbuild dir
2013-10-19 23:05:17 -07:00
Jorge Gallegos
d773c9cba0 The jvm arm patch has been merged upstream 2013-10-19 23:04:06 -07:00
Jorge Gallegos
9ceca5d3e1 Updated license to 'GPLv2 with exceptions' 2013-10-19 23:00:57 -07:00
Jorge Gallegos
5676468443 Ugh messed up the doc sha 2013-10-19 11:10:18 -07:00
Jorge Gallegos
05fc5af7c9 Adding new sources, bumping up spec to 1.9.18.2 2013-10-19 11:07:11 -07:00
Jorge Gallegos
5693898a00 Breaking up full version in 3 parts
Uwsgi is now using security patch numbering, which means more bits to
be added to the version string
2013-10-19 11:01:41 -07:00
Jorge Gallegos
04a7166fc6 Update to latest stable 1.9.18.2 2013-10-19 10:59:50 -07:00
Jorge Gallegos
95f3af7a4e Forgot to disable debug mode 2013-10-11 11:37:27 -07:00
Jorge Gallegos
ee151973c7 Releasing version 1.9.17-2 2013-10-08 21:30:11 -07:00
Jorge Gallegos
3c84261b08 Sigh. 2013-10-08 21:17:24 -07:00
Jorge Gallegos
682f89dd7d Again, what's wrong with git? 2013-10-08 21:16:49 -07:00
Jorge Gallegos
24f9af3147 Uploaded new sources per spec rework 2013-10-08 21:13:04 -07:00
Jorge Gallegos
b92c97e1b1 Adding more router plugins
Full list:
    router_access
    router_basicauth
    router_cache
    router_expires
    router_hash
    router_http
    router_memcached
    router_redirect
    router_redis
    router_rewrite
    router_static
    router_uwsgi
    router_xmldir
2013-10-07 13:18:54 -07:00
Jorge Gallegos
f6d78815a7 Adding mod_proxy_uwsgi apache module 2013-10-07 11:45:42 -07:00
Jorge Gallegos
403b7efe6c Complying with the guidelines for source urls
https://fedoraproject.org/wiki/Packaging:SourceURL#Github describes in
perfect detail what to do about source urls. Also this other bit:

> If the upstream does create tarballs you should use them as tarballs
> provide an easier trail for people auditing the packages.

In this case unbit *does* provide tarballs outside the git repo
2013-10-05 23:23:09 -07:00
Jorge Gallegos
c04fd62ef2 This was actually right. From the documentation
> By default sending the SIGTERM signal to uWSGI means "brutally
> reload the stack" while the convention is to shut an application
> down on SIGTERM. To shutdown uWSGI use SIGINT or SIGQUIT instead.
> If you absolutely can not live with uWSGI being so disrespectful
> towards SIGTERM, by all means enable the die-on-term option.

(https://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html)

And:

> Sending SIGHUP to the Emperor will reload all vassals.

(https://uwsgi-docs.readthedocs.org/en/latest/Emperor.html)
2013-10-05 12:18:13 -07:00
Jorge Gallegos
11e3d17854 Enabling stats log socket, and capabilities
Now that we are compiling with libcap by default, it makes sense to take
advantage of capabilities
2013-10-05 12:17:36 -07:00
Jorge Gallegos
2c1b7e4cb1 More patches. If this works will send upstream 2013-10-04 15:43:08 -07:00
Jorge Gallegos
ce8a33b8c9 Obsoleting the old [r]syslog plugin packages 2013-10-04 09:57:31 -07:00
Jorge Gallegos
815309e2f5 Use the right plugin names 2013-10-04 09:57:06 -07:00
Jorge Gallegos
f38fc1554c Updating the spec to
- Ship CHANGELOG
- Add libcap-devel to enable POSIX capabilities
- Obsoleting uwsgi-loggers because these are now shipped in the main
  binary
2013-10-04 09:20:46 -07:00
Jorge Gallegos
5d3d16b727 Embed the common logging plugins in main binary 2013-10-04 09:20:08 -07:00
Jorge Gallegos
6e9a7acef1 This got fixed a while ago, don't need it
This completes fix for BZ 912317
2013-10-04 08:59:59 -07:00
Jorge Gallegos
0e84450495 Get rid of the socket directive
Partly fixex BZ 912317
2013-10-04 08:55:25 -07:00
Jorge Gallegos
7ee31a5d23 Perhaps it will hold this time? 2013-10-02 22:27:14 -07:00
Jorge Gallegos
48fb6c96c4 Updating to 1.9.17
This also means I am updating with the new documentation from a
different github project, updating patches to the new tree and other
stuff
2013-10-02 22:25:54 -07:00
Jorge Gallegos
8b81de498a Updated patches to match 1.9.17 tree 2013-10-02 22:23:06 -07:00
Jorge Gallegos
95cd197ed0 Updated sources to 1.9.17
Both source code tarball and documentation tarball
2013-10-02 22:22:01 -07:00
Jorge Gallegos
fc51439f14 Adding new sources for 1.9.17
Both source code tarball and documentation tarball
2013-10-02 22:21:04 -07:00
Dennis Gilmore
ff3a102f5f - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild 2013-08-04 00:51:54 -05:00
Jorge Gallegos
cc0b262296 Bumped version to 1.9.8 for f19
This version has tons of new things and improvements.
2013-04-23 22:17:02 -07:00
Vít Ondruch
5249bc55f0 Rebuild for https://fedoraproject.org/wiki/Features/Ruby_2.0.0 2013-04-03 15:53:56 +02:00
Remi Collet
6298acfe5b rebuild for http://fedoraproject.org/wiki/Features/Php55 2013-03-23 15:23:53 +01:00
Dennis Gilmore
6711be2002 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild 2013-02-14 20:36:17 -06:00
Jorge Gallegos
dc532237ea Fixing tyrant-mode misshap 2013-02-14 10:13:53 -08:00
Jorge A Gallegos
7e7c7f9a23 Fixing 873382 2012-12-26 18:27:53 -08:00
Remi Collet
879150b882 rebuild against new php embedded library soname (5.4) 2012-11-09 11:08:47 +01:00
Remi Collet
1e06b3976b rebuild for new PHP 5.4.8 2012-10-18 14:58:13 +02:00
Jorge A Gallegos
40dfab3b14 Dropped dependency on php for php plugin 2012-09-19 07:30:24 -07:00
Jorge A Gallegos
5bc3f4980d Adding new systemd macros to spec file 2012-09-15 10:45:24 -07:00
Jorge A Gallegos
49e151b393 Updated sources 2012-09-09 14:00:23 -07:00
Jorge A Gallegos
bc1c097a14 Updated to 1.2.6 2012-09-09 13:59:35 -07:00
David Malcolm
81ec9deea2 rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 2012-08-04 02:16:12 -04:00
Jorge A Gallegos
1b255a44e5 Adding systemd files and changes
Still not entirely working as I want it to, need to figure out why uwsgi
returns 30 and how to make systemd understand that is fine
2012-07-29 15:47:35 -07:00
Dennis Gilmore
359555261b - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild 2012-07-21 21:18:38 -05:00
Jorge A Gallegos
c189c1a50c Updating to latest upstream release 1.2.4
Which happened to be released like a day after I pushed 1.2.3
2012-07-08 14:01:00 -07:00
Jorge A Gallegos
9f25d84ea7 Unnecessary file 2012-07-07 17:22:54 -07:00
Jorge A Gallegos
8905a9ee88 Grumble. 2012-07-07 10:56:49 -07:00
Jorge A Gallegos
f7a6fa8701 Adding new sources 2012-07-07 10:51:57 -07:00
Jorge A Gallegos
100bc2e81f So many changes I can't list them all
Adding more plugins, fixed patching offsets, changing how we build
python3 plugin, also am attempting to use systemd services
2012-06-27 00:03:47 -07:00
Jorge A Gallegos
c7067d1aac Adding extra plugins, taking python3 out
Because now python3 plugin relies on the interpreter compiling it, it
has to be built separately (see
http://projects.unbit.it/uwsgi/wiki/Guide4Packagers)
I also added a handful of extra plugins, and am now inheriting from base
2012-06-26 23:51:22 -07:00
Jorge A Gallegos
88f416116c Fixed offset for this patch too 2012-06-26 23:50:28 -07:00
Jorge A Gallegos
df417c201c Offset changed a little bit
That is all
2012-06-26 23:09:05 -07:00
Jorge A Gallegos
bb046c8165 This should actually be done via fedpkg clean 2012-02-22 22:56:24 -08:00
Jorge A Gallegos
3ec3a74daf Account for mock builds and .src.rpm 2012-02-22 21:59:17 -08:00
Jorge A Gallegos
2213ec4196 Initial import via fedpkg import 2012-02-22 21:50:45 -08:00
34 changed files with 4515 additions and 0 deletions

72
.gitignore vendored
View file

@ -0,0 +1,72 @@
*.src.rpm
*.swp
*~
*.log
/results_uwsgi
/uwsgi-1.0.4.tar.gz
/uwsgi-1.2.3.tar.gz
/uwsgi-wiki-doc-v41.txt
/uwsgi-1.2.4.tar.gz
/uwsgi-wiki-doc-v43.txt
/uwsgi-1.2.6.tar.gz
/uwsgi-1.4.5.tar.gz
/uwsgi-1.9.8.tar.gz
/1.9.17.tar.gz
/uwsgi-doc-1.9.17.tar.gz
/uwsgi-1.9.17.tar.gz
/uwsgi-docs-b86b3f7.tar.gz
/uwsgi-1.9.18.2.tar.gz
/uwsgi-docs-71f2d78.tar.gz
/uwsgi-1.9.19.tar.gz
/uwsgi-docs-119b215.tar.gz
/uwsgi-2.0.6.tar.gz
/uwsgi-docs-d2c4969.tar.gz
/uwsgi-2.0.7.tar.gz
/uwsgi-docs-f551708.tar.gz
/uwsgi-2.0.9.tar.gz
/uwsgi-docs-bc49905.tar.gz
/uwsgi-docs-4ac8256.tar.gz
/uwsgi-2.0.11.tar.gz
/uwsgi-docs-c96716d.tar.gz
/uwsgi-docs-85d6b16.tar.gz
/uwsgi-2.0.11.1.tar.gz
/uwsgi-2.0.11.2.tar.gz
/uwsgi-docs-2d5b92a.tar.gz
/uwsgi-docs-5f5f899.tar.gz
/uwsgi-2.0.12.tar.gz
/uwsgi-2.0.13.1.tar.gz
/uwsgi-docs-0326082.tar.gz
/uwsgi-2.0.14.tar.gz
/uwsgi-docs-f6eacc5.tar.gz
/uwsgi-2.0.15.tar.gz
/uwsgi-docs-1610d37.tar.gz
/uwsgi-2.0.16.tar.gz
/uwsgi-docs-eb4ad98.tar.gz
/uwsgi-2.0.17.1.tar.gz
/uwsgi-docs-32a8f73.tar.gz
/uwsgi-2.0.18.tar.gz
/uwsgi-docs-8d868ea.tar.gz
/uwsgi-2.0.20.tar.gz
/uwsgi-docs-9b4ef5f.tar.gz
/uwsgi-2.0.21.tar.gz
/uwsgi-docs-47e1794.tar.gz
/uwsgi-2.0.22.tar.gz
/uwsgi-docs-9c89fef.tar.gz
/uwsgi-2.0.23.tar.gz
/uwsgi-docs-3be14d3.tar.gz
/uwsgi-2.0.24.tar.gz
/uwsgi-docs-4e23afe.tar.gz
/2.0.25.1.tar.gz
/uwsgi-docs-8dcaacd.tar.gz
/2.0.26.tar.gz
/uwsgi-docs-59e6cd1.tar.gz
/2.0.27.tar.gz
/uwsgi-docs-c0f17cd.tar.gz
/2.0.28.tar.gz
/uwsgi-docs-9606cb0.tar.gz
/2.0.29.tar.gz
/uwsgi-docs-b9da5ea.tar.gz
/2.0.30.tar.gz
/uwsgi-docs-f728a25.tar.gz
/uwsgi-docs-5784c30.tar.gz
/2.0.31.tar.gz

6
README.Fedora Normal file
View file

@ -0,0 +1,6 @@
The build profile used to build this package is shipped along with the
-devel subpackage and is located in the ``buildconf`` subdirectory in the
src directory.
A copy of the documentation can be obtained by installing the ``uwsgi-docs``
package. The documentation is a copy as of the git SHA:

7
emperor.ini Normal file
View file

@ -0,0 +1,7 @@
[uwsgi]
uid = uwsgi
gid = uwsgi
emperor = /etc/uwsgi.d
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid

79
fedora.ini Normal file
View file

@ -0,0 +1,79 @@
[uwsgi]
inherit = core
bin_name = uwsgi
xml = libxml2
yaml = libyaml
json = jansson
pcre = auto
routing = auto
ssl = auto
malloc_implementation = libc
embedded_plugins = corerouter, echo, ping
plugins = airbrake,
alarm_curl,
cache,
carbon,
cgi,
cheaper_busyness,
cplusplus,
curl_cron,
dumbloop,
dummy,
emperor_amqp,
fastrouter,
forkptyrouter,
graylog2,
http,
ldap,
logcrypto,
logfile,
logpipe,
logsocket,
lua,
msgpack,
nagios,
notfound,
pam,
pty,
rawrouter,
redislog,
router_basicauth,
router_cache,
router_expires,
router_hash,
router_http,
router_memcached,
router_metrics,
router_radius,
router_redirect,
router_redis,
router_rewrite,
router_spnego,
router_static,
router_uwsgi,
router_xmldir,
rpc,
rrdtool,
rsyslog,
ruby19,
spooler,
sqlite3,
ssi,
sslrouter,
stats_pusher_file,
stats_pusher_socket,
stats_pusher_statsd,
syslog,
systemd_logger,
transformation_chunked,
transformation_gzip,
transformation_offload,
transformation_template,
transformation_tofile,
transformation_toupper,
ugreen,
webdav,
xattr,
xslt,
zabbix,
zergpool

View file

@ -0,0 +1,2 @@
SHA512 (uwsgi-docs-5784c30.tar.gz) = 4f966da4a867e45043a0eb4a123b439c8ab1f7ce6e8b32d770545ff7fae586e4e7dd011106aa6ed0ec82a6c6192937e0fd12ed681443332205566fc329e11cd8
SHA512 (2.0.31.tar.gz) = d4d327f36455438e165298cb5a7d483c951f4acd3d834b46ceeda105bd3664792ead226b02e06db62e92c210544778119bf75a55d9d4f30f8fba896c7de51e6d

View file

@ -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();
}

92
uwsgi.init Normal file
View file

@ -0,0 +1,92 @@
#!/bin/sh
#
# uwsgi - this script starts and stops the uwsgi emperor
#
# chkconfig: - 85 15
# description: Fast, self-healing, application container server
# processname: uwsgi
# config: /etc/uwsgi.ini
# config: /etc/uwsgi.d
# Source function library.
. /etc/rc.d/init.d/functions
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PROG=/usr/sbin/uwsgi
OWNER=uwsgi
NAME=uwsgi
DESC="Fast, self-healing, application container server"
DAEMON_OPTS="--ini /etc/uwsgi.ini --pidfile /var/run/uwsgi/uwsgi.pid --stats /var/run/uwsgi/stats.sock --daemonize /var/log/uwsgi.log"
[ -f /etc/sysconfig/uwsgi ] && . /etc/sysconfig/uwsgi
lockfile=/var/lock/subsys/uwsgi
start () {
echo -n "Starting $NAME $DESC: "
daemon $PROG $DAEMON_OPTS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop () {
echo -n "Stopping $NAME $DESC: "
# uWSGI docs say INT is a gentler way to stop
killproc $PROG -INT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
reload () {
echo "Reloading $NAME"
killproc $PROG -HUP
RETVAL=$?
echo
}
restart () {
stop
start
}
rh_status () {
status $PROG
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo "Usage: $0 {start|stop|restart|condrestart|try-restart|reload|status}" >&2
exit 2
;;
esac
exit 0

15
uwsgi.service Normal file
View file

@ -0,0 +1,15 @@
[Unit]
Description=uWSGI Emperor Service
After=syslog.target
[Service]
EnvironmentFile=-/etc/sysconfig/uwsgi
ExecStart=/usr/sbin/uwsgi --ini /etc/uwsgi.ini --pidfile /run/uwsgi/uwsgi.pid --stats /run/uwsgi/stats.sock
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
Restart=always
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target

2822
uwsgi.spec Normal file

File diff suppressed because it is too large Load diff

1
uwsgi.sysusers Normal file
View file

@ -0,0 +1 @@
u uwsgi - 'uWSGI daemon user' /run/uwsgi -

1
uwsgi.tmpfiles Normal file
View file

@ -0,0 +1 @@
d /run/uwsgi 0775 uwsgi uwsgi

View file

@ -0,0 +1,14 @@
diff -uNr a/core/utils.c b/core/utils.c
--- a/core/utils.c 2021-10-06 07:22:45.000000000 +0200
+++ b/core/utils.c 2022-01-23 12:19:10.715602147 +0100
@@ -593,6 +593,10 @@
uwsgi_error("chroot()");
exit(1);
}
+ if (chdir("/")) {
+ uwsgi_error("chdir()");
+ exit(1);
+ }
uwsgi.is_chrooted = 1;
#ifdef __linux__
if (uwsgi.logging_options.memory_report) {

View file

@ -0,0 +1,64 @@
diff -uNr a/uwsgiconfig.py b/uwsgiconfig.py
--- a/uwsgiconfig.py 2024-02-09 21:30:45.436292711 +0100
+++ b/uwsgiconfig.py 2024-02-09 21:32:29.607595604 +0100
@@ -690,7 +690,27 @@
'-D_LARGEFILE_SOURCE',
'-D_FILE_OFFSET_BITS=64'
]
- if "gcc" in GCC:
+
+ gcc_version = spcall("%s -dumpversion" % GCC)
+ if not gcc_version and GCC.startswith('gcc'):
+ if uwsgi_os == 'Darwin':
+ GCC = 'llvm-' + GCC
+ else:
+ GCC = 'gcc'
+ gcc_version = spcall("%s -dumpversion" % GCC)
+
+ try:
+ gcc_version_components = gcc_version.split('.')
+ gcc_major = int(gcc_version_components[0])
+ if len(gcc_version_components) > 1:
+ gcc_minor = int(gcc_version_components[1])
+ else:
+ # gcc 5.0 is represented as simply "5"
+ gcc_minor = 0
+ except Exception:
+ raise Exception("you need a C compiler to build uWSGI")
+
+ if "gcc" in GCC and gcc_major >= 5:
cflags.append('-Wformat-signedness')
self.cflags = cflags + os.environ.get("CFLAGS", "").split() + self.get('cflags', '').split()
@@ -710,14 +730,6 @@
if uwsgi_os == 'GNU':
self.cflags.append('-D__HURD__')
- gcc_version = spcall("%s -dumpversion" % GCC)
- if not gcc_version and GCC.startswith('gcc'):
- if uwsgi_os == 'Darwin':
- GCC = 'llvm-' + GCC
- else:
- GCC = 'gcc'
- gcc_version = spcall("%s -dumpversion" % GCC)
-
try:
add_it = False
cpp_include_list = str(spcall3("%s -v" % CPP)).split("\n")
@@ -750,16 +762,6 @@
if not mute:
print("detected include path: %s" % self.include_path)
- try:
- gcc_version_components = gcc_version.split('.')
- gcc_major = int(gcc_version_components[0])
- if len(gcc_version_components) > 1:
- gcc_minor = int(gcc_version_components[1])
- else:
- # gcc 5.0 is represented as simply "5"
- gcc_minor = 0
- except:
- raise Exception("you need a C compiler to build uWSGI")
if (sys.version_info[0] == 2) or (gcc_major < 4) or (gcc_major == 4 and gcc_minor < 3):
self.cflags = self.cflags + ['-fno-strict-aliasing']
# add -fno-strict-aliasing only on python2 and gcc < 4.3

View file

@ -0,0 +1,13 @@
diff --git a/plugins/glusterfs/glusterfs.c b/plugins/glusterfs/glusterfs.c
index 83428faf..c0063f4e 100644
--- a/plugins/glusterfs/glusterfs.c
+++ b/plugins/glusterfs/glusterfs.c
@@ -46,7 +46,7 @@ struct uwsgi_glusterfs_async_io {
ssize_t rlen;
};
-static void uwsgi_glusterfs_read_async_cb(glfs_fd_t *fd, ssize_t rlen, void *data) {
+static void uwsgi_glusterfs_read_async_cb(glfs_fd_t *fd, ssize_t rlen, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data) {
struct uwsgi_glusterfs_async_io *aio = (struct uwsgi_glusterfs_async_io *) data;
#ifdef UWSGI_DEBUG
uwsgi_log("[glusterfs-cb] rlen = %d\n", rlen);

View file

@ -0,0 +1,12 @@
diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py
--- a/plugins/jvm/uwsgiplugin.py 2023-07-28 20:59:42.036749911 +0200
+++ b/plugins/jvm/uwsgiplugin.py 2023-07-28 21:00:11.079400969 +0200
@@ -36,7 +36,7 @@
for jvm in known_jvms:
if os.path.exists(jvm + '/include'):
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
- if os.path.exists("%s/jre"):
+ if os.path.exists("%s/jre" % jvm):
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
else:
JVM_LIBPATH = ["-L%s/lib/server" % (jvm,)]

31
uwsgi_fix_lua.patch Normal file
View file

@ -0,0 +1,31 @@
diff --git a/plugins/lua/uwsgiplugin.py b/plugins/lua/uwsgiplugin.py
index 8aaa95b..d0e3cd0 100644
--- a/plugins/lua/uwsgiplugin.py
+++ b/plugins/lua/uwsgiplugin.py
@@ -3,7 +3,7 @@ import os,sys
LUAINC = os.environ.get('UWSGICONFIG_LUAINC')
LUALIB = os.environ.get('UWSGICONFIG_LUALIB')
LUALIBPATH = os.environ.get('UWSGICONFIG_LUALIBPATH')
-LUAPC = os.environ.get('UWSGICONFIG_LUAPC', 'lua5.1')
+LUAPC = os.environ.get('UWSGICONFIG_LUAPC', 'lua')
# we LUAINC/LUALIB/LUALIBPATH override the LUAPC for backwards compat
if LUAINC:
@@ -12,7 +12,7 @@ else:
try:
CFLAGS = os.popen('pkg-config --cflags %s' % LUAPC).read().rstrip().split()
except:
- CFLAGS = ['-I/usr/include/lua5.1']
+ CFLAGS = ['-I/usr/include/lua']
if LUALIB:
LIBS = ['-l%s' % LUALIB]
@@ -20,7 +20,7 @@ else:
try:
LIBS = os.popen('pkg-config --libs %s' % LUAPC).read().rstrip().split()
except:
- LIBS = ['-llua5.1']
+ LIBS = ['-llua']
if LUALIBPATH:
LDFLAGS = ['-L%s' % LUALIBPATH]

269
uwsgi_fix_mongodb.patch Normal file
View file

@ -0,0 +1,269 @@
From 83752e472c35632174534763dffd312fc120a429 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9F=D1=80?=
=?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2?=
<weirdcarrotmonster@gmail.com>
Date: Fri, 10 Apr 2015 22:56:59 +0400
Subject: [PATCH 1/3] Updated GridFS plugin to work with legacy
mongo-cxx-driver version 1.0.0
---
plugins/gridfs/gridfs.cc | 53 +++++++++++++++++++++++++++++++++----------
plugins/gridfs/uwsgiplugin.py | 7 +++---
2 files changed, 45 insertions(+), 15 deletions(-)
diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc
index d11451a..81ff0d9 100644
--- a/plugins/gridfs/gridfs.cc
+++ b/plugins/gridfs/gridfs.cc
@@ -1,3 +1,7 @@
+#include <memory>
+#include <vector>
+#include <cstring>
+
#include <uwsgi.h>
#include <client/dbclient.h>
@@ -7,6 +11,7 @@ struct uwsgi_gridfs_mountpoint {
char *mountpoint;
uint16_t mountpoint_len;
char *server;
+ char *replica;
char *db;
char *timeout_str;
int timeout;
@@ -21,6 +26,7 @@ struct uwsgi_gridfs_mountpoint {
uint16_t prefix_len;
char *username;
char *password;
+ std::vector<mongo::HostAndPort> servers;
};
struct uwsgi_gridfs {
@@ -38,33 +44,44 @@ extern struct uwsgi_server uwsgi;
extern struct uwsgi_plugin gridfs_plugin;
static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_mountpoint *ugm, char *itemname, int need_free) {
-
try {
- mongo::scoped_ptr<mongo::ScopedDbConnection> conn( mongo::ScopedDbConnection::getScopedDbConnection(ugm->server, ugm->timeout) );
+ std::unique_ptr<mongo::DBClientBase> conn;
+
+ if (ugm->replica) {
+ conn = std::unique_ptr<mongo::DBClientBase> (new mongo::DBClientReplicaSet(ugm->replica, ugm->servers));
+ dynamic_cast<mongo::DBClientReplicaSet *>(conn.get())->connect();
+ }
+ else {
+ conn = std::unique_ptr<mongo::DBClientBase> (new mongo::DBClientConnection());
+ dynamic_cast<mongo::DBClientConnection *>(conn.get())->connect(ugm->server);
+ }
+
try {
if (ugm->username && ugm->password) {
std::string errmsg;
- if ((*conn).conn().auth(ugm->db, ugm->username, ugm->password, errmsg)) {
+ if (!conn->auth(ugm->db, ugm->username, ugm->password, errmsg)) {
uwsgi_log("[uwsgi-gridfs]: %s\n", errmsg.c_str());
- (*conn).done();
uwsgi_403(wsgi_req);
return;
}
}
- mongo::GridFS gridfs((*conn).conn(), ugm->db);
- mongo::GridFile gfile = gridfs.findFile(itemname);
+ mongo::GridFS gridfs((*conn.get()), ugm->db);
+ mongo::GridFile gfile = gridfs.findFileByName(itemname);
+
if (need_free) {
free(itemname);
itemname = NULL;
}
+
if (!gfile.exists()) {
- (*conn).done();
uwsgi_404(wsgi_req);
return;
}
+
uwsgi_response_prepare_headers(wsgi_req, (char *)"200 OK", 6);
// first get the content_type (if possibile)
std::string filename = gfile.getFilename();
+
if (!ugm->no_mime) {
size_t mime_type_len = 0;
char *mime_type = uwsgi_get_mime_type((char *)filename.c_str(), filename.length(), &mime_type_len);
@@ -72,11 +89,13 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m
uwsgi_response_add_content_type(wsgi_req, mime_type, mime_type_len);
}
}
+
if (ugm->orig_filename) {
char *filename_header = uwsgi_concat3((char *)"inline; filename=\"", (char *)filename.c_str(), (char *)"\"");
uwsgi_response_add_header(wsgi_req, (char *)"Content-Disposition", 19, filename_header, 19 + filename.length());
free(filename_header);
}
+
uwsgi_response_add_content_length(wsgi_req, gfile.getContentLength());
char http_last_modified[49];
@@ -90,7 +109,7 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m
char *etag = uwsgi_concat3((char *)"\"", (char *)g_md5.c_str(), (char *)"\"");
uwsgi_response_add_header(wsgi_req, (char *)"ETag", 4, etag, 2+g_md5.length());
free(etag);
- }
+ }
}
if (ugm->md5) {
@@ -106,22 +125,20 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m
int i;
for(i=0;i<nc;i++) {
mongo::GridFSChunk gchunk = gfile.getChunk(i);
- int chunk_len = 0;
+ int chunk_len = 0;
const char *chunk = gchunk.data(chunk_len);
uwsgi_response_write_body_do(wsgi_req, (char *) chunk, chunk_len);
}
}
- (*conn).done();
}
catch ( mongo::DBException &e ) {
uwsgi_log("[uwsgi-gridfs]: %s\n", e.what());
- (*conn).done();
if (need_free && itemname) {
free(itemname);
itemname = NULL;
}
}
- }
+ }
catch ( mongo::DBException &e ) {
uwsgi_log("[uwsgi-gridfs]: %s\n", e.what());
if (need_free && itemname) {
@@ -137,6 +154,7 @@ static struct uwsgi_gridfs_mountpoint *uwsgi_gridfs_add_mountpoint(char *arg, si
if (uwsgi_kvlist_parse(arg, arg_len, ',', '=',
"mountpoint", &ugm->mountpoint,
"server", &ugm->server,
+ "replica", &ugm->replica,
"db", &ugm->db,
"prefix", &ugm->prefix,
"no_mime", &ugm->no_mime,
@@ -185,6 +203,16 @@ static struct uwsgi_gridfs_mountpoint *uwsgi_gridfs_add_mountpoint(char *arg, si
ugm->itemname_len = strlen(ugm->itemname);
}
+ if (ugm->replica) {
+ std::string buffer(ugm->server);
+
+ size_t pos;
+ while ((pos = buffer.find(",")) != std::string::npos) {
+ ugm->servers.push_back(mongo::HostAndPort(buffer.substr(0, pos)));
+ buffer.erase(0, pos + 1);
+ }
+ }
+
return ugm;
}
@@ -236,6 +264,7 @@ extern "C" int uwsgi_gridfs_request(struct wsgi_request *wsgi_req) {
extern "C" void uwsgi_gridfs_mount() {
+ mongo::client::initialize();
if (!uwsgi.skip_atexit) {
uwsgi_log("*** WARNING libmongoclient could have a bug with atexit() hooks, if you get segfault on end/reload, add --skip-atexit ***\n");
}
diff --git a/plugins/gridfs/uwsgiplugin.py b/plugins/gridfs/uwsgiplugin.py
index a2163d7..61567bc 100644
--- a/plugins/gridfs/uwsgiplugin.py
+++ b/plugins/gridfs/uwsgiplugin.py
@@ -1,16 +1,17 @@
import os
-NAME='gridfs'
+NAME = 'gridfs'
-CFLAGS = ['-I/usr/include/mongo','-I/usr/local/include/mongo']
+CFLAGS = ['-I/usr/include/mongo', '-I/usr/local/include/mongo', '-std=c++11', '-Wno-error']
LDFLAGS = []
LIBS = []
-if not 'UWSGI_MONGODB_NOLIB' in os.environ:
+if 'UWSGI_MONGODB_NOLIB' not in os.environ:
LIBS.append('-lmongoclient')
LIBS.append('-lstdc++')
LIBS.append('-lboost_thread')
LIBS.append('-lboost_system')
LIBS.append('-lboost_filesystem')
+ LIBS.append('-lboost_regex')
GCC_LIST = ['plugin', 'gridfs.cc']
--
2.1.0
From 932caed82a2338e0f1bd5d68833ca5c31360b882 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9F=D1=80?=
=?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2?=
<weirdcarrotmonster@gmail.com>
Date: Fri, 10 Apr 2015 23:07:41 +0400
Subject: [PATCH 2/3] Fixed server list parsing
---
plugins/gridfs/gridfs.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc
index 81ff0d9..f58d976 100644
--- a/plugins/gridfs/gridfs.cc
+++ b/plugins/gridfs/gridfs.cc
@@ -211,6 +211,10 @@ static struct uwsgi_gridfs_mountpoint *uwsgi_gridfs_add_mountpoint(char *arg, si
ugm->servers.push_back(mongo::HostAndPort(buffer.substr(0, pos)));
buffer.erase(0, pos + 1);
}
+
+ if (!ugm->servers.size()) {
+ ugm->servers.push_back(mongo::HostAndPort(ugm->server));
+ }
}
return ugm;
--
2.1.0
From a870dbfb0dc4268cbcecf573765338ec5a52f195 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9F=D1=80?=
=?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B7=D0=B0=D0=BD=D0=BE=D0=B2?=
<weirdcarrotmonster@gmail.com>
Date: Fri, 10 Apr 2015 23:38:38 +0400
Subject: [PATCH 3/3] Passing timeout argument to MongoDB connection
---
plugins/gridfs/gridfs.cc | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc
index f58d976..5f7c4ba 100644
--- a/plugins/gridfs/gridfs.cc
+++ b/plugins/gridfs/gridfs.cc
@@ -48,14 +48,14 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m
std::unique_ptr<mongo::DBClientBase> conn;
if (ugm->replica) {
- conn = std::unique_ptr<mongo::DBClientBase> (new mongo::DBClientReplicaSet(ugm->replica, ugm->servers));
+ conn = std::unique_ptr<mongo::DBClientBase> (new mongo::DBClientReplicaSet(ugm->replica, ugm->servers, ugm->timeout));
dynamic_cast<mongo::DBClientReplicaSet *>(conn.get())->connect();
}
else {
- conn = std::unique_ptr<mongo::DBClientBase> (new mongo::DBClientConnection());
+ conn = std::unique_ptr<mongo::DBClientBase> (new mongo::DBClientConnection(true, 0, ugm->timeout));
dynamic_cast<mongo::DBClientConnection *>(conn.get())->connect(ugm->server);
}
-
+
try {
if (ugm->username && ugm->password) {
std::string errmsg;
--
2.1.0

15
uwsgi_fix_mono.patch Normal file
View file

@ -0,0 +1,15 @@
diff -uNwr a/plugins/mono/uwsgiplugin.py b/plugins/mono/uwsgiplugin.py
--- a/plugins/mono/uwsgiplugin.py 2022-10-24 12:21:58.000000000 +0200
+++ b/plugins/mono/uwsgiplugin.py 2022-10-27 20:47:38.791413699 +0200
@@ -3,9 +3,9 @@
NAME = 'mono'
-CFLAGS = os.popen('pkg-config --cflags mono-2').read().rstrip().split()
+CFLAGS = os.popen('pkg-config --cflags mono-2 glib-2.0').read().rstrip().split()
LDFLAGS = []
-LIBS = os.popen('pkg-config --libs mono-2').read().rstrip().split()
+LIBS = os.popen('pkg-config --libs mono-2 glib-2.0').read().rstrip().split()
GCC_LIST = ['mono_plugin']
if os.uname()[0] == 'Darwin':

17
uwsgi_fix_php8.patch Normal file
View file

@ -0,0 +1,17 @@
diff -uNr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py
--- a/plugins/php/uwsgiplugin.py 2022-01-22 22:40:33.783038869 +0100
+++ b/plugins/php/uwsgiplugin.py 2022-01-22 22:41:45.261394898 +0100
@@ -20,7 +20,12 @@
if ld_run_path:
LDFLAGS.append('-L%s' % ld_run_path)
-LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version]
+# PHP8 and above does not add the version to the library
+# name
+if int(php_version) < 8:
+ LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp' + php_version]
+else:
+ LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp']
phplibdir = os.environ.get('UWSGICONFIG_PHPLIBDIR')
if phplibdir:

View file

@ -0,0 +1,42 @@
From 8ca18da9a01eee19156243c5c0d28d2572698e4a Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
Date: Sun, 30 Jan 2022 14:31:50 +0100
Subject: [PATCH] plugins/php: handle php8.1 zend_file_handle signature change
filename is now a zend_string.
Refs #2394
---
plugins/php/php_plugin.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c
index d336adddc..8b5a24156 100644
--- a/plugins/php/php_plugin.c
+++ b/plugins/php/php_plugin.c
@@ -1096,14 +1096,19 @@ int uwsgi_php_request(struct wsgi_request *wsgi_req) {
SG(request_info).path_translated = wsgi_req->file;
- memset(&file_handle, 0, sizeof(zend_file_handle));
- file_handle.type = ZEND_HANDLE_FILENAME;
- file_handle.filename = real_filename;
+#if PHP_VERSION_ID >= 80100
+ zend_string *handle_filename = zend_string_init(real_filename, real_filename_len, 0);
+#else
+ const char *handle_filename = real_filename;
+#endif
+ memset(&file_handle, 0, sizeof(zend_file_handle));
+ file_handle.type = ZEND_HANDLE_FILENAME;
+ file_handle.filename = handle_filename;
- if (php_request_startup() == FAILURE) {
+ if (php_request_startup() == FAILURE) {
uwsgi_500(wsgi_req);
- return -1;
- }
+ return -1;
+ }
struct uwsgi_string_list *usl=NULL;

15
uwsgi_fix_php82.patch Normal file
View file

@ -0,0 +1,15 @@
diff -uNr a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c
--- a/plugins/php/php_plugin.c 2022-10-06 19:52:07.237882916 +0200
+++ b/plugins/php/php_plugin.c 2022-10-06 19:56:29.232418542 +0200
@@ -607,7 +607,11 @@
static int php_uwsgi_startup(sapi_module_struct *sapi_module)
{
+#if PHP_VERSION_ID >= 80200
+ if (php_module_startup(&uwsgi_sapi_module, &uwsgi_module_entry)==FAILURE) {
+#else
if (php_module_startup(&uwsgi_sapi_module, &uwsgi_module_entry, 1)==FAILURE) {
+#endif
return FAILURE;
} else {
return SUCCESS;

52
uwsgi_fix_php83.patch Normal file
View file

@ -0,0 +1,52 @@
From 064984116e86ac0a5d5d3805765395b661fc4455 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Mon, 4 Sep 2023 13:10:52 +0200
Subject: [PATCH] ini_entries is read-only PHP 8.3
---
plugins/php/php_plugin.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c
index b3efa006a..d9b615bac 100644
--- a/plugins/php/php_plugin.c
+++ b/plugins/php/php_plugin.c
@@ -27,6 +27,7 @@ struct uwsgi_php {
char *fallback;
char *fallback2;
char *fallback_qs;
+ char *ini_entries;
size_t ini_size;
int dump_config;
char *server_software;
@@ -232,21 +233,22 @@ static sapi_module_struct uwsgi_sapi_module;
void uwsgi_php_append_config(char *filename) {
size_t file_size = 0;
- char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL);
- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + file_size);
- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, file_content, file_size);
+ char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL);
+ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + file_size);
+ memcpy(uphp.ini_entries + uphp.ini_size, file_content, file_size);
uphp.ini_size += file_size-1;
free(file_content);
+ uwsgi_sapi_module.ini_entries = uphp.ini_entries;
}
void uwsgi_php_set(char *opt) {
- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + strlen(opt)+2);
- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, opt, strlen(opt));
-
+ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + strlen(opt)+2);
+ memcpy(uphp.ini_entries + uphp.ini_size, opt, strlen(opt));
uphp.ini_size += strlen(opt)+1;
- uwsgi_sapi_module.ini_entries[uphp.ini_size-1] = '\n';
- uwsgi_sapi_module.ini_entries[uphp.ini_size] = 0;
+ uphp.ini_entries[uphp.ini_size-1] = '\n';
+ uphp.ini_entries[uphp.ini_size] = 0;
+ uwsgi_sapi_module.ini_entries = uphp.ini_entries;
}
extern ps_module ps_mod_uwsgi;

View file

@ -0,0 +1,43 @@
diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c
index 717d6317b..d336adddc 100644
--- a/plugins/php/php_plugin.c
+++ b/plugins/php/php_plugin.c
@@ -497,21 +497,24 @@ PHP_FUNCTION(uwsgi_signal) {
RETURN_NULL();
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
zend_function_entry uwsgi_php_functions[] = {
- PHP_FE(uwsgi_version, NULL)
- PHP_FE(uwsgi_setprocname, NULL)
- PHP_FE(uwsgi_worker_id, NULL)
- PHP_FE(uwsgi_masterpid, NULL)
- PHP_FE(uwsgi_signal, NULL)
-
- PHP_FE(uwsgi_rpc, NULL)
-
- PHP_FE(uwsgi_cache_get, NULL)
- PHP_FE(uwsgi_cache_set, NULL)
- PHP_FE(uwsgi_cache_update, NULL)
- PHP_FE(uwsgi_cache_del, NULL)
- PHP_FE(uwsgi_cache_clear, NULL)
- PHP_FE(uwsgi_cache_exists, NULL)
+ PHP_FE(uwsgi_version, arginfo_void)
+ PHP_FE(uwsgi_setprocname, arginfo_void)
+ PHP_FE(uwsgi_worker_id, arginfo_void)
+ PHP_FE(uwsgi_masterpid, arginfo_void)
+ PHP_FE(uwsgi_signal, arginfo_void)
+
+ PHP_FE(uwsgi_rpc, arginfo_void)
+
+ PHP_FE(uwsgi_cache_get, arginfo_void)
+ PHP_FE(uwsgi_cache_set, arginfo_void)
+ PHP_FE(uwsgi_cache_update, arginfo_void)
+ PHP_FE(uwsgi_cache_del, arginfo_void)
+ PHP_FE(uwsgi_cache_clear, arginfo_void)
+ PHP_FE(uwsgi_cache_exists, arginfo_void)
{ NULL, NULL, NULL},
};

View file

@ -0,0 +1,11 @@
diff -uNr a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h
--- a/plugins/python/uwsgi_python.h 2021-10-06 07:22:45.000000000 +0200
+++ b/plugins/python/uwsgi_python.h 2022-02-19 18:39:10.929895062 +0100
@@ -1,3 +1,7 @@
+// This needs to be defined before Python.h is included
+// to indicate that the code uses Py_ssize_t properly
+#define PY_SSIZE_T_CLEAN
+
#include <uwsgi.h>
#include <Python.h>

60
uwsgi_fix_rpath.patch Normal file
View file

@ -0,0 +1,60 @@
diff -uNr a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py
--- a/plugins/jvm/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100
+++ b/plugins/jvm/uwsgiplugin.py 2024-02-08 21:55:26.627134235 +0100
@@ -69,11 +69,6 @@
GCC_LIST = ['jvm_plugin']
-if 'LD_RUN_PATH' in os.environ:
- os.environ['LD_RUN_PATH'] += ':' + JVM_LIBPATH[0][2:]
-else:
- os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:]
-
def post_build(config):
if subprocess.call("javac %s/plugins/jvm/uwsgi.java" % os.getcwd(), shell=True) != 0:
os._exit(1)
diff -uNr a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py
--- a/plugins/php/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100
+++ b/plugins/php/uwsgiplugin.py 2024-02-08 21:56:28.630427541 +0100
@@ -19,7 +19,6 @@
if ld_run_path:
LDFLAGS.append('-L%s' % ld_run_path)
- os.environ['LD_RUN_PATH'] = ld_run_path
# PHP8 and above does not add the version to the library
# name
diff -uNr a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py
--- a/plugins/python/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100
+++ b/plugins/python/uwsgiplugin.py 2024-02-08 21:55:26.654133927 +0100
@@ -88,9 +88,6 @@
libdir = "%s/lib" % sysconfig.PREFIX
LDFLAGS.append("-L%s" % libdir)
- LDFLAGS.append("-Wl,-rpath,%s" % libdir)
-
- os.environ['LD_RUN_PATH'] = "%s" % libdir
LIBS.append('-lpython%s' % get_python_version())
else:
diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py
--- a/plugins/rack/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100
+++ b/plugins/rack/uwsgiplugin.py 2024-02-08 21:55:26.655133916 +0100
@@ -48,7 +48,6 @@
if has_shared == 'yes':
LDFLAGS.append('-L' + libpath )
- os.environ['LD_RUN_PATH'] = libpath
LIBS.append(os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip())
else:
rubylibdir = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['rubylibdir']\"").read().rstrip()
diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py
--- a/plugins/ruby19/uwsgiplugin.py 2024-02-08 17:35:28.000000000 +0100
+++ b/plugins/ruby19/uwsgiplugin.py 2024-02-08 21:55:26.655133916 +0100
@@ -42,6 +42,5 @@
libpath = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['libdir']\"" % rbconfig).read().rstrip()
LDFLAGS.append('-L' + libpath )
-os.environ['LD_RUN_PATH'] = libpath
LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip().split()

View file

@ -0,0 +1,15 @@
diff -uNr a/plugins/rack/rack_plugin.c b/plugins/rack/rack_plugin.c
--- a/plugins/rack/rack_plugin.c 2022-10-24 12:21:58.000000000 +0200
+++ b/plugins/rack/rack_plugin.c 2023-06-13 21:47:46.514179214 +0200
@@ -456,7 +456,11 @@
static void rack_hack_dollar_zero(VALUE name, ID id) {
ur.dollar_zero = rb_obj_as_string(name);
+ // From ruby 2.7 onwards this is a noop, from ruby 3.2 onwards
+ // this function no longer exists
+#if !defined(RUBY27)
rb_obj_taint(ur.dollar_zero);
+#endif
}
#ifndef RUBY19

View file

@ -0,0 +1,33 @@
diff -uNr a/plugins/pty/pty.c b/plugins/pty/pty.c
--- a/plugins/pty/pty.c 2024-10-26 11:59:26.000000000 +0200
+++ b/plugins/pty/pty.c 2025-01-24 20:04:55.952597269 +0100
@@ -259,7 +259,7 @@
}
-static void uwsgi_pty_winch() {
+static void uwsgi_pty_winch(int signum) {
// 2 uwsgi packets
char uwsgi_pkt[8];
#ifdef TIOCGWINSZ
@@ -309,7 +309,7 @@
if (upty.uremote) {
signal(SIGWINCH, uwsgi_pty_winch);
// send current terminal size
- uwsgi_pty_winch();
+ uwsgi_pty_winch(0);
}
upty.queue = event_queue_init();
diff -uNr a/plugins/tuntap/tuntap.c b/plugins/tuntap/tuntap.c
--- a/plugins/tuntap/tuntap.c 2024-10-26 11:59:26.000000000 +0200
+++ b/plugins/tuntap/tuntap.c 2025-01-24 20:33:49.513449322 +0100
@@ -409,7 +409,7 @@
}
}
-static void uwsgi_tuntap_router() {
+static void uwsgi_tuntap_router(int (*_)(void *), char ** __) {
if (!utt.routers) return;

174
uwsgi_python311.patch Normal file
View file

@ -0,0 +1,174 @@
Add Python 3.11 support
Backport of https://github.com/unbit/uwsgi/pull/2453
Resolves: rhbz#2099185
diff --git a/plugins/python/profiler.c b/plugins/python/profiler.c
index 92bc3da..2a7e1cc 100644
--- a/plugins/python/profiler.c
+++ b/plugins/python/profiler.c
@@ -13,6 +13,14 @@ int PyFrame_GetLineNumber(PyFrameObject *frame) {
}
#endif
+#if PY_VERSION_HEX < 0x030900B1
+PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
+{
+ Py_INCREF(frame->f_code);
+ return frame->f_code;
+}
+#endif
+
#ifdef PYTHREE
#undef PyString_AsString
static char *PyString_AsString(PyObject *o) {
@@ -27,27 +35,32 @@ int uwsgi_python_profiler_call(PyObject *obj, PyFrameObject *frame, int what, Py
static uint64_t last_ts = 0;
uint64_t now = uwsgi_micros();
uint64_t delta = 0;
+ PyCodeObject *code;
switch(what) {
case PyTrace_CALL:
if (last_ts == 0) delta = 0;
else delta = now - last_ts;
last_ts = now;
+ code = PyFrame_GetCode(frame);
uwsgi_log("[uWSGI Python profiler %llu] CALL: %s (line %d) -> %s %d args, stacksize %d\n",
(unsigned long long) delta,
- PyString_AsString(frame->f_code->co_filename),
+ PyString_AsString(code->co_filename),
PyFrame_GetLineNumber(frame),
- PyString_AsString(frame->f_code->co_name), frame->f_code->co_argcount, frame->f_code->co_stacksize);
+ PyString_AsString(code->co_name), code->co_argcount, code->co_stacksize);
+ Py_DECREF(code);
break;
case PyTrace_C_CALL:
if (last_ts == 0) delta = 0;
else delta = now - last_ts;
last_ts = now;
+ code = PyFrame_GetCode(frame);
uwsgi_log("[uWSGI Python profiler %llu] C CALL: %s (line %d) -> %s %d args, stacksize %d\n",
(unsigned long long) delta,
- PyString_AsString(frame->f_code->co_filename),
+ PyString_AsString(code->co_filename),
PyFrame_GetLineNumber(frame),
- PyEval_GetFuncName(arg), frame->f_code->co_argcount, frame->f_code->co_stacksize);
+ PyEval_GetFuncName(arg), code->co_argcount, code->co_stacksize);
+ Py_DECREF(code);
break;
}
@@ -68,7 +81,9 @@ int uwsgi_python_tracer(PyObject *obj, PyFrameObject *frame, int what, PyObject
delta = now - last_ts;
}
last_ts = now;
- uwsgi_log("[uWSGI Python profiler %llu] file %s line %d: %s argc:%d\n", (unsigned long long)delta, PyString_AsString(frame->f_code->co_filename), PyFrame_GetLineNumber(frame), PyString_AsString(frame->f_code->co_name), frame->f_code->co_argcount);
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ uwsgi_log("[uWSGI Python profiler %llu] file %s line %d: %s argc:%d\n", (unsigned long long)delta, PyString_AsString(code->co_filename), PyFrame_GetLineNumber(frame), PyString_AsString(code->co_name), code->co_argcount);
+ Py_DECREF(code);
}
return 0;
diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c
index 6834f84..1d21c0d 100644
--- a/plugins/python/python_plugin.c
+++ b/plugins/python/python_plugin.c
@@ -1137,9 +1137,13 @@ void uwsgi_python_init_apps() {
}
// prepare for stack suspend/resume
- if (uwsgi.async > 1) {
+ if (uwsgi.async > 0) {
+#ifdef UWSGI_PY311
+ up.current_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
+#else
up.current_recursion_depth = uwsgi_malloc(sizeof(int)*uwsgi.async);
- up.current_frame = uwsgi_malloc(sizeof(struct _frame)*uwsgi.async);
+#endif
+ up.current_frame = uwsgi_malloc(sizeof(up.current_frame[0])*uwsgi.async);
}
// setup app loaders
@@ -1530,12 +1534,22 @@ void uwsgi_python_suspend(struct wsgi_request *wsgi_req) {
PyGILState_Release(pgst);
if (wsgi_req) {
+#ifdef UWSGI_PY311
+ up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining;
+ up.current_frame[wsgi_req->async_id] = tstate->cframe;
+#else
up.current_recursion_depth[wsgi_req->async_id] = tstate->recursion_depth;
up.current_frame[wsgi_req->async_id] = tstate->frame;
+#endif
}
else {
+#ifdef UWSGI_PY311
+ up.current_main_recursion_remaining = tstate->recursion_remaining;
+ up.current_main_frame = tstate->cframe;
+#else
up.current_main_recursion_depth = tstate->recursion_depth;
up.current_main_frame = tstate->frame;
+#endif
}
}
@@ -1763,12 +1777,22 @@ void uwsgi_python_resume(struct wsgi_request *wsgi_req) {
PyGILState_Release(pgst);
if (wsgi_req) {
+#ifdef UWSGI_PY311
+ tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id];
+ tstate->cframe = up.current_frame[wsgi_req->async_id];
+#else
tstate->recursion_depth = up.current_recursion_depth[wsgi_req->async_id];
tstate->frame = up.current_frame[wsgi_req->async_id];
+#endif
}
else {
+#ifdef UWSGI_PY311
+ tstate->recursion_remaining = up.current_main_recursion_remaining;
+ tstate->cframe = up.current_main_frame;
+#else
tstate->recursion_depth = up.current_main_recursion_depth;
tstate->frame = up.current_main_frame;
+#endif
}
}
diff --git a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h
index 357d731..6c6f7a4 100644
--- a/plugins/python/uwsgi_python.h
+++ b/plugins/python/uwsgi_python.h
@@ -18,6 +18,10 @@
#define UWSGI_PYTHON_OLD
#endif
+#if (PY_VERSION_HEX >= 0x030b0000)
+# define UWSGI_PY311
+#endif
+
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7
#define HAS_NOT_PyMemoryView_FromBuffer
#endif
@@ -165,11 +169,19 @@ struct uwsgi_python {
char *callable;
+#ifdef UWSGI_PY311
+ int *current_recursion_remaining;
+ _PyCFrame **current_frame;
+
+ int current_main_recursion_remaining;
+ _PyCFrame *current_main_frame;
+#else
int *current_recursion_depth;
struct _frame **current_frame;
int current_main_recursion_depth;
struct _frame *current_main_frame;
+#endif
void (*swap_ts)(struct wsgi_request *, struct uwsgi_app *);
void (*reset_ts)(struct wsgi_request *, struct uwsgi_app *);

82
uwsgi_python312-2.patch Normal file
View file

@ -0,0 +1,82 @@
diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c
index de92f34c..08d99a96 100644
--- a/plugins/python/python_plugin.c
+++ b/plugins/python/python_plugin.c
@@ -233,21 +233,6 @@ void uwsgi_python_pthread_child(void) {
PyMethodDef uwsgi_spit_method[] = { {"uwsgi_spit", py_uwsgi_spit, METH_VARARGS, ""} };
PyMethodDef uwsgi_write_method[] = { {"uwsgi_write", py_uwsgi_write, METH_VARARGS, ""} };
-PyDoc_STRVAR(uwsgi_py_doc, "uWSGI api module.");
-
-#ifdef PYTHREE
-static PyModuleDef uwsgi_module3 = {
- PyModuleDef_HEAD_INIT,
- "uwsgi",
- uwsgi_py_doc,
- -1,
- NULL,
-};
-PyObject *init_uwsgi3(void) {
- return PyModule_Create(&uwsgi_module3);
-}
-#endif
-
int uwsgi_python_init() {
char *pyversion = strchr(Py_GetVersion(), '\n');
@@ -313,9 +298,6 @@ pep405:
wchar_t *pname = uwsgi_calloc(sizeof(wchar_t) * (strlen(program_name)+1));
mbstowcs(pname, program_name, strlen(program_name)+1);
Py_SetProgramName(pname);
-#ifdef UWSGI_PY312
- PyImport_AppendInittab("uwsgi", init_uwsgi3);
-#endif
#else
Py_SetProgramName(program_name);
#endif
@@ -678,6 +660,21 @@ next:
+PyDoc_STRVAR(uwsgi_py_doc, "uWSGI api module.");
+
+#ifdef PYTHREE
+static PyModuleDef uwsgi_module3 = {
+ PyModuleDef_HEAD_INIT,
+ "uwsgi",
+ uwsgi_py_doc,
+ -1,
+ NULL,
+};
+PyObject *init_uwsgi3(void) {
+ return PyModule_Create(&uwsgi_module3);
+}
+#endif
+
void init_uwsgi_embedded_module() {
PyObject *new_uwsgi_module, *zero;
int i;
@@ -698,10 +695,21 @@ void init_uwsgi_embedded_module() {
#ifdef PYTHREE
-#ifndef UWSGI_PY312
+# ifndef UWSGI_PY312
PyImport_AppendInittab("uwsgi", init_uwsgi3);
-#endif
new_uwsgi_module = PyImport_AddModule("uwsgi");
+# else
+ // From python 3.12 onwards, PyImport_AppendInittab() can no
+ // longer be called after Py_Initialize(). Instead, dynamically
+ // add the module instead
+ PyObject *sys_modules;
+ PyImport_AddModule("uwsgi");
+ new_uwsgi_module = init_uwsgi3();
+ sys_modules = PyImport_GetModuleDict();
+ PyDict_SetItemString(sys_modules, "uwsgi", new_uwsgi_module);
+ Py_DECREF(new_uwsgi_module);
+
+# endif
#else
new_uwsgi_module = Py_InitModule3("uwsgi", NULL, uwsgi_py_doc);
#endif

152
uwsgi_python312.patch Normal file
View file

@ -0,0 +1,152 @@
diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c
--- a/plugins/python/python_plugin.c 2023-07-27 17:34:12.000000000 +0200
+++ b/plugins/python/python_plugin.c 2023-09-30 18:30:47.884490233 +0200
@@ -197,6 +197,7 @@
PyMethodDef uwsgi_spit_method[] = { {"uwsgi_spit", py_uwsgi_spit, METH_VARARGS, ""} };
PyMethodDef uwsgi_write_method[] = { {"uwsgi_write", py_uwsgi_write, METH_VARARGS, ""} };
+PyObject *init_uwsgi3(void);
int uwsgi_python_init() {
char *pyversion = strchr(Py_GetVersion(), '\n');
@@ -261,6 +262,9 @@
wchar_t *pname = uwsgi_calloc(sizeof(wchar_t) * (strlen(program_name)+1));
mbstowcs(pname, program_name, strlen(program_name)+1);
Py_SetProgramName(pname);
+#ifdef UWSGI_PY312
+ PyImport_AppendInittab("uwsgi", init_uwsgi3);
+#endif
#else
Py_SetProgramName(program_name);
#endif
@@ -658,7 +662,9 @@
#ifdef PYTHREE
+#ifndef UWSGI_PY312
PyImport_AppendInittab("uwsgi", init_uwsgi3);
+#endif
new_uwsgi_module = PyImport_AddModule("uwsgi");
#else
new_uwsgi_module = Py_InitModule3("uwsgi", NULL, uwsgi_py_doc);
@@ -1161,7 +1167,10 @@
// prepare for stack suspend/resume
if (uwsgi.async > 1) {
-#ifdef UWSGI_PY311
+#ifdef UWSGI_PY312
+ up.current_c_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
+ up.current_py_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
+#elif defined UWSGI_PY311
up.current_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
#else
up.current_recursion_depth = uwsgi_malloc(sizeof(int)*uwsgi.async);
@@ -1324,7 +1333,12 @@
// Acquire the gil and import lock before forking in order to avoid
// deadlocks in workers
UWSGI_GET_GIL
+#if defined UWSGI_PY312
+ PyInterpreterState *interp = PyInterpreterState_Get();
+ _PyImport_AcquireLock(interp);
+#else
_PyImport_AcquireLock();
+#endif
}
}
@@ -1336,7 +1350,12 @@
if (uwsgi.has_threads) {
if (step == 0) {
// Release locks within master process
+#if defined UWSGI_PY312
+ PyInterpreterState *interp = PyInterpreterState_Get();
+ _PyImport_ReleaseLock(interp);
+#else
_PyImport_ReleaseLock();
+#endif
UWSGI_RELEASE_GIL
}
else {
@@ -1592,7 +1611,11 @@
PyGILState_Release(pgst);
if (wsgi_req) {
-#ifdef UWSGI_PY311
+#ifdef UWSGI_PY312
+ up.current_c_recursion_remaining[wsgi_req->async_id] = tstate->c_recursion_remaining;
+ up.current_py_recursion_remaining[wsgi_req->async_id] = tstate->py_recursion_remaining;
+ up.current_frame[wsgi_req->async_id] = tstate->cframe;
+#elif defined UWSGI_PY311
up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining;
up.current_frame[wsgi_req->async_id] = tstate->cframe;
#else
@@ -1601,7 +1624,11 @@
#endif
}
else {
-#ifdef UWSGI_PY311
+#ifdef UWSGI_PY312
+ up.current_main_c_recursion_remaining = tstate->c_recursion_remaining;
+ up.current_main_py_recursion_remaining = tstate->py_recursion_remaining;
+ up.current_main_frame = tstate->cframe;
+#elif defined UWSGI_PY311
up.current_main_recursion_remaining = tstate->recursion_remaining;
up.current_main_frame = tstate->cframe;
#else
@@ -1835,7 +1862,11 @@
PyGILState_Release(pgst);
if (wsgi_req) {
-#ifdef UWSGI_PY311
+#ifdef UWSGI_PY312
+ tstate->c_recursion_remaining = up.current_c_recursion_remaining[wsgi_req->async_id];
+ tstate->py_recursion_remaining = up.current_py_recursion_remaining[wsgi_req->async_id];
+ tstate->cframe = up.current_frame[wsgi_req->async_id];
+#elif defined UWSGI_PY311
tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id];
tstate->cframe = up.current_frame[wsgi_req->async_id];
#else
@@ -1844,7 +1875,11 @@
#endif
}
else {
-#ifdef UWSGI_PY311
+#ifdef UWSGI_PY312
+ tstate->c_recursion_remaining = up.current_main_c_recursion_remaining;
+ tstate->py_recursion_remaining = up.current_main_py_recursion_remaining;
+ tstate->cframe = up.current_main_frame;
+#elif defined UWSGI_PY311
tstate->recursion_remaining = up.current_main_recursion_remaining;
tstate->cframe = up.current_main_frame;
#else
diff -uNr a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h
--- a/plugins/python/uwsgi_python.h 2023-07-27 17:34:12.000000000 +0200
+++ b/plugins/python/uwsgi_python.h 2023-09-30 18:30:24.766699317 +0200
@@ -21,6 +21,10 @@
# define UWSGI_PY311
#endif
+#if (PY_VERSION_HEX >= 0x030c0000)
+# define UWSGI_PY312
+#endif
+
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7
#define HAS_NOT_PyMemoryView_FromBuffer
#endif
@@ -168,7 +172,15 @@
char *callable;
-#ifdef UWSGI_PY311
+#ifdef UWSGI_PY312
+ int *current_c_recursion_remaining;
+ int *current_py_recursion_remaining;
+ _PyCFrame **current_frame;
+
+ int current_main_c_recursion_remaining;
+ int current_main_py_recursion_remaining;
+ _PyCFrame *current_main_frame;
+#elif defined UWSGI_PY311
int *current_recursion_remaining;
_PyCFrame **current_frame;

193
uwsgi_python313.patch Normal file
View file

@ -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;

View file

@ -0,0 +1,42 @@
diff -uNr a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py
--- a/plugins/rack/uwsgiplugin.py 2023-07-28 20:02:57.242903528 +0200
+++ b/plugins/rack/uwsgiplugin.py 2023-07-28 20:05:59.933863052 +0200
@@ -10,14 +10,14 @@
rbconfig = 'Config'
version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip()
-v = version.split('.')
+v = tuple(int(x) for x in version.split('.'))
GCC_LIST = ['rack_plugin', 'rack_api']
-if (v[0] == '1' and v[1] == '9') or v[0] >= '2':
+if v >= (1, 9):
CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split()
CFLAGS.append('-DRUBY19')
- if version >= '2.7':
+ if v >= (2, 7):
CFLAGS.append('-DRUBY27')
CFLAGS.append('-Wno-unused-parameter')
rbconfig = 'RbConfig'
diff -uNr a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py
--- a/plugins/ruby19/uwsgiplugin.py 2023-07-28 20:02:57.242903528 +0200
+++ b/plugins/ruby19/uwsgiplugin.py 2023-07-28 20:05:11.560403332 +0200
@@ -10,14 +10,14 @@
rbconfig = 'Config'
version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip()
-v = version.split('.')
+v = tuple(int(x) for x in version.split('.'))
GCC_LIST = ['../rack/rack_plugin', '../rack/rack_api']
-if (v[0] == '1' and v[1] == '9') or v[0] >= '2':
+if v >= (1, 9):
CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split()
CFLAGS.append('-DRUBY19')
- if version >= '2.7':
+ if v >= (2, 7):
CFLAGS.append('-DRUBY27')
CFLAGS.append('-Wno-unused-parameter')
rbconfig = 'RbConfig'

View file

@ -0,0 +1,16 @@
diff --git a/uwsgiconfig.py b/uwsgiconfig.py
index 59393e1..e43f092 100644
--- a/uwsgiconfig.py
+++ b/uwsgiconfig.py
@@ -1422,10 +1422,7 @@ def build_plugin(path, uc, cflags, ldflags, libs, name = None):
except:
pass
- if uc:
- plugin_dest = uc.get('plugin_build_dir', uc.get('plugin_dir')) + '/' + name + '_plugin'
- else:
- plugin_dest = name + '_plugin'
+ plugin_dest = name + '_plugin'
shared_flag = '-shared'

View file

@ -0,0 +1,12 @@
diff -Naurp a/plugins/v8/uwsgiplugin.py b/plugins/v8/uwsgiplugin.py
--- a/plugins/v8/uwsgiplugin.py 2016-05-12 12:37:49.000000000 -0500
+++ b/plugins/v8/uwsgiplugin.py 2016-08-01 22:56:50.969785338 -0500
@@ -1,7 +1,7 @@
import os
NAME='v8'
-CFLAGS = ['-Wno-deprecated-declarations']
+CFLAGS = ['-Wno-deprecated-declarations', '-I/usr/include/v8-3.14']
LDFLAGS = []
LIBS = ['-lstdc++', '-lv8']
engine = os.environ.get('UWSGICONFIG_V8_ENGINE', '')