commit:     498c70476c4850099d2adbdc0d5039afa6315c33
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 16 20:56:12 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Jul 16 21:25:12 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=498c7047

media-gfx/krita: add 5.2.11 w/ libheif-1.20 fix backported

... from upstream 5.2 branch, commit 169339accb9e4e0e0e9921176c5cd60d340b7b04

Closes: https://bugs.gentoo.org/959940
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 media-gfx/krita/Manifest                           |   1 +
 .../krita/files/krita-5.2.11-libheif-1.20.patch    | 144 +++++++++++++++++++++
 media-gfx/krita/krita-5.2.11.ebuild                | 141 ++++++++++++++++++++
 3 files changed, 286 insertions(+)

diff --git a/media-gfx/krita/Manifest b/media-gfx/krita/Manifest
index 75ab2218c5ce..494e5b8494fa 100644
--- a/media-gfx/krita/Manifest
+++ b/media-gfx/krita/Manifest
@@ -1,2 +1,3 @@
 DIST krita-5.2.10.tar.xz 190972756 BLAKE2B 
3cd3729c4d0842281b8bf1d73b725b33b5c793df358aa0d6103fe72a76139ac4d73390c32b632de3703e63cdff67c23c1fd4fb37f91dd8b56efa21478004c8ea
 SHA512 
b4aa08d770b1d52a35671bc5c78057c8caca777376a713c69472af7936293dd8cbe7d7a17afddf696145f682a5c60ecf760f794d2a9c33e4f5547d65673993cb
+DIST krita-5.2.11.tar.xz 190966516 BLAKE2B 
1626dcfeb593189cd9c0bf5ec7b51dc69691f5550837e5977f9f431daa6a7c9bb39895d5c7bed9c348bce8ada4bbfcb76b54f535c550c727b0acfe1dd190858d
 SHA512 
1c388380f366118452f33ca028b4fb9ea134d8cd519f7878cc61d4f4fbd1d0fe51894fee9be8d4bed864d5d0df546986fae05812c9e25011516ce1000dd221de
 DIST krita-5.2.9.tar.xz 186574780 BLAKE2B 
de6be9c1de9854271fedd115902693183ed1953ad4a7dc47602bcdc5f70907bac5489ecd510fcf9507f35293e8fd8d34385374cca3ca054fb01749d96c63a22b
 SHA512 
fc4af177371afad307a77047ceff3fb793c76e6e8b64382acd950bd89d6fc12fb2c83d76d8e8d0482860add178b8fe70ac05b1db4bc0e17520be53b9190e4bfe

diff --git a/media-gfx/krita/files/krita-5.2.11-libheif-1.20.patch 
b/media-gfx/krita/files/krita-5.2.11-libheif-1.20.patch
new file mode 100644
index 000000000000..fcd9ae6882fc
--- /dev/null
+++ b/media-gfx/krita/files/krita-5.2.11-libheif-1.20.patch
@@ -0,0 +1,144 @@
+From 169339accb9e4e0e0e9921176c5cd60d340b7b04 Mon Sep 17 00:00:00 2001
+From: Halla Rempt <[email protected]>
+Date: Thu, 10 Jul 2025 10:08:24 +0200
+Subject: [PATCH] Fix build with libheif 1.20
+
+https://github.com/strukturag/libheif/issues/1419 introduced a
+source incompatible api change, this patch by Brad Smith make
+Krita build with 1.20. I've also checked with 1.15.2, which we
+use and it still builds.
+
+BUG:506778
+(cherry picked from commit 6ad4fa68a9e1ce06fc884e34f3cedcdd4b9a2076)
+---
+ plugins/impex/heif/HeifExport.cpp | 24 +++++++++++++++---------
+ plugins/impex/heif/HeifImport.cpp | 22 ++++++++++++++--------
+ 2 files changed, 29 insertions(+), 17 deletions(-)
+
+diff --git a/plugins/impex/heif/HeifExport.cpp 
b/plugins/impex/heif/HeifExport.cpp
+index 3e70cf925ea..ccbc8034b51 100644
+--- a/plugins/impex/heif/HeifExport.cpp
++++ b/plugins/impex/heif/HeifExport.cpp
+@@ -137,6 +137,12 @@ KisImportExportErrorCode HeifExport::convert(KisDocument 
*document, QIODevice *i
+     HeifLock lock;
+ #endif
+ 
++#if LIBHEIF_HAVE_VERSION(1, 20, 0)
++    using HeifStrideType = size_t;
++#else
++    using HeifStrideType = int;
++#endif
++
+     KisImageSP image = document->savingImage();
+     const KoColorSpace *cs = image->colorSpace();
+ 
+@@ -250,10 +256,10 @@ KisImportExportErrorCode HeifExport::convert(KisDocument 
*document, QIODevice *i
+                 img.add_plane(heif_channel_G, width,height, 8);
+                 img.add_plane(heif_channel_B, width,height, 8);
+ 
+-                int strideR = 0;
+-                int strideG = 0;
+-                int strideB = 0;
+-                int strideA = 0;
++                HeifStrideType strideR = 0;
++                HeifStrideType strideG = 0;
++                HeifStrideType strideB = 0;
++                HeifStrideType strideA = 0;
+ 
+                 uint8_t *ptrR = img.get_plane(heif_channel_R, &strideR);
+                 uint8_t *ptrG = img.get_plane(heif_channel_G, &strideG);
+@@ -289,7 +295,7 @@ KisImportExportErrorCode HeifExport::convert(KisDocument 
*document, QIODevice *i
+                 img.create(width, height, heif_colorspace_RGB, chroma);
+                 img.add_plane(heif_channel_interleaved, width, height, 12);
+ 
+-                int stride = 0;
++                HeifStrideType stride = 0;
+ 
+                 uint8_t *ptr = img.get_plane(heif_channel_interleaved, 
&stride);
+ 
+@@ -330,8 +336,8 @@ KisImportExportErrorCode HeifExport::convert(KisDocument 
*document, QIODevice *i
+ 
+                 img.add_plane(heif_channel_Y, width, height, 8);
+ 
+-                int strideG = 0;
+-                int strideA = 0;
++                HeifStrideType strideG = 0;
++                HeifStrideType strideA = 0;
+ 
+                 uint8_t *ptrG = img.get_plane(heif_channel_Y, &strideG);
+                 uint8_t *ptrA = [&]() -> uint8_t * {
+@@ -363,8 +369,8 @@ KisImportExportErrorCode HeifExport::convert(KisDocument 
*document, QIODevice *i
+ 
+                 img.add_plane(heif_channel_Y, width, height, 12);
+ 
+-                int strideG = 0;
+-                int strideA = 0;
++                HeifStrideType strideG = 0;
++                HeifStrideType strideA = 0;
+ 
+                 uint8_t *ptrG = img.get_plane(heif_channel_Y, &strideG);
+                 uint8_t *ptrA = [&]() -> uint8_t * {
+diff --git a/plugins/impex/heif/HeifImport.cpp 
b/plugins/impex/heif/HeifImport.cpp
+index 3c1a52cc282..6bceea85ebe 100644
+--- a/plugins/impex/heif/HeifImport.cpp
++++ b/plugins/impex/heif/HeifImport.cpp
+@@ -214,6 +214,12 @@ KisImportExportErrorCode HeifImport::convert(KisDocument 
*document, QIODevice *i
+     HeifLock lock;
+ #endif
+ 
++#if LIBHEIF_HAVE_VERSION(1, 20, 0)
++    using HeifStrideType = size_t;
++#else
++    using HeifStrideType = int;
++#endif
++
+     // Wrap input stream into heif Reader object
+     Reader_QIODevice reader(io);
+ 
+@@ -387,8 +393,8 @@ KisImportExportErrorCode HeifImport::convert(KisDocument 
*document, QIODevice *i
+ 
+         if (heifChroma == heif_chroma_monochrome) {
+             dbgFile << "monochrome heif file, bits:" << luma;
+-            int strideG = 0;
+-            int strideA = 0;
++            HeifStrideType strideG = 0;
++            HeifStrideType strideA = 0;
+             const uint8_t *imgG = heifimage.get_plane(heif_channel_Y, 
&strideG);
+             const uint8_t *imgA =
+                 heifimage.get_plane(heif_channel_Alpha, &strideA);
+@@ -409,10 +415,10 @@ KisImportExportErrorCode HeifImport::convert(KisDocument 
*document, QIODevice *i
+         } else if (heifChroma == heif_chroma_444) {
+             dbgFile << "planar heif file, bits:" << luma;
+ 
+-            int strideR = 0;
+-            int strideG = 0;
+-            int strideB = 0;
+-            int strideA = 0;
++            HeifStrideType strideR = 0;
++            HeifStrideType strideG = 0;
++            HeifStrideType strideB = 0;
++            HeifStrideType strideA = 0;
+             const uint8_t* imgR = heifimage.get_plane(heif_channel_R, 
&strideR);
+             const uint8_t* imgG = heifimage.get_plane(heif_channel_G, 
&strideG);
+             const uint8_t* imgB = heifimage.get_plane(heif_channel_B, 
&strideB);
+@@ -439,7 +445,7 @@ KisImportExportErrorCode HeifImport::convert(KisDocument 
*document, QIODevice *i
+                                     displayNits,
+                                     colorSpace);
+         } else if (heifChroma == heif_chroma_interleaved_RGB || heifChroma == 
heif_chroma_interleaved_RGBA) {
+-            int stride = 0;
++            HeifStrideType stride = 0;
+             dbgFile << "interleaved SDR heif file, bits:" << luma;
+ 
+             const uint8_t *img = 
heifimage.get_plane(heif_channel_interleaved, &stride);
+@@ -461,7 +467,7 @@ KisImportExportErrorCode HeifImport::convert(KisDocument 
*document, QIODevice *i
+                                       colorSpace);
+ 
+         } else if (heifChroma == heif_chroma_interleaved_RRGGBB_LE || 
heifChroma == heif_chroma_interleaved_RRGGBBAA_LE || heifChroma == 
heif_chroma_interleaved_RRGGBB_BE || heifChroma == 
heif_chroma_interleaved_RRGGBB_BE) {
+-            int stride = 0;
++            HeifStrideType stride = 0;
+             dbgFile << "interleaved HDR heif file, bits:" << luma;
+ 
+             const uint8_t *img =
+-- 
+GitLab
+

diff --git a/media-gfx/krita/krita-5.2.11.ebuild 
b/media-gfx/krita/krita-5.2.11.ebuild
new file mode 100644
index 000000000000..c2dcb0310ef1
--- /dev/null
+++ b/media-gfx/krita/krita-5.2.11.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+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
+
+if [[ ${KDE_BUILD_TYPE} = release ]]; then
+       SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz"
+       KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+DESCRIPTION="Free digital painting application. Digital Painting, Creative 
Freedom!"
+HOMEPAGE="https://apps.kde.org/krita/ https://krita.org/en/";
+
+LICENSE="GPL-3"
+SLOT="5"
+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}
+       dev-libs/boost:=
+       dev-libs/libunibreak:=
+       >=dev-libs/quazip-1.3-r2:=[qt5(-)]
+       $(python_gen_cond_dep '
+               dev-python/pyqt5[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
+       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[qt5] )
+       raw? ( kde-apps/libkdcraw:5 )
+       webp? ( >=media-libs/libwebp-1.2.0:= )
+       xsimd? ( >=dev-cpp/xsimd-13.0.0 )
+
+"
+DEPEND="${RDEPEND}
+       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.2.3-tests-optional.patch
+       "${FILESDIR}"/${PN}-5.2.2-fftw.patch # bug 913518
+       # git master
+       "${FILESDIR}"/${PN}-5.1.5-sip-6.8.patch # bug 919139
+       # somewhere... upstream... but not in the 5.2.11 tag.
+       "${FILESDIR}"/${P}-libheif-1.20.patch # bug 959940
+)
+
+pkg_setup() {
+       python-single-r1_pkg_setup
+       ecm_pkg_setup
+}
+
+src_prepare() {
+       ecm_src_prepare
+       cmake_comment_add_subdirectory benchmarks # bug 939842
+}
+
+src_configure() {
+       # Prevent sandbox violation from FindPyQt5.py module
+       # See Gentoo-bug 655918
+       addpredict /dev/dri
+
+       local mycmakeargs=(
+               -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 KF5KDcraw)
+               $(cmake_use_find_package webp WebP)
+               $(cmake_use_find_package xsimd xsimd)
+       )
+
+       ecm_src_configure
+}

Reply via email to