git: 9805a6ffb5a7 - main - graphics/krita: Update to 5.2.0

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Fri, 06 Oct 2023 04:16:51 UTC
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9805a6ffb5a78d3fe0c091ae392924ee44441770

commit 9805a6ffb5a78d3fe0c091ae392924ee44441770
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-10-06 03:38:25 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-10-06 04:16:22 +0000

    graphics/krita: Update to 5.2.0
    
    https://krita.org/en/krita-5-2-release-notes/
---
 graphics/krita-gmic-plugin/Makefile                |   1 +
 graphics/krita/Makefile                            |  65 ++-
 graphics/krita/distinfo                            |   8 +-
 .../patch-3rdparty__vendor_raqm_CMakeLists.txt     |  12 +
 .../files/patch-cmake_modules_FindOpenJPEG.cmake   |  13 +
 .../patch-cmake_modules_xsimd_xsimdMacros.cmake    |  15 +
 graphics/krita/files/patch-git-exiv2-a-e7bf1f0d299 | 582 ---------------------
 graphics/krita/files/patch-git_e9184281            |  28 -
 .../krita/files/patch-plugins_impex_CMakeLists.txt |  18 +
 .../patch-plugins_paintops_mypaint_CMakeLists.txt  |  11 -
 graphics/krita/pkg-plist                           |  37 +-
 11 files changed, 119 insertions(+), 671 deletions(-)

diff --git a/graphics/krita-gmic-plugin/Makefile b/graphics/krita-gmic-plugin/Makefile
index 6c3bc48e2892..df7d59e5290f 100644
--- a/graphics/krita-gmic-plugin/Makefile
+++ b/graphics/krita-gmic-plugin/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	gmic
 DISTVERSIONPREFIX=	v
 DISTVERSION=	3.2.4.1
+PORTREVISION=	1
 CATEGORIES=	graphics kde
 PKGNAMEPREFIX=	krita-
 PKGNAMESUFFIX=	-plugin
diff --git a/graphics/krita/Makefile b/graphics/krita/Makefile
index 30b2b944455a..c860bf8521d3 100644
--- a/graphics/krita/Makefile
+++ b/graphics/krita/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	krita
-DISTVERSION=	5.1.5
-PORTREVISION=	19
+DISTVERSION=	5.2.0
 CATEGORIES=	graphics kde
 MASTER_SITES=	KDE/stable/${PORTNAME}/${DISTVERSION}
 DIST_SUBDIR=	KDE/${PORTNAME}
@@ -12,50 +11,59 @@ WWW=		https://krita.org
 LICENSE=	GPLv2
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	libheif>=1.12.0:graphics/libheif
+BUILD_DEPENDS=	boost-libs>=1.65:devel/boost-libs \
+		immer>=0:devel/immer \
+		lager>=0:devel/lager \
+		zug>=0:devel/zug
 BUILD_DEPENDS+=	${BUILD_DEPENDS_${ARCH}}
 BUILD_DEPENDS_aarch64=	xsimd>=8.1:devel/xsimd
 BUILD_DEPENDS_amd64=	xsimd>=8.1:devel/xsimd
 LIB_DEPENDS=	libImath.so:math/Imath \
 		libOpenColorIO.so:graphics/opencolorio \
 		libX11.so:x11/libX11 \
-		libboost_system.so:devel/boost-libs \
-		libfftw3.so:math/fftw3 \
 		libexiv2.so:graphics/exiv2 \
-		libcurl.so:ftp/curl \
+		libfftw3.so:math/fftw3 \
+		libfontconfig.so:x11-fonts/fontconfig \
+		libfreetype.so:print/freetype2 \
+		libfribidi.so:converters/fribidi \
 		libgif.so:graphics/giflib \
 		libgsl.so:math/gsl \
+		libharfbuzz.so:print/harfbuzz \
 		libheif.so:graphics/libheif \
-		libturbojpeg.so:graphics/libjpeg-turbo \
+		libjson-c.so:devel/json-c \
 		libjxl.so:graphics/libjxl \
 		liblcms2.so:graphics/lcms2 \
 		libmypaint.so:graphics/libmypaint \
-		libpng.so:graphics/png \
+		libopenjp2.so:graphics/openjpeg \
+		libpng16.so:graphics/png \
 		libpoppler.so:graphics/poppler \
 		libpoppler-qt5.so:graphics/poppler-qt5 \
 		libquazip1-qt5.so:archivers/quazip@qt5 \
-		libraw.so:graphics/libraw \
 		libtiff.so:graphics/tiff \
-		libwebp.so:graphics/webp \
-		libxcb.so:x11/libxcb \
-		libxcb-util.so:x11/xcb-util
+		libturbojpeg.so:graphics/libjpeg-turbo \
+		libunibreak.so:textproc/libunibreak \
+		libwebp.so:graphics/webp
 
-# Disable ninja generator for now (with gmake), until the duplicate test targets are resolved upstream.
 USES=		cmake compiler:c++11-lib desktop-file-utils eigen:3 gettext \
-		jpeg kde:5 localbase:ldflags pkgconfig python qt:5 \
-		shared-mime-info tar:xz xorg
-USE_KDE=	archive completion config coreaddons crash guiaddons i18n \
-		itemmodels itemviews kio service widgetsaddons windowsystem \
-		ecm:build
-USE_QT=		concurrent core dbus declarative gui multimedia network \
-		printsupport sql svg testlib widgets x11extras xml \
-		buildtools:build qmake:build \
+		gnome jpeg kde:5 localbase:ldflags mlt:7 pkgconfig python qt:5 \
+		sdl shared-mime-info tar:xz xorg
+USE_GNOME=	glib20
+USE_KDE=	completion config coreaddons crash guiaddons i18n \
+		itemmodels itemviews libkdcraw service widgetsaddons \
+		windowsystem ecm:build
+USE_QT=		concurrent core dbus declarative gui network \
+		printsupport sql svg widgets x11extras xml \
+		buildtools:build qmake:build testlib:build \
 		sql-sqlite3:run
+USE_SDL=	sdl2
 USE_XORG=	ice sm xcb xext xi
 
 # Make Cmake use the python we installed dependencies for.
 CMAKE_ARGS=	-DPython_EXECUTABLE:STRING=${PYTHON_CMD}
 
+PLIST_SUB=	SHLIB_VER=19.0.0 \
+		SHLIB_SHVER=19
+
 OPTIONS_DEFINE=		PYTHON OPENEXR
 OPTIONS_DEFAULT=	PYTHON OPENEXR
 OPTIONS_SUB=		yes
@@ -64,20 +72,9 @@ OPENEXR_LIB_DEPENDS=	libOpenEXR.so:graphics/openexr \
 			libKSeExpr.so:graphics/kseexpr
 OPENEXR_CMAKE_BOOL_OFF=	CMAKE_DISABLE_FIND_PACKAGE_OpenEXR
 
-PYTHON_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools>=63.1.0:devel/py-setuptools@${PY_FLAVOR}
-PYTHON_CMAKE_BOOL_OFF=	CMAKE_DISABLE_FIND_PACKAGE_PyQt5
+PYTHON_BUILD_DEPENDS=	${PY_SETUPTOOLS}
 PYTHON_USES=		pyqt:5
 PYTHON_USE=		PYQT=pyqt5,sip,pysip
-
-PLIST_SUB=	SHLIB_VER=18.0.0 \
-		SHLIB_SHVER=18
-
-.include <bsd.port.options.mk>
-
-.if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == i386
-BUILD_DEPENDS+=	vc>=1.1.0:devel/vc
-.else
-CMAKE_ARGS+=	-DCMAKE_DISABLE_FIND_PACKAGE_Vc=ON
-.endif
+PYTHON_CMAKE_BOOL_OFF=	CMAKE_DISABLE_FIND_PACKAGE_PyQt5
 
 .include <bsd.port.mk>
diff --git a/graphics/krita/distinfo b/graphics/krita/distinfo
index 7a3dd1caea80..cdf63d6d872c 100644
--- a/graphics/krita/distinfo
+++ b/graphics/krita/distinfo
@@ -1,3 +1,5 @@
-TIMESTAMP = 1673014048
-SHA256 (KDE/krita/krita-5.1.5.tar.xz) = 45eac209a3c4ac285ca223e1978d35694cdca31b0075e596ad252d6619f04249
-SIZE (KDE/krita/krita-5.1.5.tar.xz) = 184981952
+TIMESTAMP = 1696541341
+SHA256 (KDE/krita/krita-5.2.0.tar.xz) = a3791a9cbb590d9964b45c0c1ed89c37d422e38606f70885f16de1ff2f645baf
+SIZE (KDE/krita/krita-5.2.0.tar.xz) = 188368484
+SHA256 (KDE/krita/821259eace5d1816df0b39306ef5c6f2a2842394.patch) = f3748be2f1abf64fe4a7515fe4f67ac7696defd7256bda906b69d7a80f45e341
+SIZE (KDE/krita/821259eace5d1816df0b39306ef5c6f2a2842394.patch) = 7346
diff --git a/graphics/krita/files/patch-3rdparty__vendor_raqm_CMakeLists.txt b/graphics/krita/files/patch-3rdparty__vendor_raqm_CMakeLists.txt
new file mode 100644
index 000000000000..9dc5f6e6a1dd
--- /dev/null
+++ b/graphics/krita/files/patch-3rdparty__vendor_raqm_CMakeLists.txt
@@ -0,0 +1,12 @@
+Fix linker errors. We need to build with -fPIC.
+
+--- 3rdparty_vendor/raqm/CMakeLists.txt.orig	2023-10-04 08:06:16 UTC
++++ 3rdparty_vendor/raqm/CMakeLists.txt
+@@ -86,6 +86,7 @@ set_property(TARGET libraqm PROPERTY C_STANDARD 99)
+ 
+ add_library(libraqm STATIC ${libraqm_SRC})
+ set_property(TARGET libraqm PROPERTY C_STANDARD 99)
++set_property(TARGET libraqm PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+ target_include_directories(libraqm INTERFACE ${libraqm_src_SOURCE_DIR}/src)
+ target_include_directories(libraqm PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
diff --git a/graphics/krita/files/patch-cmake_modules_FindOpenJPEG.cmake b/graphics/krita/files/patch-cmake_modules_FindOpenJPEG.cmake
new file mode 100644
index 000000000000..0230f5b220a8
--- /dev/null
+++ b/graphics/krita/files/patch-cmake_modules_FindOpenJPEG.cmake
@@ -0,0 +1,13 @@
+Fix detection of OpenJPEG 2.x if 1.5 is also installed.
+
+--- cmake/modules/FindOpenJPEG.cmake.orig	2023-09-14 09:35:53 UTC
++++ cmake/modules/FindOpenJPEG.cmake
+@@ -45,7 +45,7 @@ include(FindPackageHandleStandardArgs)
+ 
+ # No hints in this case because the library versions semantically
+ # the module folder, and it's also capitalized, so let CMake handle it.
+-find_package(OPENJPEG QUIET NO_MODULE NAMES OpenJPEG)
++find_package(OPENJPEG 2 QUIET NO_MODULE NAMES OpenJPEG)
+ mark_as_advanced(OPENJPEG_DIR)
+ 
+ if(OPENJPEG_FOUND)
diff --git a/graphics/krita/files/patch-cmake_modules_xsimd_xsimdMacros.cmake b/graphics/krita/files/patch-cmake_modules_xsimd_xsimdMacros.cmake
new file mode 100644
index 000000000000..ffb2e50a039e
--- /dev/null
+++ b/graphics/krita/files/patch-cmake_modules_xsimd_xsimdMacros.cmake
@@ -0,0 +1,15 @@
+Avoid detecting binutils, especially for FreeBSD 12.x where the base version
+gets detected and rejected for being too old. This can be safely removed
+after 12.x EOL.
+
+--- cmake/modules/xsimd/xsimdMacros.cmake.orig	2023-10-05 08:16:01 UTC
++++ cmake/modules/xsimd/xsimdMacros.cmake
+@@ -60,7 +60,7 @@ macro(xsimd_check_assembler)
+ endmacro()
+ 
+ macro(xsimd_check_assembler)
+-   execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-prog-name=as OUTPUT_VARIABLE _as RESULT_VARIABLE _as_result)
++   set(_as_result 1)
+    mark_as_advanced(_as)
+    mark_as_advanced(_as_result)
+    if(_as_result) # error code is 0 == OK
diff --git a/graphics/krita/files/patch-git-exiv2-a-e7bf1f0d299 b/graphics/krita/files/patch-git-exiv2-a-e7bf1f0d299
deleted file mode 100644
index 9727deba37d4..000000000000
--- a/graphics/krita/files/patch-git-exiv2-a-e7bf1f0d299
+++ /dev/null
@@ -1,582 +0,0 @@
-From e7bf1f0d299c4f7c6529438059d14e7a99907066 Mon Sep 17 00:00:00 2001
-From: Antonio Rojas <arojas@archlinux.org>
-Date: Sun, 4 Jun 2023 18:04:59 +0200
-Subject: [PATCH] Fix build with exiv2 0.28
-
----
- plugins/impex/jpeg/kis_jpeg_converter.cc     |  8 ++
- plugins/impex/tiff/kis_tiff_export.cc        |  9 +++
- plugins/impex/tiff/kis_tiff_import.cc        |  9 +++
- plugins/metadata/common/KisExiv2IODevice.cpp | 36 +++++++++
- plugins/metadata/common/KisExiv2IODevice.h   | 23 ++++++
- plugins/metadata/common/kis_exiv2_common.h   | 20 +++++
- plugins/metadata/exif/kis_exif_io.cpp        | 79 +++++++++++++++++++-
- plugins/metadata/iptc/kis_iptc_io.cpp        | 12 +++
- plugins/metadata/xmp/kis_xmp_io.cpp          |  9 ++-
- 9 files changed, 200 insertions(+), 5 deletions(-)
-
-diff --git ./plugins/impex/jpeg/kis_jpeg_converter.cc ./plugins/impex/jpeg/kis_jpeg_converter.cc
-index 3364ae6eda7..476151e1234 100644
---- ./plugins/impex/jpeg/kis_jpeg_converter.cc
-+++ ./plugins/impex/jpeg/kis_jpeg_converter.cc
-@@ -20,6 +20,10 @@ extern "C" {
- }
- 
- #include <exiv2/jpgimage.hpp>
-+#include <exiv2/version.hpp>
-+#if EXIV2_TEST_VERSION(0,28,0)
-+#include <exiv2/photoshop.hpp>
-+#endif
- 
- #include <QFile>
- #include <QBuffer>
-@@ -376,7 +380,11 @@ KisImportExportErrorCode KisJPEGConverter::decode(QIODevice *io)
-             uint32_t sizeHdr = 0;
-             // Find actual Iptc data within the APP13 segment
-             if (!Exiv2::Photoshop::locateIptcIrb((Exiv2::byte*)(marker->data + 14),
-+#if EXIV2_TEST_VERSION(0,28,0)
-+                                                 marker->data_length - 14, &record, sizeHdr, sizeIptc)) {
-+#else
-                                                  marker->data_length - 14, &record, &sizeHdr, &sizeIptc)) {
-+#endif
-                 if (sizeIptc) {
-                     // Decode the IPTC data
-                     QByteArray byteArray((const char*)(record + sizeHdr), sizeIptc);
-diff --git ./plugins/impex/tiff/kis_tiff_export.cc ./plugins/impex/tiff/kis_tiff_export.cc
-index 8c8f71d7c08..69cbda63033 100644
---- ./plugins/impex/tiff/kis_tiff_export.cc
-+++ ./plugins/impex/tiff/kis_tiff_export.cc
-@@ -206,7 +206,11 @@ KisImportExportErrorCode KisTIFFExport::convert(KisDocument *document, QIODevice
-         try {
-             KisExiv2IODevice::ptr_type basicIoDevice(new KisExiv2IODevice(filename()));
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            const std::unique_ptr<Exiv2::Image> img = Exiv2::ImageFactory::open(std::move(basicIoDevice));
-+#else
-             const std::unique_ptr<Exiv2::Image> img(Exiv2::ImageFactory::open(basicIoDevice).release());
-+#endif
- 
-             img->readMetadata();
- 
-@@ -241,9 +245,14 @@ KisImportExportErrorCode KisTIFFExport::convert(KisDocument *document, QIODevice
-             }
-             // Write metadata
-             img->writeMetadata();
-+#if EXIV2_TEST_VERSION(0,28,0)
-+        } catch (Exiv2::Error &e) {
-+            errFile << "Failed injecting TIFF metadata:" << Exiv2::Error(e.code()).what();
-+#else
-         } catch (Exiv2::AnyError &e) {
-             errFile << "Failed injecting TIFF metadata:" << e.code()
-                     << e.what();
-+#endif
-         }
-     }
-     return ImportExportCodes::OK;
-diff --git ./plugins/impex/tiff/kis_tiff_import.cc ./plugins/impex/tiff/kis_tiff_import.cc
-index e6d408e923b..5be62bbbf51 100644
---- ./plugins/impex/tiff/kis_tiff_import.cc
-+++ ./plugins/impex/tiff/kis_tiff_import.cc
-@@ -1842,7 +1842,11 @@ KisTIFFImport::convert(KisDocument *document,
-         try {
-             KisExiv2IODevice::ptr_type basicIoDevice(new KisExiv2IODevice(filename()));
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            const std::unique_ptr<Exiv2::Image> readImg = Exiv2::ImageFactory::open(std::move(basicIoDevice));
-+#else
-             const std::unique_ptr<Exiv2::Image> readImg(Exiv2::ImageFactory::open(basicIoDevice).release());
-+#endif
- 
-             readImg->readMetadata();
- 
-@@ -1910,8 +1914,13 @@ KisTIFFImport::convert(KisDocument *document,
- 
-             // Inject the data as any other IOBackend
-             io->loadFrom(layer->metaData(), &ioDevice);
-+#if EXIV2_TEST_VERSION(0,28,0)
-+        } catch (Exiv2::Error &e) {
-+            errFile << "Failed metadata import:" << Exiv2::Error(e.code()).what();
-+#else
-         } catch (Exiv2::AnyError &e) {
-             errFile << "Failed metadata import:" << e.code() << e.what();
-+#endif
-         }
-     }
- 
-diff --git ./plugins/metadata/common/KisExiv2IODevice.cpp ./plugins/metadata/common/KisExiv2IODevice.cpp
-index c62e2d15ae9..bf5cdc2bd63 100644
---- ./plugins/metadata/common/KisExiv2IODevice.cpp
-+++ ./plugins/metadata/common/KisExiv2IODevice.cpp
-@@ -39,7 +39,11 @@ int KisExiv2IODevice::close()
-     return 0;
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+size_t KisExiv2IODevice::write(const Exiv2::byte *data, size_t wcount)
-+#else
- long KisExiv2IODevice::write(const Exiv2::byte *data, long wcount)
-+#endif
- {
-     if (!m_file.isWritable()) {
-         qWarning() << "KisExiv2IODevice: File not open for writing.";
-@@ -53,7 +57,11 @@ long KisExiv2IODevice::write(const Exiv2::byte *data, long wcount)
-     return 0;
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+size_t KisExiv2IODevice::write(Exiv2::BasicIo &src)
-+#else
- long KisExiv2IODevice::write(Exiv2::BasicIo &src)
-+#endif
- {
-     if (static_cast<BasicIo *>(this) == &src) {
-         return 0;
-@@ -88,15 +96,28 @@ int KisExiv2IODevice::putb(Exiv2::byte data)
-     }
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+Exiv2::DataBuf KisExiv2IODevice::read(size_t rcount)
-+#else
- Exiv2::DataBuf KisExiv2IODevice::read(long rcount)
-+#endif
- {
-     Exiv2::DataBuf buf(rcount);
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    const size_t readCount = read(buf.data(), buf.size());
-+    buf.resize(readCount);
-+#else
-     const long readCount = read(buf.pData_, buf.size_);
-     buf.size_ = readCount;
-+#endif
-     return buf;
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+size_t KisExiv2IODevice::read(Exiv2::byte *buf, size_t rcount)
-+#else
- long KisExiv2IODevice::read(Exiv2::byte *buf, long rcount)
-+#endif
- {
-     const qint64 bytesRead = m_file.read(reinterpret_cast<char *>(buf), rcount);
-     if (bytesRead > 0) {
-@@ -202,7 +223,18 @@ int KisExiv2IODevice::munmap()
-     return 0;
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+void KisExiv2IODevice::populateFakeData()
-+{
-+    return;
-+}
-+#endif
-+
-+#if EXIV2_TEST_VERSION(0,28,0)
-+size_t KisExiv2IODevice::tell() const
-+#else
- long KisExiv2IODevice::tell() const
-+#endif
- {
-     return m_file.pos();
- }
-@@ -231,7 +263,11 @@ bool KisExiv2IODevice::eof() const
-     return m_file.atEnd();
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+const std::string& KisExiv2IODevice::path() const noexcept
-+#else
- std::string KisExiv2IODevice::path() const
-+#endif
- {
-     return filePathQString().toStdString();
- }
-diff --git ./plugins/metadata/common/KisExiv2IODevice.h ./plugins/metadata/common/KisExiv2IODevice.h
-index d90831e8325..27f5f8d5fc4 100644
---- ./plugins/metadata/common/KisExiv2IODevice.h
-+++ ./plugins/metadata/common/KisExiv2IODevice.h
-@@ -18,18 +18,30 @@
- class KRITAEXIFCOMMON_EXPORT KisExiv2IODevice : public Exiv2::BasicIo
- {
- public:
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    using ptr_type = Exiv2::BasicIo::UniquePtr;
-+#else
-     using ptr_type = Exiv2::BasicIo::AutoPtr;
-+#endif
- 
-     KisExiv2IODevice(QString path);
-     ~KisExiv2IODevice() override;
- 
-     int open() override;
-     int close() override;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    size_t write(const Exiv2::byte *data, size_t wcount) override;
-+    size_t write(Exiv2::BasicIo &src) override;
-+    int putb(Exiv2::byte data) override;
-+    Exiv2::DataBuf read(size_t rcount) override;
-+    size_t read(Exiv2::byte *buf, size_t rcount) override;
-+#else
-     long write(const Exiv2::byte *data, long wcount) override;
-     long write(Exiv2::BasicIo &src) override;
-     int putb(Exiv2::byte data) override;
-     Exiv2::DataBuf read(long rcount) override;
-     long read(Exiv2::byte *buf, long rcount) override;
-+#endif
-     int getb() override;
-     void transfer(BasicIo &src) override;
- #if defined(_MSC_VER)
-@@ -39,13 +51,24 @@ public:
- #endif
- 
-     Exiv2::byte *mmap(bool isWriteable = false) override;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    void populateFakeData() override;
-+#endif
-     int munmap() override;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    size_t tell() const override;
-+#else
-     long tell() const override;
-+#endif
-     size_t size() const override;
-     bool isopen() const override;
-     int error() const override;
-     bool eof() const override;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    const std::string& path() const noexcept override;
-+#else
-     std::string path() const override;
-+#endif
- 
- private:
-     bool open(QFile::OpenMode mode);
---- ./plugins/metadata/common/kis_exiv2_common.h
-+++ ./plugins/metadata/common/kis_exiv2_common.h
-@@ -19,9 +19,13 @@
- 
- // Convert an exiv value to a KisMetaData value
- inline KisMetaData::Value
-+#if EXIV2_TEST_VERSION(0,28,0)
-+exivValueToKMDValue(const Exiv2::Value::UniquePtr &value, bool forceSeq, KisMetaData::Value::ValueType arrayType = KisMetaData::Value::UnorderedArray)
-+#else
- exivValueToKMDValue(const Exiv2::Value::AutoPtr value,
-                     bool forceSeq,
-                     KisMetaData::Value::ValueType arrayType = KisMetaData::Value::UnorderedArray)
-+#endif
- {
-     switch (value->typeId()) {
-     case Exiv2::signedByte:
-@@ -42,11 +46,19 @@
-     case Exiv2::signedShort:
-     case Exiv2::signedLong: {
-         if (value->count() == 1 && !forceSeq) {
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            return {static_cast<int>(value->toUint32())};
-+#else
-             return KisMetaData::Value((int)value->toLong());
-+#endif
-         } else {
-             QList<KisMetaData::Value> array;
-             for (int i = 0; i < value->count(); i++)
-+#if EXIV2_TEST_VERSION(0,28,0)
-+                array.push_back({static_cast<int>(value->toUint32(i))});
-+#else
-                 array.push_back(KisMetaData::Value((int)value->toLong(i)));
-+#endif
-             return KisMetaData::Value(array, arrayType);
-         }
-     }
-@@ -63,7 +75,11 @@
-             return {KisMetaData::Rational(value->toRational().first, value->toRational().second)};
-         } else {
-             QList<KisMetaData::Value> array;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            for (size_t i = 0; i < value->count(); i++) {
-+#else
-             for (long i = 0; i < value->count(); i++) {
-+#endif
-                 array.push_back(KisMetaData::Rational(value->toRational(i).first, value->toRational(i).second));
-             }
-             return KisMetaData::Value(array, arrayType);
-@@ -77,7 +93,11 @@
-             return KisMetaData::Value(KisMetaData::Rational(value->toRational().first, value->toRational().second));
-         } else {
-             QList<KisMetaData::Value> array;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            for (size_t i = 0; i < value->count(); i++) {
-+#else
-             for (long i = 0; i < value->count(); i++) {
-+#endif
-                 array.push_back(KisMetaData::Rational(value->toRational(i).first, value->toRational(i).second));
-             }
-             return KisMetaData::Value(array, arrayType);
-diff --git ./plugins/metadata/exif/kis_exif_io.cpp ./plugins/metadata/exif/kis_exif_io.cpp
-index a3ee6927fca..a3b903afcb5 100644
---- ./plugins/metadata/exif/kis_exif_io.cpp
-+++ ./plugins/metadata/exif/kis_exif_io.cpp
-@@ -31,7 +31,11 @@
- // ---- Exception conversion functions ---- //
- 
- // convert ExifVersion and FlashpixVersion to a KisMetaData value
-+#if EXIV2_TEST_VERSION(0,28,0)
-+KisMetaData::Value exifVersionToKMDValue(const Exiv2::Value::UniquePtr value)
-+#else
- KisMetaData::Value exifVersionToKMDValue(const Exiv2::Value::AutoPtr value)
-+#endif
- {
-     const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value);
-     if (dvalue) {
-@@ -55,13 +59,22 @@ Exiv2::Value *kmdValueToExifVersion(const KisMetaData::Value &value)
- }
- 
- // Convert an exif array of integer string to a KisMetaData array of integer
-+#if EXIV2_TEST_VERSION(0,28,0)
-+KisMetaData::Value exifArrayToKMDIntOrderedArray(const Exiv2::Value::UniquePtr value)
-+#else
- KisMetaData::Value exifArrayToKMDIntOrderedArray(const Exiv2::Value::AutoPtr value)
-+#endif
- {
-     QList<KisMetaData::Value> v;
-     const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value);
-     if (dvalue) {
-+#if EXIV2_TEST_VERSION(0,28,0)
-+        for (size_t i = 0; i < dvalue->count(); i++) {
-+            v.push_back({(int)dvalue->toUint32(i)});
-+#else
-         for (long i = 0; i < dvalue->count(); i++) {
-             v.push_back({(int)dvalue->toLong(i)});
-+#endif
-         }
-     } else {
-         Q_ASSERT(value->typeId() == Exiv2::asciiString);
-@@ -81,7 +94,11 @@ Exiv2::Value *kmdIntOrderedArrayToExifArray(const KisMetaData::Value &value)
-     return new Exiv2::DataValue(v.data(), static_cast<long>(v.size()));
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+QDateTime exivValueToDateTime(const Exiv2::Value::UniquePtr value)
-+#else
- QDateTime exivValueToDateTime(const Exiv2::Value::AutoPtr value)
-+#endif
- {
-     return QDateTime::fromString(value->toString().c_str(), Qt::ISODate);
- }
-@@ -115,7 +132,11 @@ Exiv2::ByteOrder invertByteOrder(Exiv2::ByteOrder order)
-     return Exiv2::invalidByteOrder;
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::UniquePtr value, Exiv2::ByteOrder order)
-+#else
- KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value, Exiv2::ByteOrder order)
-+#endif
- {
-     QMap<QString, KisMetaData::Value> oecfStructure;
-     const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value);
-@@ -123,22 +144,39 @@ KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value,
-     QByteArray array(dvalue->count(), 0);
- 
-     dvalue->copy((Exiv2::byte *)array.data());
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    size_t columns = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[0], order);
-+    size_t rows = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[1], order);
-+#else
-     int columns = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[0], order);
-     int rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[1], order);
-+#endif
- 
-     if ((columns * rows + 4)
-         > dvalue->count()) { // Sometime byteOrder get messed up (especially if metadata got saved with kexiv2 library,
-                              // or any library that doesn't save back with the same byte order as the camera)
-         order = invertByteOrder(order);
-+#if EXIV2_TEST_VERSION(0,28,0)
-+        columns = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[0], order);
-+        rows = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[1], order);
-+#else
-         columns = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[0], order);
-         rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[1], order);
-+#endif
-         Q_ASSERT((columns * rows + 4) > dvalue->count());
-     }
--    oecfStructure["Columns"] = KisMetaData::Value(columns);
--    oecfStructure["Rows"] = KisMetaData::Value(rows);
-+    QVariant qcolumns, qrows;
-+    qcolumns.setValue(columns);
-+    qrows.setValue(rows);
-+    oecfStructure["Columns"] = KisMetaData::Value(qcolumns);
-+    oecfStructure["Rows"] = KisMetaData::Value(qrows);
-     int index = 4;
-     QList<KisMetaData::Value> names;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    for (size_t i = 0; i < columns; i++) {
-+#else
-     for (int i = 0; i < columns; i++) {
-+#endif
-         int lastIndex = array.indexOf((char)0, index);
-         QString name = array.mid(index, lastIndex - index);
-         if (index != lastIndex) {
-@@ -153,8 +191,13 @@ KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value,
-     oecfStructure["Names"] = KisMetaData::Value(names, KisMetaData::Value::OrderedArray);
-     QList<KisMetaData::Value> values;
-     qint32 *dataIt = reinterpret_cast<qint32 *>(array.data() + index);
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    for (size_t i = 0; i < columns; i++) {
-+        for (size_t j = 0; j < rows; j++) {
-+#else
-     for (int i = 0; i < columns; i++) {
-         for (int j = 0; j < rows; j++) {
-+#endif
-             values.append(KisMetaData::Value(
-                 KisMetaData::Rational(fixEndianess<qint32>(dataIt[0], order), fixEndianess<qint32>(dataIt[1], order))));
-             dataIt += 2;
-@@ -202,7 +245,11 @@ Exiv2::Value *kmdOECFStructureToExifOECF(const KisMetaData::Value &value)
-     return new Exiv2::DataValue((const Exiv2::byte *)array.data(), array.size());
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+KisMetaData::Value deviceSettingDescriptionExifToKMD(const Exiv2::Value::UniquePtr value)
-+#else
- KisMetaData::Value deviceSettingDescriptionExifToKMD(const Exiv2::Value::AutoPtr value)
-+#endif
- {
-     QMap<QString, KisMetaData::Value> deviceSettingStructure;
-     QByteArray array;
-@@ -258,15 +305,24 @@ Exiv2::Value *deviceSettingDescriptionKMDToExif(const KisMetaData::Value &value)
-     return new Exiv2::DataValue((const Exiv2::byte *)array.data(), array.size());
- }
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::UniquePtr value, Exiv2::ByteOrder order)
-+#else
- KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::AutoPtr value, Exiv2::ByteOrder order)
-+#endif
- {
-     QMap<QString, KisMetaData::Value> cfaPatternStructure;
-     const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value);
-     Q_ASSERT(dvalue);
-     QByteArray array(dvalue->count(), 0);
-     dvalue->copy((Exiv2::byte *)array.data());
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    size_t columns = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[0], order);
-+    size_t rows = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[1], order);
-+#else
-     int columns = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[0], order);
-     int rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[1], order);
-+#endif
-     if ((columns * rows + 4)
-         != dvalue->count()) { // Sometime byteOrder get messed up (especially if metadata got saved with kexiv2 library,
-                               // or any library that doesn't save back with the same byte order as the camera)
-@@ -275,8 +331,11 @@ KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::AutoPtr value, Exiv2:
-         rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[1], order);
-         Q_ASSERT((columns * rows + 4) == dvalue->count());
-     }
--    cfaPatternStructure["Columns"] = KisMetaData::Value(columns);
--    cfaPatternStructure["Rows"] = KisMetaData::Value(rows);
-+    QVariant qcolumns, qrows;
-+    qcolumns.setValue(columns);
-+    qrows.setValue(rows);
-+    cfaPatternStructure["Columns"] = KisMetaData::Value(qcolumns);
-+    cfaPatternStructure["Rows"] = KisMetaData::Value(qrows);
-     QList<KisMetaData::Value> values;
-     int index = 4;
-     for (int i = 0; i < columns * rows; i++) {
-@@ -310,9 +369,17 @@ Exiv2::Value *cfaPatternKMDToExif(const KisMetaData::Value &value)
- 
- // Read and write Flash //
- 
-+#if EXIV2_TEST_VERSION(0,28,0)
-+KisMetaData::Value flashExifToKMD(const Exiv2::Value::UniquePtr value)
-+#else
- KisMetaData::Value flashExifToKMD(const Exiv2::Value::AutoPtr value)
-+#endif
- {
-+#if EXIV2_TEST_VERSION(0,28,0)
-+    const uint16_t v = static_cast<uint16_t>(value->toUint32());
-+#else
-     const uint16_t v = static_cast<uint16_t>(value->toLong());
-+#endif
-     QMap<QString, KisMetaData::Value> flashStructure;
-     bool fired = (v & 0x01); // bit 1 is whether flash was fired or not
-     flashStructure["Fired"] = QVariant(fired);
-@@ -465,7 +532,11 @@ bool KisExifIO::saveTo(const KisMetaData::Store *store, QIODevice *ioDevice, Hea
-                                 << exivKey; // << " of KMD value" << entry.value();
-                 }
-             }
-+#if EXIV2_TEST_VERSION(0,28,0)
-+        } catch (Exiv2::Error &e) {
-+#else
-         } catch (Exiv2::AnyError &e) {
-+#endif
-             dbgMetaData << "exiv error " << e.what();
-         }
-     }
-diff --git ./plugins/metadata/iptc/kis_iptc_io.cpp ./plugins/metadata/iptc/kis_iptc_io.cpp
-index 9e85624644d..88d80b38b8d 100644
---- ./plugins/metadata/iptc/kis_iptc_io.cpp
-+++ ./plugins/metadata/iptc/kis_iptc_io.cpp
-@@ -109,7 +109,11 @@ bool KisIptcIO::saveTo(const KisMetaData::Store *store, QIODevice *ioDevice, Hea
-                 if (v && v->typeId() != Exiv2::invalidTypeId) {
-                     iptcData.add(iptcKey, v);
-                 }
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            } catch (Exiv2::Error &e) {
-+#else
-             } catch (Exiv2::AnyError &e) {
-+#endif
-                 dbgMetaData << "exiv error " << e.what();
-             }
-         }
-@@ -127,7 +131,11 @@ bool KisIptcIO::saveTo(const KisMetaData::Store *store, QIODevice *ioDevice, Hea
-         header.append(photoshopBimId_);
-         header.append(photoshopIptc_);
-         header.append(QByteArray(2, 0));
-+#if EXIV2_TEST_VERSION(0, 28, 0)
-+        qint32 size = rawData.size();
-+#else
-         qint32 size = rawData.size_;
-+#endif
-         QByteArray sizeArray(4, 0);
-         sizeArray[0] = (char)((size & 0xff000000) >> 24);
-         sizeArray[1] = (char)((size & 0x00ff0000) >> 16);
-@@ -137,7 +145,11 @@ bool KisIptcIO::saveTo(const KisMetaData::Store *store, QIODevice *ioDevice, Hea
-         ioDevice->write(header);
-     }
- 
-+#if EXIV2_TEST_VERSION(0, 28, 0)
-+    ioDevice->write((const char *)rawData.data(), rawData.size());
-+#else
-     ioDevice->write((const char *)rawData.pData_, rawData.size_);
-+#endif
-     ioDevice->close();
-     return true;
- }
-diff --git ./plugins/metadata/xmp/kis_xmp_io.cpp ./plugins/metadata/xmp/kis_xmp_io.cpp
-index a1003175455..927abe8dddf 100644
---- ./plugins/metadata/xmp/kis_xmp_io.cpp
-+++ ./plugins/metadata/xmp/kis_xmp_io.cpp
-@@ -249,8 +249,11 @@ bool KisXMPIO::loadFrom(KisMetaData::Store *store, QIODevice *ioDevice) const
-                     Q_ASSERT(schema);
-                 }
-             }
-+#if EXIV2_TEST_VERSION(0,28,0)
-+            const Exiv2::Value::UniquePtr value = it->getValue();
-+#else
-             const Exiv2::Value::AutoPtr value = it->getValue();
--
-+#endif
-             QString structName;
-             int arrayIndex = -1;
-             QString tagName;
-@@ -279,7 +282,11 @@ bool KisXMPIO::loadFrom(KisMetaData::Store *store, QIODevice *ioDevice) const
-                 const Exiv2::XmpArrayValue *xav = dynamic_cast<const Exiv2::XmpArrayValue *>(value.get());
-                 Q_ASSERT(xav);
-                 QList<KisMetaData::Value> array;
-+#if EXIV2_TEST_VERSION(0,28,0)
-+                for (size_t i = 0; i < xav->count(); ++i) {
-+#else
-                 for (int i = 0; i < xav->count(); ++i) {
-+#endif
-                     QString value = QString::fromStdString(xav->toString(i));
-                     if (parser) {
-                         array.push_back(parser->parse(value));
diff --git a/graphics/krita/files/patch-git_e9184281 b/graphics/krita/files/patch-git_e9184281
deleted file mode 100644
index 4ea688709d74..000000000000
--- a/graphics/krita/files/patch-git_e9184281
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/plugins/impex/heif/HeifExport.cpp b/plugins/impex/heif/HeifExport.cpp
-index c7376a6798aa6ba364fa414864086b00b9cbf3a1..c46db548bb979391166c545fc913bd0f8ff90eda 100644
---- plugins/impex/heif/HeifExport.cpp
-+++ plugins/impex/heif/HeifExport.cpp
-@@ -403,7 +403,11 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
-            nclxDescription.set_full_range_flag(true);
-            nclxDescription.set_matrix_coefficients(heif_matrix_coefficients_RGB_GBR);
-            if (convertToRec2020) {
-+#if LIBHEIF_HAVE_VERSION(1, 14, 1)
-+               nclxDescription.set_color_primaries(heif_color_primaries_ITU_R_BT_2020_2_and_2100_0);
-+#else
-                nclxDescription.set_color_primaties(heif_color_primaries_ITU_R_BT_2020_2_and_2100_0);
-+#endif
-            } else {
-                const ColorPrimaries primaries =
-                    image->colorSpace()->profile()->getColorPrimaries();
-@@ -413,7 +417,11 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
-                KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(
-                    primaries >= PRIMARIES_ADOBE_RGB_1998,
-                    ImportExportCodes::FormatColorSpaceUnsupported);
-+#if LIBHEIF_HAVE_VERSION(1, 14, 1)
-+               nclxDescription.set_color_primaries(heif_color_primaries(primaries));
-+#else
-                nclxDescription.set_color_primaties(heif_color_primaries(primaries));
-+#endif
-            }
- 
-            if (conversionPolicy == ConversionPolicy::ApplyPQ) {
diff --git a/graphics/krita/files/patch-plugins_impex_CMakeLists.txt b/graphics/krita/files/patch-plugins_impex_CMakeLists.txt
new file mode 100644
index 000000000000..b531d1938b22
--- /dev/null
+++ b/graphics/krita/files/patch-plugins_impex_CMakeLists.txt
@@ -0,0 +1,18 @@
+Enable the OpenJPEG import plugin on FreeBSD. Not much information is given
+in the upstream commit that disabled it almost 4 years ago, other than "it's
+broken". It seems to be working now, though. Builds and was run tested with
+a few example jp2 images.
+
+Reverts: https://invent.kde.org/graphics/krita/-/commit/0018d78eeb099aaff7c606b75588cf1b07fe51dd
+
+--- plugins/impex/CMakeLists.txt.orig	2023-10-06 01:42:10 UTC
++++ plugins/impex/CMakeLists.txt
+@@ -23,7 +23,7 @@ endif()
+     add_subdirectory(pdf)
+ endif()
+ 
+-if(OpenJPEG_FOUND AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
++if(OpenJPEG_FOUND)
+     add_subdirectory(jp2)
+ endif()
+ 
diff --git a/graphics/krita/files/patch-plugins_paintops_mypaint_CMakeLists.txt b/graphics/krita/files/patch-plugins_paintops_mypaint_CMakeLists.txt
deleted file mode 100644
index c4f08da0fa82..000000000000
--- a/graphics/krita/files/patch-plugins_paintops_mypaint_CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- plugins/paintops/mypaint/CMakeLists.txt.orig	2022-09-13 10:01:49 UTC
-+++ plugins/paintops/mypaint/CMakeLists.txt
-@@ -23,7 +23,7 @@ kis_add_library(kritamypaintop_static STATIC ${kritamy
- 
- kis_add_library(kritamypaintop_static STATIC ${kritamypaintop_SOURCES})
- 
--target_link_libraries(kritamypaintop_static kritalibpaintop mypaint kritawidgetutils kritaui kritalibbrush kritaresources)
-+target_link_libraries(kritamypaintop_static kritalibpaintop ${LibMyPaint_LIBRARY} kritawidgetutils kritaui kritalibbrush kritaresources)
- 
- kis_add_library(kritamypaintop MODULE MyPaintPaintOpPlugin.cpp)
- 
diff --git a/graphics/krita/pkg-plist b/graphics/krita/pkg-plist
index 5859b773117b..38018c294e75 100644
--- a/graphics/krita/pkg-plist
+++ b/graphics/krita/pkg-plist
@@ -65,11 +65,6 @@ lib/kritaplugins/kritaembossfilter.so
 lib/kritaplugins/kritaexample.so
 lib/kritaplugins/kritaexif.so
 lib/kritaplugins/kritaexperimentpaintop.so
-lib/kritaplugins/kritaiptc.so
-lib/kritaplugins/kritajxlexport.so
-lib/kritaplugins/kritajxlimport.so
-lib/kritaplugins/kritatoolencloseandfill.so
-lib/kritaplugins/kritaxmp.so
 %%OPENEXR%%lib/kritaplugins/kritaexrexport.so
 %%OPENEXR%%lib/kritaplugins/kritaexrimport.so
 lib/kritaplugins/kritaextensioncolorsfilters.so
@@ -95,8 +90,12 @@ lib/kritaplugins/kritahistorydocker.so
 lib/kritaplugins/kritaimageenhancement.so
 lib/kritaplugins/kritaimagesplit.so
 lib/kritaplugins/kritaindexcolors.so
+lib/kritaplugins/kritaiptc.so
+lib/kritaplugins/kritajp2import.so
 lib/kritaplugins/kritajpegexport.so
 lib/kritaplugins/kritajpegimport.so
+lib/kritaplugins/kritajxlexport.so
+lib/kritaplugins/kritajxlimport.so
 lib/kritaplugins/kritakraexport.so
 lib/kritaplugins/kritakraimport.so
 lib/kritaplugins/kritakrzexport.so
@@ -145,6 +144,7 @@ lib/kritaplugins/kritaresourcemanager.so
 lib/kritaplugins/kritarotateimage.so
 lib/kritaplugins/kritaroundcornersfilter.so
 lib/kritaplugins/kritaroundmarkerpaintop.so
+lib/kritaplugins/kritasamplescreencolor.so
 lib/kritaplugins/kritascreentonegenerator.so
 %%OPENEXR%%lib/kritaplugins/kritaseexprgenerator.so
 lib/kritaplugins/kritaselectiontools.so
@@ -171,6 +171,7 @@ lib/kritaplugins/kritatiffimport.so
 lib/kritaplugins/kritatoolSmartPatch.so
 lib/kritaplugins/kritatoolcrop.so
 lib/kritaplugins/kritatooldyna.so
+lib/kritaplugins/kritatoolencloseandfill.so
 lib/kritaplugins/kritatoollazybrush.so
 lib/kritaplugins/kritatoolpolygon.so
 lib/kritaplugins/kritatoolpolyline.so
@@ -181,7 +182,9 @@ lib/kritaplugins/kritawavefilter.so
 lib/kritaplugins/kritawaveletdecompose.so
 lib/kritaplugins/kritawebpexport.so
 lib/kritaplugins/kritawebpimport.so
+lib/kritaplugins/kritawgcolorselector.so
 lib/kritaplugins/kritaxcfimport.so
+lib/kritaplugins/kritaxmp.so
 lib/libkritabasicflakes.so
 lib/libkritabasicflakes.so.%%SHLIB_SHVER%%
 lib/libkritabasicflakes.so.%%SHLIB_VER%%
@@ -224,6 +227,9 @@ lib/libkritalibpaintop.so.%%SHLIB_VER%%
 lib/libkritametadata.so
 lib/libkritametadata.so.%%SHLIB_SHVER%%
 lib/libkritametadata.so.%%SHLIB_VER%%
+lib/libkritamultiarch.so
+lib/libkritamultiarch.so.%%SHLIB_SHVER%%
+lib/libkritamultiarch.so.%%SHLIB_VER%%
 lib/libkritapigment.so
 lib/libkritapigment.so.%%SHLIB_SHVER%%
 lib/libkritapigment.so.%%SHLIB_VER%%
@@ -234,7 +240,7 @@ lib/libkritapsd.so
 lib/libkritapsd.so.%%SHLIB_SHVER%%
 lib/libkritapsd.so.%%SHLIB_VER%%
 lib/libkritapsdutils.so
-lib/libkritapsdutils.so.18
+lib/libkritapsdutils.so.%%SHLIB_SHVER%%
 lib/libkritapsdutils.so.%%SHLIB_VER%%
 lib/libkritaqmicinterface.so
 lib/libkritaqmicinterface.so.%%SHLIB_SHVER%%
@@ -251,12 +257,12 @@ lib/libkritaresourcewidgets.so.%%SHLIB_VER%%
 lib/libkritastore.so
 lib/libkritastore.so.%%SHLIB_SHVER%%
 lib/libkritastore.so.%%SHLIB_VER%%
+lib/libkritatiffpsd.so
 lib/libkritatiffpsd.so.%%SHLIB_SHVER%%
 lib/libkritatiffpsd.so.%%SHLIB_VER%%
 lib/libkritaui.so
 lib/libkritaui.so.%%SHLIB_SHVER%%
 lib/libkritaui.so.%%SHLIB_VER%%
-lib/libkritatiffpsd.so
 lib/libkritaversion.so
 lib/libkritaversion.so.%%SHLIB_SHVER%%
 lib/libkritaversion.so.%%SHLIB_VER%%
@@ -307,6 +313,7 @@ share/applications/krita_csv.desktop
 share/applications/krita_gif.desktop
 share/applications/krita_heif.desktop
 share/applications/krita_heightmap.desktop
+share/applications/krita_jp2.desktop
 share/applications/krita_jpeg.desktop
 share/applications/krita_jxl.desktop
 share/applications/krita_kra.desktop
@@ -406,6 +413,7 @@ share/icons/hicolor/scalable/apps/krita.svgz
 %%DATADIR%%/actions/MoveTool.action
 %%DATADIR%%/actions/PathTool.action
 %%DATADIR%%/actions/SvgTextTool.action
*** 67 LINES SKIPPED ***