Date: Wednesday, November 6, 2019 @ 15:07:53
  Author: felixonmars
Revision: 524392

archrelease: copy trunk to community-staging-x86_64

Added:
  mod_wsgi/repos/community-staging-x86_64/
  mod_wsgi/repos/community-staging-x86_64/PKGBUILD
    (from rev 524391, mod_wsgi/trunk/PKGBUILD)
  mod_wsgi/repos/community-staging-x86_64/mod_wsgi.install
    (from rev 524391, mod_wsgi/trunk/mod_wsgi.install)
  mod_wsgi/repos/community-staging-x86_64/python-3.8.patch
    (from rev 524391, mod_wsgi/trunk/python-3.8.patch)

------------------+
 PKGBUILD         |   62 +++++++++++++++++++++++++++++++++
 mod_wsgi.install |   14 +++++++
 python-3.8.patch |   97 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 173 insertions(+)

Copied: mod_wsgi/repos/community-staging-x86_64/PKGBUILD (from rev 524391, 
mod_wsgi/trunk/PKGBUILD)
===================================================================
--- community-staging-x86_64/PKGBUILD                           (rev 0)
+++ community-staging-x86_64/PKGBUILD   2019-11-06 15:07:53 UTC (rev 524392)
@@ -0,0 +1,62 @@
+# Maintainer: Alexander F Rødseth <xypr...@archlinux.org>
+# Contributor: Andrea Scarpino <and...@archlinux.org>
+# Contributor: Ryan Coyner <rcoy...@gmail.com>
+
+pkgbase=mod_wsgi
+pkgname=($pkgbase 'mod_wsgi2')
+pkgver=4.5.24
+pkgrel=3
+pkgdesc='Python WSGI adapter module for Apache'
+arch=('x86_64')
+url='http://www.modwsgi.org/'
+license=('APACHE')
+makedepends=('apache' 'git' 'python' 'python2')
+install='mod_wsgi.install'
+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
+  cd py2
+  ./configure \
+    --prefix=/usr \
+    --with-apxs=/usr/bin/apxs \
+    --with-python=/usr/bin/python2
+
+  make
+
+  # Configure and build mod_wsgi for py3
+  cd "$srcdir/$pkgbase"
+  ./configure \
+    --prefix=/usr \
+    --with-apxs=/usr/bin/apxs \
+    --with-python=/usr/bin/python
+
+  make LDLIBS="$(pkg-config python3 --libs) -lpthread -ldl -lutil -lm"
+}
+
+package_mod_wsgi() {
+  pkgdesc='Python WSGI adapter module for Apache'
+  depends=('apache' 'python')
+  conflicts=('mod_wsgi2')
+
+  make -C "$pkgbase" DESTDIR="$pkgdir" install
+}
+
+package_mod_wsgi2() {
+  pkgdesc='Python2 WSGI adapter module for Apache'
+  depends=('apache' 'python2')
+  conflicts=('mod_wsgi')
+
+  make -C py2 DESTDIR="$pkgdir" install
+}
+
+# getver: github.com/GrahamDumpleton/mod_wsgi
+# vim: ts=2 sw=2 et:

Copied: mod_wsgi/repos/community-staging-x86_64/mod_wsgi.install (from rev 
524391, mod_wsgi/trunk/mod_wsgi.install)
===================================================================
--- community-staging-x86_64/mod_wsgi.install                           (rev 0)
+++ community-staging-x86_64/mod_wsgi.install   2019-11-06 15:07:53 UTC (rev 
524392)
@@ -0,0 +1,14 @@
+post_install() {
+  cat<<meow
+==>
+==>
+==>  To install mod_wsgi, add the following line in
+==>  /etc/httpd/conf/httpd.conf file :
+==>
+==>  LoadModule wsgi_module modules/mod_wsgi.so
+==>
+==>  and restart/reload Apache.
+==>
+==>
+meow
+}

Copied: mod_wsgi/repos/community-staging-x86_64/python-3.8.patch (from rev 
524391, mod_wsgi/trunk/python-3.8.patch)
===================================================================
--- community-staging-x86_64/python-3.8.patch                           (rev 0)
+++ community-staging-x86_64/python-3.8.patch   2019-11-06 15:07:53 UTC (rev 
524392)
@@ -0,0 +1,97 @@
+From 0f34844009075391c55419a3afb90e469facf35e Mon Sep 17 00:00:00 2001
+From: Graham Dumpleton <graham.dumple...@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.dumple...@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);

Reply via email to