[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