summaryrefslogtreecommitdiffstats
path: root/debian/patches/use-PyConfig.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/use-PyConfig.diff')
-rw-r--r--debian/patches/use-PyConfig.diff80
1 files changed, 80 insertions, 0 deletions
diff --git a/debian/patches/use-PyConfig.diff b/debian/patches/use-PyConfig.diff
new file mode 100644
index 0000000000..2cf1270d21
--- /dev/null
+++ b/debian/patches/use-PyConfig.diff
@@ -0,0 +1,80 @@
+From da0e9240bf6505ac3a67ff985705950566c66144 Mon Sep 17 00:00:00 2001
+From: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
+Date: Thu, 21 Dec 2023 12:01:50 +0200
+Subject: tdf#158447 Use PyConfig for setting Python home directory with Python
+ >= 3.8
+
+Change-Id: Ic5b7c60613b22f5215cb1a2a13fecf3e0946ca49
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161089
+Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
+Tested-by: Jenkins
+Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
+Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
+---
+ pyuno/source/loader/pyuno_loader.cxx | 22 +++++++++++++++++++---
+ 1 file changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/pyuno/source/loader/pyuno_loader.cxx b/pyuno/source/loader/pyuno_loader.cxx
+index 008d58634947..1e00773761e7 100644
+--- a/pyuno/source/loader/pyuno_loader.cxx
++++ b/pyuno/source/loader/pyuno_loader.cxx
+@@ -114,7 +114,11 @@ static PyRef getObjectFromLoaderModule( const char * func )
+ return object;
+ }
+
++#if PY_VERSION_HEX >= 0x03080000
++static void setPythonHome ( const OUString & pythonHome, PyConfig * config )
++#else
+ static void setPythonHome ( const OUString & pythonHome )
++#endif
+ {
+ OUString systemPythonHome;
+ osl_getSystemPathFromFileURL( pythonHome.pData, &(systemPythonHome.pData) );
+@@ -138,9 +142,11 @@ static void setPythonHome ( const OUString & pythonHome )
+ PyErr_SetString(PyExc_SystemError, "python home path is too long");
+ return;
+ }
+-SAL_WNODEPRECATED_DECLARATIONS_PUSH
+- Py_SetPythonHome(wide); // deprecated since python 3.11
+-SAL_WNODEPRECATED_DECLARATIONS_POP
++#if PY_VERSION_HEX >= 0x03080000
++ config->home = wide;
++#else
++ Py_SetPythonHome(wide);
++#endif
+ }
+
+ static void prependPythonPath( std::u16string_view pythonPathBootstrap )
+@@ -192,11 +198,17 @@ void pythonInit() {
+ if ( Py_IsInitialized()) // may be inited by getComponentContext() already
+ return;
+
++#if PY_VERSION_HEX >= 0x03080000
++ PyConfig config;
++#endif
+ OUString pythonPath;
+ OUString pythonHome;
+ OUString path( "$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE("pythonloader.uno" ));
+ rtl::Bootstrap::expandMacros(path); //TODO: detect failure
+ rtl::Bootstrap bootstrap(path);
++#if PY_VERSION_HEX >= 0x03080000
++ PyConfig_InitPythonConfig( &config );
++#endif
+
+ // look for pythonhome
+ bootstrap.getFrom( "PYUNO_LOADER_PYTHONHOME", pythonHome );
+@@ -205,7 +217,11 @@ void pythonInit() {
+ // pythonhome+pythonpath must be set before Py_Initialize(), otherwise there appear warning on the console
+ // sadly, there is no api for setting the pythonpath, we have to use the environment variable
+ if( !pythonHome.isEmpty() )
++#if PY_VERSION_HEX >= 0x03080000
++ setPythonHome( pythonHome, &config );
++#else
+ setPythonHome( pythonHome );
++#endif
+
+ if( !pythonPath.isEmpty() )
+ prependPythonPath( pythonPath );
+--
+cgit v1.2.3
+