From ded992d8cc03bd42a5ecb1c495d44153c6416ecc Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Thu, 13 Feb 2025 22:17:16 +0100 Subject: media-gfx/krita: Port to KF6 Signed-off-by: Andreas Sturmlechner --- .../krita/files/krita-5.2.3-tests-optional.patch | 90 ---------------- media-gfx/krita/files/krita-5.2.6-py3.13.patch | 120 --------------------- .../krita/files/krita-5.3.0-tests-optional.patch | 90 ++++++++++++++++ media-gfx/krita/krita-9999.ebuild | 75 ++++++------- 4 files changed, 122 insertions(+), 253 deletions(-) delete mode 100644 media-gfx/krita/files/krita-5.2.3-tests-optional.patch delete mode 100644 media-gfx/krita/files/krita-5.2.6-py3.13.patch create mode 100644 media-gfx/krita/files/krita-5.3.0-tests-optional.patch (limited to 'media-gfx/krita') diff --git a/media-gfx/krita/files/krita-5.2.3-tests-optional.patch b/media-gfx/krita/files/krita-5.2.3-tests-optional.patch deleted file mode 100644 index 48d9e314a29..00000000000 --- a/media-gfx/krita/files/krita-5.2.3-tests-optional.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 2e9369281d44a2701ac7364568d381cca0d92ec5 Mon Sep 17 00:00:00 2001 -From: Andreas Sturmlechner -Date: Sun, 12 Jul 2020 18:55:31 +0200 -Subject: [PATCH] KritaAddBrokenUnitTest.cmake, MacroKritaAddBenchmark.cmake: - Skip ecm_add_test early if Qt5::Test is not available - -Signed-off-by: Andreas Sturmlechner ---- - cmake/modules/KritaAddBrokenUnitTest.cmake | 4 ++++ - cmake/modules/MacroKritaAddBenchmark.cmake | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/cmake/modules/KritaAddBrokenUnitTest.cmake b/cmake/modules/KritaAddBrokenUnitTest.cmake -index b7d0e8d852..901a0a1f99 100644 ---- a/cmake/modules/KritaAddBrokenUnitTest.cmake -+++ b/cmake/modules/KritaAddBrokenUnitTest.cmake -@@ -23,6 +23,10 @@ function(KRITA_ADD_BROKEN_UNIT_TEST) - message(FATAL_ERROR "ecm_add_test() called with multiple source files but without setting \"TEST_NAME\"") - endif() - -+ if(NOT TARGET Qt5::Test) -+ return() -+ endif() -+ - set(_testname ${ARG_NAME_PREFIX}${_targetname}) - - # add test to the global list of disabled tests -diff --git a/cmake/modules/MacroKritaAddBenchmark.cmake b/cmake/modules/MacroKritaAddBenchmark.cmake -index c748d8e319..f804d9b8f4 100644 ---- a/cmake/modules/MacroKritaAddBenchmark.cmake -+++ b/cmake/modules/MacroKritaAddBenchmark.cmake -@@ -23,6 +23,10 @@ macro (KRITA_ADD_BENCHMARK _test_NAME) - set(_nogui "NOGUI") - endif() - -+ if(NOT TARGET Qt5::Test) -+ return() -+ endif() -+ - add_executable( ${_test_NAME} ${_srcList} ) - ecm_mark_as_test(${_test_NAME}) - --- -2.27.0 - -From 3c9fe10e25e94bdb1eb5e7b07ac2696635fdc5a3 Mon Sep 17 00:00:00 2001 -From: Andreas Sturmlechner -Date: Wed, 17 Jun 2020 20:18:28 +0200 -Subject: [PATCH] Don't build tests when testing not requested - -Signed-off-by: Andreas Sturmlechner - -diff --git a/libs/flake/CMakeLists.txt b/libs/flake/CMakeLists.txt -index cbdac265d2..1a50c1620a 100644 ---- a/libs/flake/CMakeLists.txt -+++ b/libs/flake/CMakeLists.txt -@@ -9,8 +9,10 @@ include_directories( - ) - - add_subdirectory(styles) --add_subdirectory(tests) --add_subdirectory(resources/tests) -+if(BUILD_TESTING) -+ add_subdirectory(tests) -+ add_subdirectory(resources/tests) -+endif() - - set(kritaflake_SRCS - KoGradientHelper.cpp -diff --git a/libs/image/tiles3/CMakeLists.txt b/libs/image/tiles3/CMakeLists.txt -index 88c0516360..01f2383ddb 100644 ---- a/libs/image/tiles3/CMakeLists.txt -+++ b/libs/image/tiles3/CMakeLists.txt -@@ -1 +1,3 @@ --add_subdirectory(tests) -+if(BUILD_TESTING) -+ add_subdirectory(tests) -+endif() ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1246,7 +1246,9 @@ - ${CMAKE_CURRENT_BINARY_DIR} - ) - -+if(BUILD_TESTING) - add_subdirectory(sdk/tests) -+endif() - - add_subdirectory(libs) - add_subdirectory(plugins) 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 deleted file mode 100644 index 6714059895d..00000000000 --- a/media-gfx/krita/files/krita-5.2.6-py3.13.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 0f43ec3158225092f6a02422eb90c56421326570 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= -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 - #include - -+#include - #include - #include -+#include - #include - #include - #include -@@ -412,18 +414,65 @@ bool Python::setPath(const QStringList& scriptPaths) - joinedPaths = joinedPaths + pathSeparator + originalPath; - } - dbgScript << "Setting python paths:" << joinedPaths; -+ - #ifdef Q_OS_WIN -- QVector 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 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/files/krita-5.3.0-tests-optional.patch b/media-gfx/krita/files/krita-5.3.0-tests-optional.patch new file mode 100644 index 00000000000..c21b9127b77 --- /dev/null +++ b/media-gfx/krita/files/krita-5.3.0-tests-optional.patch @@ -0,0 +1,90 @@ +From 2e9369281d44a2701ac7364568d381cca0d92ec5 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Sun, 12 Jul 2020 18:55:31 +0200 +Subject: [PATCH] KritaAddBrokenUnitTest.cmake, MacroKritaAddBenchmark.cmake: + Skip ecm_add_test early if Qt${QT_MAJOR_VERSION}Test is not available + +Signed-off-by: Andreas Sturmlechner +--- + cmake/modules/KritaAddBrokenUnitTest.cmake | 4 ++++ + cmake/modules/MacroKritaAddBenchmark.cmake | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/cmake/modules/KritaAddBrokenUnitTest.cmake b/cmake/modules/KritaAddBrokenUnitTest.cmake +index b7d0e8d852..901a0a1f99 100644 +--- a/cmake/modules/KritaAddBrokenUnitTest.cmake ++++ b/cmake/modules/KritaAddBrokenUnitTest.cmake +@@ -23,6 +23,10 @@ function(KRITA_ADD_BROKEN_UNIT_TEST) + message(FATAL_ERROR "ecm_add_test() called with multiple source files but without setting \"TEST_NAME\"") + endif() + ++ if(NOT TARGET Qt${QT_MAJOR_VERSION}Test) ++ return() ++ endif() ++ + set(_testname ${ARG_NAME_PREFIX}${_targetname}) + + # add test to the global list of disabled tests +diff --git a/cmake/modules/MacroKritaAddBenchmark.cmake b/cmake/modules/MacroKritaAddBenchmark.cmake +index c748d8e319..f804d9b8f4 100644 +--- a/cmake/modules/MacroKritaAddBenchmark.cmake ++++ b/cmake/modules/MacroKritaAddBenchmark.cmake +@@ -23,6 +23,10 @@ macro (KRITA_ADD_BENCHMARK _test_NAME) + set(_nogui "NOGUI") + endif() + ++ if(NOT TARGET Qt${QT_MAJOR_VERSION}Test) ++ return() ++ endif() ++ + add_executable( ${_test_NAME} ${_srcList} ) + ecm_mark_as_test(${_test_NAME}) + +-- +2.27.0 + +From 3c9fe10e25e94bdb1eb5e7b07ac2696635fdc5a3 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Wed, 17 Jun 2020 20:18:28 +0200 +Subject: [PATCH] Don't build tests when testing not requested + +Signed-off-by: Andreas Sturmlechner + +diff --git a/libs/flake/CMakeLists.txt b/libs/flake/CMakeLists.txt +index cbdac265d2..1a50c1620a 100644 +--- a/libs/flake/CMakeLists.txt ++++ b/libs/flake/CMakeLists.txt +@@ -9,8 +9,10 @@ include_directories( + ) + + add_subdirectory(styles) +-add_subdirectory(tests) +-add_subdirectory(resources/tests) ++if(BUILD_TESTING) ++ add_subdirectory(tests) ++ add_subdirectory(resources/tests) ++endif() + + set(kritaflake_SRCS + KoGradientHelper.cpp +diff --git a/libs/image/tiles3/CMakeLists.txt b/libs/image/tiles3/CMakeLists.txt +index 88c0516360..01f2383ddb 100644 +--- a/libs/image/tiles3/CMakeLists.txt ++++ b/libs/image/tiles3/CMakeLists.txt +@@ -1 +1,3 @@ +-add_subdirectory(tests) ++if(BUILD_TESTING) ++ add_subdirectory(tests) ++endif() +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1246,7 +1246,9 @@ + ${CMAKE_CURRENT_BINARY_DIR} + ) + ++if(BUILD_TESTING) + add_subdirectory(sdk/tests) ++endif() + + add_subdirectory(libs) + add_subdirectory(plugins) diff --git a/media-gfx/krita/krita-9999.ebuild b/media-gfx/krita/krita-9999.ebuild index 83a11fa3da2..ea3ca8f7338 100644 --- a/media-gfx/krita/krita-9999.ebuild +++ b/media-gfx/krita/krita-9999.ebuild @@ -5,9 +5,9 @@ EAPI=8 ECM_TEST="forceoptional" PYTHON_COMPAT=( python3_{10..13} ) -KFMIN=5.115.0 -QTMIN=5.15.12 -inherit ecm kde.org python-single-r1 +KFMIN=6.9.0 +QTMIN=6.8.0 +inherit ecm kde.org python-single-r1 xdg if [[ ${KDE_BUILD_TYPE} = release ]]; then SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz" @@ -18,44 +18,37 @@ DESCRIPTION="Free digital painting application. Digital Painting, Creative Freed HOMEPAGE="https://apps.kde.org/krita/ https://krita.org/en/" LICENSE="GPL-3" -SLOT="5" +SLOT="0" IUSE="color-management fftw gif +gsl heif jpeg2k jpegxl +mypaint-brush-engine openexr pdf media +raw +xsimd webp" REQUIRED_USE="${PYTHON_REQUIRED_USE}" # bug 630508 RESTRICT="test" -RDEPEND="${PYTHON_DEPS} +COMMON_DEPEND="${PYTHON_DEPS} dev-libs/boost:= dev-libs/libunibreak:= - >=dev-libs/quazip-1.3-r2:0=[qt5(-)] + >=dev-libs/quazip-1.3-r2:0=[qt6(+)] $(python_gen_cond_dep ' - dev-python/pyqt5[declarative,gui,widgets,${PYTHON_USEDEP}] + dev-python/pyqt6[declarative,gui,widgets,${PYTHON_USEDEP}] dev-python/sip:=[${PYTHON_USEDEP}] ') - >=dev-qt/qtconcurrent-${QTMIN}:5 - >=dev-qt/qtdbus-${QTMIN}:5 - >=dev-qt/qtdeclarative-${QTMIN}:5 - >=dev-qt/qtgui-${QTMIN}:5=[-gles2-only] - >=dev-qt/qtnetwork-${QTMIN}:5 - >=dev-qt/qtprintsupport-${QTMIN}:5 - >=dev-qt/qtsql-${QTMIN}:5 - >=dev-qt/qtsvg-${QTMIN}:5 - >=dev-qt/qtwidgets-${QTMIN}:5 - >=dev-qt/qtx11extras-${QTMIN}:5 - >=dev-qt/qtxml-${QTMIN}:5 - >=kde-frameworks/kcompletion-${KFMIN}:5 - >=kde-frameworks/kconfig-${KFMIN}:5 - >=kde-frameworks/kcoreaddons-${KFMIN}:5 - >=kde-frameworks/kcrash-${KFMIN}:5 - >=kde-frameworks/kguiaddons-${KFMIN}:5 - >=kde-frameworks/ki18n-${KFMIN}:5 - >=kde-frameworks/kiconthemes-${KFMIN}:5 - >=kde-frameworks/kitemmodels-${KFMIN}:5 - >=kde-frameworks/kitemviews-${KFMIN}:5 - >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 - >=kde-frameworks/kwindowsystem-${KFMIN}:5 - >=kde-frameworks/kxmlgui-${KFMIN}:5 + >=dev-qt/qt5compat-${QTMIN}:6 + >=dev-qt/qtbase-${QTMIN}:6=[concurrent,dbus,-gles2-only,gui,network,opengl,sql,widgets,X,xml] + >=dev-qt/qtdeclarative-${QTMIN}:6 + >=dev-qt/qtsvg-${QTMIN}:6 + >=kde-frameworks/kcompletion-${KFMIN}:6 + >=kde-frameworks/kconfig-${KFMIN}:6 + >=kde-frameworks/kcoreaddons-${KFMIN}:6 + >=kde-frameworks/kcrash-${KFMIN}:6 + >=kde-frameworks/kguiaddons-${KFMIN}:6 + >=kde-frameworks/ki18n-${KFMIN}:6 + >=kde-frameworks/kiconthemes-${KFMIN}:6 + >=kde-frameworks/kitemmodels-${KFMIN}:6 + >=kde-frameworks/kitemviews-${KFMIN}:6 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:6 + >=kde-frameworks/kwindowsystem-${KFMIN}:6 + >=kde-frameworks/kxmlgui-${KFMIN}:6 media-gfx/exiv2:= media-libs/lcms media-libs/libjpeg-turbo:= @@ -75,13 +68,16 @@ RDEPEND="${PYTHON_DEPS} media? ( media-libs/mlt:= ) mypaint-brush-engine? ( media-libs/libmypaint:= ) openexr? ( media-libs/openexr:= ) - pdf? ( app-text/poppler[qt5(-)] ) - raw? ( kde-apps/libkdcraw:5 ) + pdf? ( app-text/poppler[qt6(-)] ) + raw? ( kde-apps/libkdcraw:6 ) webp? ( >=media-libs/libwebp-1.2.0:= ) xsimd? ( >=dev-cpp/xsimd-13.0.0 ) " -DEPEND="${RDEPEND} +RDEPEND="${COMMON_DEPEND} + !${CATEGORY}/${PN}:5 +" +DEPEND="${COMMON_DEPEND} dev-libs/immer dev-libs/lager dev-libs/zug @@ -94,23 +90,17 @@ BDEPEND=" PATCHES=( # downstream - "${FILESDIR}"/${PN}-5.2.3-tests-optional.patch + "${FILESDIR}"/${PN}-5.3.0-tests-optional.patch "${FILESDIR}"/${PN}-5.2.2-fftw.patch # bug 913518 - # Fedora, non-upstreamed: - "${FILESDIR}"/${P}-py3.13.patch # bug 943149 ) -pkg_setup() { - python-single-r1_pkg_setup - ecm_pkg_setup -} - src_configure() { # Prevent sandbox violation from FindPyQt5.py module # See Gentoo-bug 655918 addpredict /dev/dri local mycmakeargs=( + -DBUILD_WITH_QT6=ON -DENABLE_UPDATERS=OFF -DKRITA_ENABLE_PCH=OFF # big mess. -DCMAKE_DISABLE_FIND_PACKAGE_KSeExpr=ON # not packaged @@ -125,10 +115,9 @@ src_configure() { $(cmake_use_find_package mypaint-brush-engine LibMyPaint) $(cmake_use_find_package openexr OpenEXR) $(cmake_use_find_package pdf Poppler) - $(cmake_use_find_package raw KF5KDcraw) + $(cmake_use_find_package raw KDcrawQt6) $(cmake_use_find_package webp WebP) $(cmake_use_find_package xsimd xsimd) ) - ecm_src_configure } -- cgit v1.2.3