Tue Dec 6 08:54:23 2022 UTC ()
unit-python: add Python 3.11 support using upstream patch

Bump PKGREVISION.


(wiz)
diff -r1.10 -r1.11 pkgsrc/www/unit/distinfo
diff -r1.5 -r1.6 pkgsrc/www/unit-python/Makefile
diff -r0 -r1.1 pkgsrc/www/unit/patches/patch-src_python_nxt__python.c

cvs diff -r1.10 -r1.11 pkgsrc/www/unit/distinfo (expand / switch to unified diff)

--- pkgsrc/www/unit/distinfo 2022/09/14 05:31:41 1.10
+++ pkgsrc/www/unit/distinfo 2022/12/06 08:54:23 1.11
@@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
1$NetBSD: distinfo,v 1.10 2022/09/14 05:31:41 osa Exp $ 1$NetBSD: distinfo,v 1.11 2022/12/06 08:54:23 wiz Exp $
2 2
3BLAKE2s (unit-1.28.0.tar.gz) = fe95e41bc6876ae30070ef0a1cba33181df6813bc69d3a246c71c25ff6193d2a 3BLAKE2s (unit-1.28.0.tar.gz) = fe95e41bc6876ae30070ef0a1cba33181df6813bc69d3a246c71c25ff6193d2a
4SHA512 (unit-1.28.0.tar.gz) = 7d2033be3d8e9d15db21b5431348be73a10fbc19bcab7e83d3c5a770e11e23a53967afe051ec53e236896ac9e021d9146501bc32b87254f9b25778b4bc5d1cbe 4SHA512 (unit-1.28.0.tar.gz) = 7d2033be3d8e9d15db21b5431348be73a10fbc19bcab7e83d3c5a770e11e23a53967afe051ec53e236896ac9e021d9146501bc32b87254f9b25778b4bc5d1cbe
5Size (unit-1.28.0.tar.gz) = 878878 bytes 5Size (unit-1.28.0.tar.gz) = 878878 bytes
6SHA1 (patch-auto_events) = 0347dfefbedaacd206c8c2bfd8ea38b18995dd9f 6SHA1 (patch-auto_events) = 0347dfefbedaacd206c8c2bfd8ea38b18995dd9f
7SHA1 (patch-auto_os_conf) = 6d1cd7aef662a60d4288014eb6fadbe8c1268e55 7SHA1 (patch-auto_os_conf) = 6d1cd7aef662a60d4288014eb6fadbe8c1268e55
8SHA1 (patch-auto_shmem) = cb37c368c19205c2cc1750f4a847af23be8bfa25 8SHA1 (patch-auto_shmem) = cb37c368c19205c2cc1750f4a847af23be8bfa25
9SHA1 (patch-src_nxt__kqueue__engine.c) = c341425f4b21d4cff6e003958f88a04b53dc4ee1 9SHA1 (patch-src_nxt__kqueue__engine.c) = c341425f4b21d4cff6e003958f88a04b53dc4ee1
10SHA1 (patch-src_nxt__php__sapi.c) = 2d5e557ff2066bec78f5bfbca6a64688f60da01b 10SHA1 (patch-src_nxt__php__sapi.c) = 2d5e557ff2066bec78f5bfbca6a64688f60da01b
11SHA1 (patch-src_nxt__unix.h) = c0db5bc4d9c45a3ead48627567284d8b3041b0a0 11SHA1 (patch-src_nxt__unix.h) = c0db5bc4d9c45a3ead48627567284d8b3041b0a0
12SHA1 (patch-src_nxt__websocket__header.h) = 1b50405b187cc8a662372a1c20ab7737278135ae 12SHA1 (patch-src_nxt__websocket__header.h) = 1b50405b187cc8a662372a1c20ab7737278135ae
 13SHA1 (patch-src_python_nxt__python.c) = 18b638d2e2f155e7f2839309552d34772f0f5162

cvs diff -r1.5 -r1.6 pkgsrc/www/unit-python/Makefile (expand / switch to unified diff)

--- pkgsrc/www/unit-python/Makefile 2022/11/15 12:47:59 1.5
+++ pkgsrc/www/unit-python/Makefile 2022/12/06 08:54:23 1.6
@@ -1,23 +1,21 @@ @@ -1,23 +1,21 @@
1# $NetBSD: Makefile,v 1.5 2022/11/15 12:47:59 wiz Exp $ 1# $NetBSD: Makefile,v 1.6 2022/12/06 08:54:23 wiz Exp $
2 2
3PKGNAME= unit-${LANG}${PYVERSSUFFIX}-${UNIT_VERSION} 3PKGNAME= unit-${LANG}${PYVERSSUFFIX}-${UNIT_VERSION}
 4PKGREVISION= 1
4COMMENT= Python module for NGINX Unit 5COMMENT= Python module for NGINX Unit
5 6
6LANG= python 7LANG= python
7MODNAME= ${LANG} 8MODNAME= ${LANG}
8 9
9MAINTAINER= osa@NetBSD.org 10MAINTAINER= osa@NetBSD.org
10 11
11# https://github.com/nginx/unit/issues/710 
12PYTHON_VERSIONS_INCOMPATIBLE= 311 
13 
14post-configure: 12post-configure:
15 ${RUN} cd ${WRKSRC} && ${SETENV} ${_CONFIGURE_SCRIPT_ENV} \ 13 ${RUN} cd ${WRKSRC} && ${SETENV} ${_CONFIGURE_SCRIPT_ENV} \
16 ${CONFIG_SHELL} ${CONFIG_SHELL_FLAGS} ${CONFIGURE_SCRIPT} \ 14 ${CONFIG_SHELL} ${CONFIG_SHELL_FLAGS} ${CONFIGURE_SCRIPT} \
17 ${LANG} --module=${MODNAME} \ 15 ${LANG} --module=${MODNAME} \
18 --config=${LANG}${PYVERSSUFFIX}-config 16 --config=${LANG}${PYVERSSUFFIX}-config
19 17
20.include "../../lang/${LANG}/application.mk" 18.include "../../lang/${LANG}/application.mk"
21.include "../../www/unit/ext.mk" 19.include "../../www/unit/ext.mk"
22.include "../../www/unit/Makefile.common" 20.include "../../www/unit/Makefile.common"
23.include "../../mk/bsd.pkg.mk" 21.include "../../mk/bsd.pkg.mk"

File Added: pkgsrc/www/unit/patches/Attic/patch-src_python_nxt__python.c
$NetBSD: patch-src_python_nxt__python.c,v 1.1 2022/12/06 08:54:23 wiz Exp $

Python 3.11 support.
https://github.com/nginx/unit/commit/491d0f700f5690eba0f1fcf2124f3a37ef73eb1a

--- src/python/nxt_python.c.orig	2022-09-12 23:26:26.000000000 +0000
+++ src/python/nxt_python.c
@@ -22,6 +22,10 @@ typedef struct {
 } nxt_py_thread_info_t;
 
 
+#if PY_MAJOR_VERSION == 3
+static nxt_int_t nxt_python3_init_config(nxt_int_t pep405);
+#endif
+
 static nxt_int_t nxt_python_start(nxt_task_t *task,
     nxt_process_data_t *data);
 static nxt_int_t nxt_python_set_target(nxt_task_t *task,
@@ -64,6 +68,63 @@ static nxt_py_thread_info_t  *nxt_py_thr
 static nxt_python_proto_t    nxt_py_proto;
 
 
+#if PY_VERSION_HEX >= NXT_PYTHON_VER(3, 8)
+
+static nxt_int_t
+nxt_python3_init_config(nxt_int_t pep405)
+{
+    PyStatus  status;
+    PyConfig  config;
+
+    PyConfig_InitIsolatedConfig(&config);
+
+    if (pep405) {
+        status = PyConfig_SetString(&config, &config.program_name,
+                                    nxt_py_home);
+        if (PyStatus_Exception(status)) {
+            goto pyinit_exception;
+        }
+
+    } else {
+        status =PyConfig_SetString(&config, &config.home, nxt_py_home);
+        if (PyStatus_Exception(status)) {
+            goto pyinit_exception;
+        }
+    }
+
+    status = Py_InitializeFromConfig(&config);
+    if (PyStatus_Exception(status)) {
+        goto pyinit_exception;
+    }
+    PyConfig_Clear(&config);
+
+    return NXT_OK;
+
+pyinit_exception:
+
+    PyConfig_Clear(&config);
+
+    return NXT_ERROR;
+}
+
+#elif PY_MAJOR_VERSION == 3
+
+static nxt_int_t
+nxt_python3_init_config(nxt_int_t pep405)
+{
+    if (pep405) {
+        Py_SetProgramName(nxt_py_home);
+
+    } else {
+        Py_SetPythonHome(nxt_py_home);
+    }
+
+    return NXT_OK;
+}
+
+#endif
+
+
 static nxt_int_t
 nxt_python_start(nxt_task_t *task, nxt_process_data_t *data)
 {
@@ -127,11 +188,15 @@ nxt_python_start(nxt_task_t *task, nxt_p
         if (pep405) {
             mbstowcs(nxt_py_home, c->home, len);
             mbstowcs(nxt_py_home + len, bin_python, sizeof(bin_python));
-            Py_SetProgramName(nxt_py_home);
 
         } else {
             mbstowcs(nxt_py_home, c->home, len + 1);
-            Py_SetPythonHome(nxt_py_home);
+        }
+
+        ret = nxt_python3_init_config(pep405);
+        if (nxt_slow_path(ret == NXT_ERROR)) {
+            nxt_alert(task, "Failed to initialise config");
+            return NXT_ERROR;
         }
 
 #else