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 +}
