public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: www-apache/mod_wsgi/, www-apache/mod_wsgi/files/
@ 2021-12-31 15:49 Dirkjan Ochtman
  0 siblings, 0 replies; only message in thread
From: Dirkjan Ochtman @ 2021-12-31 15:49 UTC (permalink / raw
  To: gentoo-commits

commit:     e823909c5782c667e59d85e75d52e1802f1f8a90
Author:     t0b3 <thomas.bettler <AT> gmail <DOT> com>
AuthorDate: Thu Dec 16 18:24:44 2021 +0000
Commit:     Dirkjan Ochtman <djc <AT> gentoo <DOT> org>
CommitDate: Fri Dec 31 15:49:21 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e823909c

www-apache/mod_wsgi: add python 3.10

Closes: https://bugs.gentoo.org/829359
Signed-off-by: Thomas Bettler <thomas.bettler <AT> gmail.com>
Signed-off-by: Dirkjan Ochtman <djc <AT> gentoo.org>

 .../mod_wsgi/files/mod_wsgi-4.7.1-py310.patch      | 126 +++++++++++++++++++++
 www-apache/mod_wsgi/mod_wsgi-4.7.1-r1.ebuild       |   6 +-
 2 files changed, 131 insertions(+), 1 deletion(-)

diff --git a/www-apache/mod_wsgi/files/mod_wsgi-4.7.1-py310.patch b/www-apache/mod_wsgi/files/mod_wsgi-4.7.1-py310.patch
new file mode 100644
index 000000000000..274046d99ca0
--- /dev/null
+++ b/www-apache/mod_wsgi/files/mod_wsgi-4.7.1-py310.patch
@@ -0,0 +1,126 @@
+From b439f1c411a9479ccc03c16465cdff50fede79d3 Mon Sep 17 00:00:00 2001
+From: Petr Viktorin <encukou@gmail.com>
+Date: Thu, 10 Jun 2021 15:45:03 +0200
+Subject: [PATCH] Use Py_CompileString rather than
+ PyParser_SimpleParseFile/PyNode_Compile
+From: https://github.com/GrahamDumpleton/mod_wsgi/commit/b439f1c411a9479ccc03c16465cdff50fede79d3
+
+---
+ src/server/mod_wsgi.c    | 68 +++++++++++++++++++++++++++++++---------
+ src/server/wsgi_python.h |  1 -
+ 2 files changed, 53 insertions(+), 16 deletions(-)
+
+diff --git a/src/server/mod_wsgi.c b/src/server/mod_wsgi.c
+index b657a748..4f1d8765 100644
+--- a/src/server/mod_wsgi.c
++++ b/src/server/mod_wsgi.c
+@@ -3645,7 +3645,10 @@ static PyObject *wsgi_load_source(apr_pool_t *pool, request_rec *r,
+     FILE *fp = NULL;
+     PyObject *m = NULL;
+     PyObject *co = NULL;
+-    struct _node *n = NULL;
++    char *source;
++    size_t pos = 0;
++    size_t allocated = 1024;
++    size_t nread;
+ 
+ #if defined(WIN32) && defined(APR_HAS_UNICODE_FS)
+     apr_wchar_t wfilename[APR_PATH_MAX];
+@@ -3730,36 +3733,71 @@ static PyObject *wsgi_load_source(apr_pool_t *pool, request_rec *r,
+         return NULL;
+     }
+ 
+-    n = PyParser_SimpleParseFile(fp, filename, Py_file_input);
+-
++    source = malloc(allocated);
++    if (source != NULL) {
++        do {
++            nread = fread(source + pos, 1, allocated - pos, fp);
++            pos += nread;
++            if (nread == 0) {
++                if (ferror(fp)) {
++                    free(source);
++                    source = NULL;
++                }
++                break;
++            }
++            if (pos == allocated) {
++                allocated *= 2;
++                char *reallocated_source = realloc(source, allocated);
++                if (reallocated_source == NULL) {
++                    free(source);
++                    source = NULL;
++                    break;
++                }
++                source = reallocated_source;
++            }
++        } while (!feof(fp));
++    }
+     fclose(fp);
+-
+-    if (!n) {
++    if (source == NULL) {
+         Py_BEGIN_ALLOW_THREADS
+         if (r) {
+-            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
++            ap_log_rerror(APLOG_MARK, APLOG_ERR, errno, r,
+                           "mod_wsgi (pid=%d, process='%s', application='%s'): "
+-                          "Failed to parse Python script file '%s'.", getpid(),
++                          "Could not read source file '%s'.", getpid(),
+                           process_group, application_group, filename);
+         }
+         else {
+-            ap_log_error(APLOG_MARK, APLOG_ERR, 0, wsgi_server,
++            ap_log_error(APLOG_MARK, APLOG_ERR, errno, wsgi_server,
+                          "mod_wsgi (pid=%d, process='%s', application='%s'): "
+-                         "Failed to parse Python script file '%s'.", getpid(),
++                         "Could not read source file '%s'.", getpid(),
+                          process_group, application_group, filename);
+         }
+         Py_END_ALLOW_THREADS
++        return NULL;
++    }
+ 
+-        wsgi_log_python_error(r, NULL, filename, 0);
++    co = Py_CompileString(filename, source, 0);
++    free(source);
+ 
++    if (!co) {
++        Py_BEGIN_ALLOW_THREADS
++        if (r) {
++            ap_log_rerror(APLOG_MARK, APLOG_ERR, errno, r,
++                          "mod_wsgi (pid=%d, process='%s', application='%s'): "
++                          "Could not compile source file '%s'.", getpid(),
++                          process_group, application_group, filename);
++        }
++        else {
++            ap_log_error(APLOG_MARK, APLOG_ERR, errno, wsgi_server,
++                         "mod_wsgi (pid=%d, process='%s', application='%s'): "
++                         "Could not compile source file '%s'.", getpid(),
++                         process_group, application_group, filename);
++        }
++        Py_END_ALLOW_THREADS
+         return NULL;
+     }
+ 
+-    co = (PyObject *)PyNode_Compile(n, filename);
+-    PyNode_Free(n);
+-
+-    if (co)
+-        m = PyImport_ExecCodeModuleEx((char *)name, co, (char *)filename);
++    m = PyImport_ExecCodeModuleEx((char *)name, co, (char *)filename);
+ 
+     Py_XDECREF(co);
+ 
+diff --git a/src/server/wsgi_python.h b/src/server/wsgi_python.h
+index fa06e2cb..3b34b731 100644
+--- a/src/server/wsgi_python.h
++++ b/src/server/wsgi_python.h
+@@ -43,7 +43,6 @@
+ 
+ #include "structmember.h"
+ #include "compile.h"
+-#include "node.h"
+ #include "osdefs.h"
+ #include "frameobject.h"
+ 

diff --git a/www-apache/mod_wsgi/mod_wsgi-4.7.1-r1.ebuild b/www-apache/mod_wsgi/mod_wsgi-4.7.1-r1.ebuild
index e5ae886e528e..759f60c5f6d0 100644
--- a/www-apache/mod_wsgi/mod_wsgi-4.7.1-r1.ebuild
+++ b/www-apache/mod_wsgi/mod_wsgi-4.7.1-r1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=6
 
-PYTHON_COMPAT=( python3_{6,7,8,9} )
+PYTHON_COMPAT=( python3_{8..10} )
 PYTHON_REQ_USE="threads(+)"
 
 inherit apache-module python-single-r1
@@ -27,6 +27,10 @@ APACHE2_MOD_FILE="${S}/src/server/.libs/${PN}.so"
 
 DOCFILES="README.rst"
 
+PATCHES=(
+	"${FILESDIR}/${P}-py310.patch"
+)
+
 need_apache2
 
 pkg_setup() {


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-12-31 15:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-31 15:49 [gentoo-commits] repo/gentoo:master commit in: www-apache/mod_wsgi/, www-apache/mod_wsgi/files/ Dirkjan Ochtman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox