commit:     cd9dab049a84ebea8246693f270e564e8183e057
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 20 11:39:20 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Oct 20 15:33:34 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cd9dab04

media-gfx/krita: add 6.0.0_alpha_pre20251020

Fixes build with Qt 6.10, boost-1.89, eigen-5.

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 media-gfx/krita/Manifest                           |   1 +
 .../krita-6.0.0_alpha_pre20251020-qt6.10.patch     | 131 +++++++++++++++++++++
 .../krita/krita-6.0.0_alpha_pre20251020.ebuild     | 128 ++++++++++++++++++++
 3 files changed, 260 insertions(+)

diff --git a/media-gfx/krita/Manifest b/media-gfx/krita/Manifest
index 41ee2fefd2a7..cc0b1dfc4454 100644
--- a/media-gfx/krita/Manifest
+++ b/media-gfx/krita/Manifest
@@ -1,2 +1,3 @@
 DIST krita-5.2.13.tar.xz 191046020 BLAKE2B 
243027d0dde4a58da335ba182d700d9f351b1aaa6d1806bd0d41725fe4fbb6f6939ce9ca06592621cc8083a3ab4b1f2545bc72330623bd8e3bb5a276e670a21f
 SHA512 
71900f653b4534bf4c5d62a5c5aa523b8cc484eaabd5a92562b420fc5d2d670cc11203be93450557345c35c1d249def308b1913e1952b570eeaba4f48cab3a24
 DIST krita-6.0.0_alpha_pre20250902-cec72dd2.tar.gz 284205558 BLAKE2B 
7b907b18c650c843b5c28af33dbe99ca023f470bdb8ea1fc9ab51768f00d214664af24d7289eec09deb5e942879738b31088486f0b63ff15f3a142e607e28577
 SHA512 
2854047e27bf654b955a585b4ba7b0903a20cc01b8b37f068fc7021f7085ab45f890e50b868843de0c44742a4bf094550a10ef3c933310f423342c2efbffdb54
+DIST krita-6.0.0_alpha_pre20251020-87f39a5e.tar.gz 280088596 BLAKE2B 
0b8a5b9ca77448e9f8cf9d2c6011513fbd13cb18e34e01180dfc52da4e36e8c96b9bb4c5811be1c4f4ad83134d5723f7bcbcdef34423764e5cd09a61ae939df1
 SHA512 
e480f83f725c15d52c626adf2be88249bb80ee5d7631910edaf138d4a4ebf1a0a6ca2812dc21dddcdb7b9eaf49d0cc7a8b7a48b267b93a8ae7ab8473cc83e7cf

diff --git a/media-gfx/krita/files/krita-6.0.0_alpha_pre20251020-qt6.10.patch 
b/media-gfx/krita/files/krita-6.0.0_alpha_pre20251020-qt6.10.patch
new file mode 100644
index 000000000000..b8c4e2b264af
--- /dev/null
+++ b/media-gfx/krita/files/krita-6.0.0_alpha_pre20251020-qt6.10.patch
@@ -0,0 +1,131 @@
+Source: https://invent.kde.org/graphics/krita/-/merge_requests/2386
+
+From c2bcea11d461729c6c156d43452d289d895d200b Mon Sep 17 00:00:00 2001
+From: Joshua Goins <[email protected]>
+Date: Sat, 11 Oct 2025 22:10:29 -0400
+Subject: [PATCH 1/2] Manually define Qt6Gui_PRIVATE_INCLUDE_DIRS CMake
+ variable
+
+Previously Krita was dependent on an implementation detail of Qt's CMake
+module, which has a history of breaking. For reference, Krita no longer
+builds on Qt dev because they shuffled things around again!
+
+Most notably, the variable Krita used isn't available anymore - so we
+need to manually re-create it so the other parts of the CMakeLists
+will work. The more correct and reliable solution would be to use the
+Qt6Private target itself, but Krita needs to selectively use the private
+headers for compilation speed reasons, so I decided to add a workaround
+for now.
+---
+ CMakeLists.txt | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b0f27a21ce8..c822d86b62e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -543,12 +543,33 @@ if (QT_MAJOR_VERSION STREQUAL "6")
+         REQUIRED COMPONENTS
+         ColorScheme
+     )
++
++    # Qt 6.10 has split this into it's own CMake module, it's no longer 
included with Gui
++    if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
++        find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
++        get_target_property(Qt6Gui_PRIVATE_INCLUDE_DIRS Qt6::GuiPrivate 
INTERFACE_INCLUDE_DIRECTORIES)
++
++        # QtGui depends on private headers form QtCore as well
++        find_package(Qt6CorePrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
++        get_target_property(Qt6Core_PRIVATE_INCLUDE_DIRS Qt6::CorePrivate 
INTERFACE_INCLUDE_DIRECTORIES)
++
++        # Currently we depend on the Qt6Gui_PRIVATE_INCLUDE_DIRS variable to 
selectively include
++        # the needed headers, but it will fail to compile in 6.10 since the 
private headers exist
++        # in separate directories. So we'll just shove them into the variable 
we expect for now.
++        list(APPEND Qt6Gui_PRIVATE_INCLUDE_DIRS 
${Qt6Core_PRIVATE_INCLUDE_DIRS})
++    endif()
+ endif()
+ 
+ set(HAVE_WAYLAND FALSE)
+ if (TARGET Qt::WaylandClient)
+     message(STATUS "Found Qt::WaylandClient, enabling kritawayland platform")
+     set(HAVE_WAYLAND TRUE)
++
++    # Qt 6.10 has split the private module, see above for a better explanation
++    if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
++        find_package(Qt6WaylandClientPrivate ${REQUIRED_QT_VERSION} REQUIRED 
NO_MODULE)
++        get_target_property(Qt6WaylandClient_PRIVATE_INCLUDE_DIRS 
Qt6::WaylandClientPrivate INTERFACE_INCLUDE_DIRECTORIES)
++    endif()
+ endif()
+ 
+ option(KRITA_USE_SURFACE_COLOR_MANAGEMENT_API "Use per-surface color 
management API (e.g. when using Wayland)" ${HAVE_WAYLAND})
+-- 
+GitLab
+
+
+From 64a665a1917657c8b0ad5238ccd0539192111bad Mon Sep 17 00:00:00 2001
+From: Joshua Goins <[email protected]>
+Date: Sat, 11 Oct 2025 22:10:41 -0400
+Subject: [PATCH 2/2] Add missing QElapsedTimer includes in tests
+
+Some upstream header that previously included QElapsedTimer no longer
+does in Qt 6.10, so I had to add these to get the full build to
+complete.
+---
+ benchmarks/KisAnimationRenderingBenchmark.cpp         | 1 +
+ benchmarks/kis_painter_benchmark.cpp                  | 1 +
+ libs/image/tests/KisOverlayPaintDeviceWrapperTest.cpp | 2 ++
+ sdk/tests/stroke_testing_utils.cpp                    | 1 +
+ 4 files changed, 5 insertions(+)
+
+diff --git a/benchmarks/KisAnimationRenderingBenchmark.cpp 
b/benchmarks/KisAnimationRenderingBenchmark.cpp
+index 808561dac07..bf21a736730 100644
+--- a/benchmarks/KisAnimationRenderingBenchmark.cpp
++++ b/benchmarks/KisAnimationRenderingBenchmark.cpp
+@@ -6,6 +6,7 @@
+ 
+ #include "KisAnimationRenderingBenchmark.h"
+ 
++#include <QElapsedTimer>
+ #include <QThread>
+ #include <simpletest.h>
+ 
+diff --git a/benchmarks/kis_painter_benchmark.cpp 
b/benchmarks/kis_painter_benchmark.cpp
+index b1a71bbfb29..ebc78092180 100644
+--- a/benchmarks/kis_painter_benchmark.cpp
++++ b/benchmarks/kis_painter_benchmark.cpp
+@@ -16,6 +16,7 @@ inline double drand48()
+ #include <simpletest.h>
+ 
+ #include <QtMath>
++#include <QElapsedTimer>
+ #include <QImage>
+ #include <kis_debug.h>
+ 
+diff --git a/libs/image/tests/KisOverlayPaintDeviceWrapperTest.cpp 
b/libs/image/tests/KisOverlayPaintDeviceWrapperTest.cpp
+index 33795764645..e91cc7197ea 100644
+--- a/libs/image/tests/KisOverlayPaintDeviceWrapperTest.cpp
++++ b/libs/image/tests/KisOverlayPaintDeviceWrapperTest.cpp
+@@ -11,6 +11,8 @@
+ #include <kis_paint_device.h>
+ #include "kistest.h"
+ 
++#include <QElapsedTimer>
++
+ #include <KoColor.h>
+ 
+ #include <kis_paint_device_debug_utils.h>
+diff --git a/sdk/tests/stroke_testing_utils.cpp 
b/sdk/tests/stroke_testing_utils.cpp
+index de71601ff46..b037e218293 100644
+--- a/sdk/tests/stroke_testing_utils.cpp
++++ b/sdk/tests/stroke_testing_utils.cpp
+@@ -9,6 +9,7 @@
+ #include <simpletest.h>
+ 
+ #include <QDir>
++#include <QElapsedTimer>
+ #include <KoColor.h>
+ #include <KoColorSpace.h>
+ #include <KoColorSpaceRegistry.h>
+-- 
+GitLab
+

diff --git a/media-gfx/krita/krita-6.0.0_alpha_pre20251020.ebuild 
b/media-gfx/krita/krita-6.0.0_alpha_pre20251020.ebuild
new file mode 100644
index 000000000000..5957fad541c8
--- /dev/null
+++ b/media-gfx/krita/krita-6.0.0_alpha_pre20251020.ebuild
@@ -0,0 +1,128 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_TEST="forceoptional"
+KDE_ORG_COMMIT=87f39a5e846493df94cef498413f85b70f282e6d
+PYTHON_COMPAT=( python3_{11..13} )
+KFMIN=6.9.0
+QTMIN=6.8.0
+inherit ecm kde.org python-single-r1 xdg
+
+DESCRIPTION="Free digital painting application. Digital Painting, Creative 
Freedom!"
+HOMEPAGE="https://apps.kde.org/krita/ https://krita.org/en/";
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS=""
+IUSE="color-management fftw gif +gsl heif jpeg2k jpegxl +mypaint-brush-engine 
openexr pdf media +raw webp"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# bug 630508
+RESTRICT="test"
+
+COMMON_DEPEND="${PYTHON_DEPS}
+       >=dev-cpp/xsimd-13.0.0
+       dev-libs/boost:=
+       dev-libs/libunibreak:=
+       >=dev-libs/quazip-1.3-r2:0=[qt6(+)]
+       $(python_gen_cond_dep '
+               dev-python/pyqt6[gui,qml,widgets,${PYTHON_USEDEP}]
+               dev-python/sip:=[${PYTHON_USEDEP}]
+       ')
+       >=dev-qt/qt5compat-${QTMIN}:6
+       
>=dev-qt/qtbase-${QTMIN}:6=[concurrent,dbus,-gles2-only,gui,network,opengl,sql,wayland,widgets,X,xml]
+       >=dev-qt/qtdeclarative-${QTMIN}:6
+       >=dev-qt/qtsvg-${QTMIN}:6
+       >=kde-frameworks/kcolorscheme-${KFMIN}: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:=
+       media-libs/libpng:=
+       media-libs/tiff:=
+       sys-libs/zlib
+       virtual/opengl
+       x11-libs/libX11
+       x11-libs/libXi
+       color-management? ( >=media-libs/opencolorio-2.0.0 )
+       fftw? ( sci-libs/fftw:3.0= )
+       gif? ( media-libs/giflib )
+       gsl? ( sci-libs/gsl:= )
+       jpeg2k? ( media-libs/openjpeg:= )
+       jpegxl? ( >=media-libs/libjxl-0.7.0_pre20220825:= )
+       heif? ( >=media-libs/libheif-1.11:=[x265] )
+       media? ( media-libs/mlt:= )
+       mypaint-brush-engine? ( media-libs/libmypaint:= )
+       openexr? ( media-libs/openexr:= )
+       pdf? ( app-text/poppler[qt6(-)] )
+       raw? ( kde-apps/libkdcraw:6 )
+       webp? ( >=media-libs/libwebp-1.2.0:= )
+
+"
+RDEPEND="${COMMON_DEPEND}
+       !${CATEGORY}/${PN}:5
+"
+RDEPEND+=" || ( >=dev-qt/qtbase-6.10:6[wayland] <dev-qt/qtwayland-6.10:6 )"
+DEPEND="${COMMON_DEPEND}
+       dev-libs/immer
+       dev-libs/lager
+       dev-libs/zug
+"
+BDEPEND="
+       dev-cpp/eigen:3
+       dev-lang/perl
+       sys-devel/gettext
+"
+
+PATCHES=(
+       # downstream
+       "${FILESDIR}"/${PN}-5.3.0-tests-optional.patch
+       "${FILESDIR}"/${PN}-5.2.2-fftw.patch # bug 913518
+       # pending upstream
+       "${FILESDIR}"/${P}-qt6.10.patch
+)
+
+src_prepare() {
+       rm -r packaging || die # unused and too low CMake minimum
+       ecm_src_prepare
+}
+
+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
+               $(cmake_use_find_package color-management OpenColorIO)
+               $(cmake_use_find_package fftw FFTW3)
+               $(cmake_use_find_package gif GIF)
+               $(cmake_use_find_package gsl GSL)
+               $(cmake_use_find_package heif HEIF)
+               $(cmake_use_find_package jpeg2k OpenJPEG)
+               $(cmake_use_find_package jpegxl JPEGXL)
+               $(cmake_use_find_package media Mlt7)
+               $(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 KDcrawQt6)
+               $(cmake_use_find_package webp WebP)
+       )
+       ecm_src_configure
+}

Reply via email to