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.
This commit is contained in:
parent
9c7aeda849
commit
36451ce9eb
7 changed files with 167 additions and 46 deletions
124
uwsgi_python312.patch
Normal file
124
uwsgi_python312.patch
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
diff -uNr a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c
|
||||
--- a/plugins/python/python_plugin.c 2022-10-24 12:21:58.000000000 +0200
|
||||
+++ b/plugins/python/python_plugin.c 2023-07-13 19:35:32.020467751 +0200
|
||||
@@ -1161,7 +1161,10 @@
|
||||
|
||||
// prepare for stack suspend/resume
|
||||
if (uwsgi.async > 1) {
|
||||
-#ifdef UWSGI_PY311
|
||||
+#ifdef UWSGI_PY312
|
||||
+ up.current_c_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
|
||||
+ up.current_py_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
|
||||
+#elif defined UWSGI_PY311
|
||||
up.current_recursion_remaining = uwsgi_malloc(sizeof(int)*uwsgi.async);
|
||||
#else
|
||||
up.current_recursion_depth = uwsgi_malloc(sizeof(int)*uwsgi.async);
|
||||
@@ -1324,7 +1327,12 @@
|
||||
// Acquire the gil and import lock before forking in order to avoid
|
||||
// deadlocks in workers
|
||||
UWSGI_GET_GIL
|
||||
+#if defined UWSGI_PY312
|
||||
+ PyInterpreterState *interp = PyInterpreterState_Get();
|
||||
+ _PyImport_AcquireLock(interp);
|
||||
+#else
|
||||
_PyImport_AcquireLock();
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1336,7 +1344,12 @@
|
||||
if (uwsgi.has_threads) {
|
||||
if (step == 0) {
|
||||
// Release locks within master process
|
||||
+#if defined UWSGI_PY312
|
||||
+ PyInterpreterState *interp = PyInterpreterState_Get();
|
||||
+ _PyImport_ReleaseLock(interp);
|
||||
+#else
|
||||
_PyImport_ReleaseLock();
|
||||
+#endif
|
||||
UWSGI_RELEASE_GIL
|
||||
}
|
||||
else {
|
||||
@@ -1592,7 +1605,11 @@
|
||||
PyGILState_Release(pgst);
|
||||
|
||||
if (wsgi_req) {
|
||||
-#ifdef UWSGI_PY311
|
||||
+#ifdef UWSGI_PY312
|
||||
+ up.current_c_recursion_remaining[wsgi_req->async_id] = tstate->c_recursion_remaining;
|
||||
+ up.current_py_recursion_remaining[wsgi_req->async_id] = tstate->py_recursion_remaining;
|
||||
+ up.current_frame[wsgi_req->async_id] = tstate->cframe;
|
||||
+#elif defined UWSGI_PY311
|
||||
up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining;
|
||||
up.current_frame[wsgi_req->async_id] = tstate->cframe;
|
||||
#else
|
||||
@@ -1601,7 +1618,11 @@
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
-#ifdef UWSGI_PY311
|
||||
+#ifdef UWSGI_PY312
|
||||
+ up.current_main_c_recursion_remaining = tstate->c_recursion_remaining;
|
||||
+ up.current_main_py_recursion_remaining = tstate->py_recursion_remaining;
|
||||
+ up.current_main_frame = tstate->cframe;
|
||||
+#elif defined UWSGI_PY311
|
||||
up.current_main_recursion_remaining = tstate->recursion_remaining;
|
||||
up.current_main_frame = tstate->cframe;
|
||||
#else
|
||||
@@ -1835,7 +1856,11 @@
|
||||
PyGILState_Release(pgst);
|
||||
|
||||
if (wsgi_req) {
|
||||
-#ifdef UWSGI_PY311
|
||||
+#ifdef UWSGI_PY312
|
||||
+ tstate->c_recursion_remaining = up.current_c_recursion_remaining[wsgi_req->async_id];
|
||||
+ tstate->py_recursion_remaining = up.current_py_recursion_remaining[wsgi_req->async_id];
|
||||
+ tstate->cframe = up.current_frame[wsgi_req->async_id];
|
||||
+#elif defined UWSGI_PY311
|
||||
tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id];
|
||||
tstate->cframe = up.current_frame[wsgi_req->async_id];
|
||||
#else
|
||||
@@ -1844,7 +1869,11 @@
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
-#ifdef UWSGI_PY311
|
||||
+#ifdef UWSGI_PY312
|
||||
+ tstate->c_recursion_remaining = up.current_main_c_recursion_remaining;
|
||||
+ tstate->py_recursion_remaining = up.current_main_py_recursion_remaining;
|
||||
+ tstate->cframe = up.current_main_frame;
|
||||
+#elif defined UWSGI_PY311
|
||||
tstate->recursion_remaining = up.current_main_recursion_remaining;
|
||||
tstate->cframe = up.current_main_frame;
|
||||
#else
|
||||
diff -uNr a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h
|
||||
--- a/plugins/python/uwsgi_python.h 2022-10-24 12:21:58.000000000 +0200
|
||||
+++ b/plugins/python/uwsgi_python.h 2023-07-13 19:31:50.798050705 +0200
|
||||
@@ -21,6 +21,10 @@
|
||||
# define UWSGI_PY311
|
||||
#endif
|
||||
|
||||
+#if (PY_VERSION_HEX >= 0x030c0000)
|
||||
+# define UWSGI_PY312
|
||||
+#endif
|
||||
+
|
||||
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7
|
||||
#define HAS_NOT_PyMemoryView_FromBuffer
|
||||
#endif
|
||||
@@ -168,7 +172,15 @@
|
||||
|
||||
char *callable;
|
||||
|
||||
-#ifdef UWSGI_PY311
|
||||
+#ifdef UWSGI_PY312
|
||||
+ int *current_c_recursion_remaining;
|
||||
+ int *current_py_recursion_remaining;
|
||||
+ _PyCFrame **current_frame;
|
||||
+
|
||||
+ int current_main_c_recursion_remaining;
|
||||
+ int current_main_py_recursion_remaining;
|
||||
+ _PyCFrame *current_main_frame;
|
||||
+#elif defined UWSGI_PY311
|
||||
int *current_recursion_remaining;
|
||||
_PyCFrame **current_frame;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue