From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/kde:master commit in: media-gfx/krita/, media-gfx/krita/files/
Date: Mon, 25 Nov 2024 22:52:01 +0000 (UTC) [thread overview]
Message-ID: <1732575030.96a63e864379619689ed79680582c93429102fd5.asturm@gentoo> (raw)
commit: 96a63e864379619689ed79680582c93429102fd5
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 9 15:16:23 2024 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Nov 25 22:50:30 2024 +0000
URL: https://gitweb.gentoo.org/proj/kde.git/commit/?id=96a63e86
media-gfx/krita: enable py3.13
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=488680
See also: https://bugzilla.redhat.com/show_bug.cgi?id=2278646
Closes: https://bugs.gentoo.org/943149
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
media-gfx/krita/files/krita-5.2.6-py3.13.patch | 120 +++++++++++++++++++++++++
media-gfx/krita/krita-9999.ebuild | 4 +-
2 files changed, 123 insertions(+), 1 deletion(-)
diff --git a/media-gfx/krita/files/krita-5.2.6-py3.13.patch b/media-gfx/krita/files/krita-5.2.6-py3.13.patch
new file mode 100644
index 0000000000..6714059895
--- /dev/null
+++ b/media-gfx/krita/files/krita-5.2.6-py3.13.patch
@@ -0,0 +1,120 @@
+From 0f43ec3158225092f6a02422eb90c56421326570 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>
+Date: Tue, 18 Jun 2024 22:05:34 +0200
+Subject: [PATCH] Changes to build pykrita with Python 3.13
+
+Python 3.11 deprecated Py_SetPath() in 2022 and Python 3.13 removed it.
+Instead one needs to use the new PyConfig API (PEP 587) added to Python
+3.8.
+
+Fix: #488680
+---
+ .../extensions/pykrita/plugin/utilities.cpp | 61 +++++++++++++++++--
+ plugins/extensions/pykrita/plugin/utilities.h | 4 +-
+ 2 files changed, 57 insertions(+), 8 deletions(-)
+
+diff --git a/plugins/extensions/pykrita/plugin/utilities.cpp b/plugins/extensions/pykrita/plugin/utilities.cpp
+index 4f58183238..1e497b2681 100644
+--- a/plugins/extensions/pykrita/plugin/utilities.cpp
++++ b/plugins/extensions/pykrita/plugin/utilities.cpp
+@@ -19,8 +19,10 @@
+ #include <cmath>
+ #include <Python.h>
+
++#include <QDebug>
+ #include <QDir>
+ #include <QLibrary>
++#include <QProcessEnvironment>
+ #include <QString>
+ #include <QStringList>
+ #include <QVector>
+@@ -412,18 +414,65 @@ bool Python::setPath(const QStringList& scriptPaths)
+ joinedPaths = joinedPaths + pathSeparator + originalPath;
+ }
+ dbgScript << "Setting python paths:" << joinedPaths;
++
+ #ifdef Q_OS_WIN
+- QVector<wchar_t> joinedPathsWChars(joinedPaths.size() + 1, 0);
+- joinedPaths.toWCharArray(joinedPathsWChars.data());
+- Py_SetPath(joinedPathsWChars.data());
++ PyStatus status;
++ PyConfig config;
++ PyConfig_InitPythonConfig(&config);
++
++ for (const QString& path : joinedPaths.split(pathSeparator)) {
++ status = PyWideStringList_Append(&config.module_search_paths, path.toStdWString().c_str());
++ if (PyStatus_Exception(status)) {
++ qDebug() << "Error appending to PyWideStringList:" << status.err_msg;
++ dbgScript << "Error appending to PyWideStringList";
++ return false;
++ }
++ }
++
++ config.module_search_paths_set = true;
++ qDebug() << "Set module_search_paths";
++
++ status = Py_InitializeFromConfig(&config);
++ if (PyStatus_Exception(status)) {
++ qDebug() << "Cannot initialize Py_InitializeFromConfig:" << status.err_msg;
++ Py_ExitStatusException(status);
++ PyConfig_Clear(&config);
++ dbgScript << "Cannot initialize Py_InitializeFromConfig config";
++ return false;
++ }
++
++ PyConfig_Clear(&config);
+ #else
+ if (runningInBundle) {
+- QVector<wchar_t> joinedPathsWChars(joinedPaths.size() + 1, 0);
+- joinedPaths.toWCharArray(joinedPathsWChars.data());
+- Py_SetPath(joinedPathsWChars.data());
++ PyStatus status;
++ PyConfig config;
++ PyConfig_InitPythonConfig(&config);
++
++ for (const QString& path : joinedPaths.split(pathSeparator)) {
++ status = PyWideStringList_Append(&config.module_search_paths, path.toStdWString().c_str());
++ if (PyStatus_Exception(status)) {
++ qDebug() << "Error appending to PyWideStringList:" << status.err_msg;
++ dbgScript << "Error appending to PyWideStringList";
++ return false;
++ }
++ }
++
++ config.module_search_paths_set = true;
++
++ status = Py_InitializeFromConfig(&config);
++ if (PyStatus_Exception(status)) {
++ Py_ExitStatusException(status);
++ qDebug() << "Cannot initialize Py_InitializeFromConfig 2:" << status.err_msg;
++ PyConfig_Clear(&config);
++ dbgScript << "Cannot initialize Py_InitializeFromConfig config";
++ return false;
++ }
++
++ PyConfig_Clear(&config);
+ }
+ else {
+ qputenv("PYTHONPATH", joinedPaths.toLocal8Bit());
++ qDebug() << "Set PYTHONPATH environment variable";
+ }
+ #endif
+ isPythonPathSet = true;
+diff --git a/plugins/extensions/pykrita/plugin/utilities.h b/plugins/extensions/pykrita/plugin/utilities.h
+index fb309bd0b8..aec47da239 100644
+--- a/plugins/extensions/pykrita/plugin/utilities.h
++++ b/plugins/extensions/pykrita/plugin/utilities.h
+@@ -81,8 +81,8 @@ public:
+ static bool libraryLoad();
+
+ /**
+- * Set the Python paths by calling Py_SetPath. This should be called before
+- * initialization to ensure the proper libraries get loaded.
++ * Set the Python paths by calling Py_InitializeFromConfig. This should be
++ * called before initialization to ensure the proper libraries get loaded.
+ */
+ static bool setPath(const QStringList& scriptPaths);
+
+--
+2.45.2
+
diff --git a/media-gfx/krita/krita-9999.ebuild b/media-gfx/krita/krita-9999.ebuild
index 69c40eb547..11531fa6fa 100644
--- a/media-gfx/krita/krita-9999.ebuild
+++ b/media-gfx/krita/krita-9999.ebuild
@@ -4,7 +4,7 @@
EAPI=8
ECM_TEST="forceoptional"
-PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_COMPAT=( python3_{10..13} )
KFMIN=5.115.0
QTMIN=5.15.12
inherit ecm kde.org python-single-r1
@@ -96,6 +96,8 @@ PATCHES=(
# downstream
"${FILESDIR}"/${PN}-5.2.3-tests-optional.patch
"${FILESDIR}"/${PN}-5.2.2-fftw.patch # bug 913518
+ # Fedora, non-upstreamed:
+ "${FILESDIR}"/${P}-py3.13.patch # bug 943149
)
pkg_setup() {
next reply other threads:[~2024-11-25 22:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-25 22:52 Andreas Sturmlechner [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-02-13 22:17 [gentoo-commits] proj/kde:master commit in: media-gfx/krita/, media-gfx/krita/files/ Andreas Sturmlechner
2021-03-26 21:18 Andreas Sturmlechner
2020-07-12 22:55 Andreas Sturmlechner
2020-07-12 22:55 Andreas Sturmlechner
2016-10-27 19:42 Michael Palimaka
2016-09-22 11:38 Michael Palimaka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1732575030.96a63e864379619689ed79680582c93429102fd5.asturm@gentoo \
--to=asturm@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox