aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason E. Hale <jhale@FreeBSD.org>2023-10-06 03:38:25 +0000
committerJason E. Hale <jhale@FreeBSD.org>2023-10-06 04:16:22 +0000
commit9805a6ffb5a78d3fe0c091ae392924ee44441770 (patch)
treebfea36a5c746434c244c38228520f9702aca982f
parent3f6b9409115486a14f8e0685d7dd5b9ffd6ec8ea (diff)
downloadports-9805a6ffb5a78d3fe0c091ae392924ee44441770.tar.gz
ports-9805a6ffb5a78d3fe0c091ae392924ee44441770.zip
graphics/krita: Update to 5.2.0
-rw-r--r--graphics/krita-gmic-plugin/Makefile1
-rw-r--r--graphics/krita/Makefile65
-rw-r--r--graphics/krita/distinfo8
-rw-r--r--graphics/krita/files/patch-3rdparty__vendor_raqm_CMakeLists.txt12
-rw-r--r--graphics/krita/files/patch-cmake_modules_FindOpenJPEG.cmake13
-rw-r--r--graphics/krita/files/patch-cmake_modules_xsimd_xsimdMacros.cmake15
-rw-r--r--graphics/krita/files/patch-git-exiv2-a-e7bf1f0d299582
-rw-r--r--graphics/krita/files/patch-git_e918428128
-rw-r--r--graphics/krita/files/patch-plugins_impex_CMakeLists.txt18
-rw-r--r--graphics/krita/files/patch-plugins_paintops_mypaint_CMakeLists.txt11
-rw-r--r--graphics/krita/pkg-plist37
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
+%%DATADIR%%/actions/WGColorSelector.action
%%DATADIR%%/actions/asccdl.action
%%DATADIR%%/actions/colorsfilters.action
%%DATADIR%%/actions/convertheightnormalmap.action
@@ -417,13 +425,16 @@ share/icons/hicolor/scalable/apps/krita.svgz
%%DATADIR%%/actions/kritamenu.action
%%DATADIR%%/actions/normalize.action
%%DATADIR%%/actions/palettize.action
+%%PYTHON%%%%DATADIR%%/actions/plugin_importer.action
%%DATADIR%%/actions/recorder.action
+%%PYTHON%%%%DATADIR%%/actions/tenbrushes.action
+%%PYTHON%%%%DATADIR%%/actions/tenscripts.action
%%DATADIR%%/actions/threshold.action
%%DATADIR%%/actions/tools.action
%%DATADIR%%/brushes/triangle.svg
%%DATADIR%%/bundles/Krita_3_Default_Resources.bundle
%%DATADIR%%/bundles/Krita_4_Default_Resources.bundle
-%%OPENEXR%%%%DATADIR%%/bundles/Krita_Artists_SeExpr_examples.bundle
+%%DATADIR%%/bundles/Krita_Artists_SeExpr_examples.bundle
%%DATADIR%%/bundles/README
%%DATADIR%%/bundles/RGBA_brushes.bundle
%%DATADIR%%/donation/banner.png
@@ -469,6 +480,7 @@ share/icons/hicolor/scalable/apps/krita.svgz
%%DATADIR%%/images/krita-tangentnormal-preview.png
%%DATADIR%%/images/krita-tangentnormal.png
%%DATADIR%%/images/krita_roundmarkerop.svg
+%%DATADIR%%/input/clipstudiopaintcompatible.profile
%%DATADIR%%/input/kritadefault.profile
%%DATADIR%%/input/painttoolsaicompatible.profile
%%DATADIR%%/input/photoshopcompatible.profile
@@ -787,8 +799,8 @@ share/icons/hicolor/scalable/apps/krita.svgz
%%DATADIR%%/preset_icons/tool_icons/09_04_knife-rake.png
%%DATADIR%%/preset_icons/tool_icons/09_05_paint-roller.png
%%DATADIR%%/preset_icons/tool_icons/10_01_color-effect.png
-%%DATADIR%%/preset_icons/tool_icons/10_02_adjustement-contrast.png
-%%DATADIR%%/preset_icons/tool_icons/10_03_adjustement-dark.png
+%%DATADIR%%/preset_icons/tool_icons/10_02_adjustment-contrast.png
+%%DATADIR%%/preset_icons/tool_icons/10_03_adjustment-dark.png
%%DATADIR%%/preset_icons/tool_icons/10_04_filter.png
%%DATADIR%%/preset_icons/tool_icons/10_05_deform.png
%%DATADIR%%/preset_icons/tool_icons/10_06_clone.png
@@ -810,9 +822,6 @@ share/icons/hicolor/scalable/apps/krita.svgz
%%DATADIR%%/preset_icons/tool_icons/12_09_Pastel_Bar_01.png
%%DATADIR%%/preset_icons/tool_icons/12_10_Pastel_Bar_04.png
%%DATADIR%%/preset_icons/tool_icons/12_11_Pastel_Bar_02.png
-%%PYTHON%%%%DATADIR%%/actions/plugin_importer.action
-%%PYTHON%%%%DATADIR%%/actions/tenbrushes.action
-%%PYTHON%%%%DATADIR%%/actions/tenscripts.action
%%PYTHON%%%%DATADIR%%/pykrita/assignprofiledialog/Manual.html
%%PYTHON%%%%DATADIR%%/pykrita/assignprofiledialog/__init__.py
%%PYTHON%%%%DATADIR%%/pykrita/assignprofiledialog/assignprofiledialog.py
@@ -1145,6 +1154,7 @@ share/icons/hicolor/scalable/apps/krita.svgz
%%DATADIR%%/qmlthemes/default/sizes.js
%%DATADIR%%/qmlthemes/default/theme.qml
%%OPENEXR%%%%DATADIR%%/seexpr_scripts/Disney_noisecolor2.kse
+%%DATADIR%%/shortcuts/clip_studio_paint_compatible.shortcuts
%%DATADIR%%/shortcuts/krita_default.shortcuts
%%DATADIR%%/shortcuts/paint_tool_sai_compatible.shortcuts
%%DATADIR%%/shortcuts/photoshop_compatible.shortcuts
@@ -1243,6 +1253,7 @@ share/kritaplugins/modify_selection.xmlgui
share/kritaplugins/offsetimage.xmlgui
share/kritaplugins/resourcemanager.xmlgui
share/kritaplugins/rotateimage.xmlgui
+share/kritaplugins/samplescreencolor.xmlgui
share/kritaplugins/shearimage.xmlgui
share/kritaplugins/waveletdecompose.xmlgui
share/locale/af/LC_MESSAGES/krita.mo