[arch-commits] Commit in mod_wsgi/trunk (PKGBUILD python-3.8.patch)
Evangelos Foutras
foutrelis at archlinux.org
Wed Nov 6 15:06:06 UTC 2019
Date: Wednesday, November 6, 2019 @ 15:06:06
Author: foutrelis
Revision: 524390
Fix build with Python 3.8
Added:
mod_wsgi/trunk/python-3.8.patch
Modified:
mod_wsgi/trunk/PKGBUILD
------------------+
PKGBUILD | 12 ++++--
python-3.8.patch | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 106 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2019-11-06 14:46:35 UTC (rev 524389)
+++ PKGBUILD 2019-11-06 15:06:06 UTC (rev 524390)
@@ -12,12 +12,18 @@
license=('APACHE')
makedepends=('apache' 'git' 'python' 'python2')
install='mod_wsgi.install'
-source=("git+https://github.com/GrahamDumpleton/mod_wsgi#tag=$pkgver")
-md5sums=('SKIP')
+source=("git+https://github.com/GrahamDumpleton/mod_wsgi#tag=$pkgver"
+ python-3.8.patch)
+md5sums=('SKIP'
+ '73ac9f44d14c04e4bd14eeb506313ec4')
+prepare() {
+ cp -r "$pkgbase" py2
+ patch -Np1 -d "$pkgbase" <python-3.8.patch
+}
+
build() {
# Configure and build mod_wsgi for py2
- cp -r "$pkgbase" py2
cd py2
./configure \
--prefix=/usr \
Added: python-3.8.patch
===================================================================
--- python-3.8.patch (rev 0)
+++ python-3.8.patch 2019-11-06 15:06:06 UTC (rev 524390)
@@ -0,0 +1,97 @@
+From 0f34844009075391c55419a3afb90e469facf35e Mon Sep 17 00:00:00 2001
+From: Graham Dumpleton <Graham.Dumpleton at gmail.com>
+Date: Tue, 14 May 2019 16:14:07 +1000
+Subject: [PATCH] Changed functions to pre/post actions when forking.
+
+---
+ src/server/mod_wsgi.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/src/server/mod_wsgi.c b/src/server/mod_wsgi.c
+index 2e4bb24d..bf55945a 100644
+--- a/src/server/mod_wsgi.c
++++ b/src/server/mod_wsgi.c
+@@ -4345,8 +4345,13 @@ static void wsgi_python_child_init(apr_pool_t *p)
+ * do it if Python was initialised in parent process.
+ */
+
+- if (wsgi_python_initialized && !wsgi_python_after_fork)
++ if (wsgi_python_initialized && !wsgi_python_after_fork) {
++#if PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7)
++ PyOS_AfterFork_Child();
++#else
+ PyOS_AfterFork();
++#endif
++ }
+
+ /* Finalise any Python objects required by child process. */
+
+@@ -10422,6 +10427,12 @@ static int wsgi_start_process(apr_pool_t *p, WSGIDaemonProcess *daemon)
+ wsgi_exit_daemon_process(0);
+ }
+
++ if (wsgi_python_initialized) {
++#if PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7)
++ PyOS_AfterFork_Parent();
++#endif
++ }
++
+ apr_pool_note_subprocess(p, &daemon->process, APR_KILL_AFTER_TIMEOUT);
+ apr_proc_other_child_register(&daemon->process, wsgi_manage_process,
+ daemon, NULL, p);
+
+From b03b02df6318afe26052db5b0365732152cacea2 Mon Sep 17 00:00:00 2001
+From: Graham Dumpleton <Graham.Dumpleton at gmail.com>
+Date: Tue, 14 May 2019 16:14:42 +1000
+Subject: [PATCH] Use official APIs for accessing interpreter list.
+
+---
+ src/server/wsgi_interp.c | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/src/server/wsgi_interp.c b/src/server/wsgi_interp.c
+index 4a948509..3fbca04b 100644
+--- a/src/server/wsgi_interp.c
++++ b/src/server/wsgi_interp.c
+@@ -338,9 +338,10 @@ static PyObject *ShutdownInterpreter_call(
+
+ PyThreadState_Swap(NULL);
+
+- tstate = tstate->interp->tstate_head;
++ tstate = PyInterpreterState_ThreadHead(tstate->interp);
++
+ while (tstate) {
+- tstate_next = tstate->next;
++ tstate_next = PyThreadState_Next(tstate);
+ if (tstate != tstate_save) {
+ PyThreadState_Swap(tstate);
+ PyThreadState_Clear(tstate);
+@@ -436,9 +437,13 @@ InterpreterObject *newInterpreterObject(const char *name)
+ */
+
+ if (!name) {
++#if PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 7)
++ interp = PyInterpreterState_Main();
++#else
+ interp = PyInterpreterState_Head();
+- while (interp->next)
+- interp = interp->next;
++ while (PyInterpreterState_Next(interp))
++ interp = PyInterpreterState_Next(interp);
++#endif
+
+ name = "";
+ }
+@@ -1883,9 +1888,10 @@ static void Interpreter_dealloc(InterpreterObject *self)
+
+ PyThreadState_Swap(NULL);
+
+- tstate = tstate->interp->tstate_head;
++ tstate = PyInterpreterState_ThreadHead(tstate->interp);
++
+ while (tstate) {
+- tstate_next = tstate->next;
++ tstate_next = PyThreadState_Next(tstate);
+ if (tstate != tstate_save) {
+ PyThreadState_Swap(tstate);
+ PyThreadState_Clear(tstate);
More information about the arch-commits
mailing list