From ebe0ed7098715aff1ea56362a60bf95aaec944a8 Mon Sep 17 00:00:00 2001 From: Gerasim Troeglazov <3dEyes@gmail.com> Date: Thu, 14 Mar 2024 21:16:37 +1000 Subject: [PATCH] krita: bump version --- ...{krita-4.4.8.recipe => krita-5.2.2.recipe} | 87 +++-- media-gfx/krita/patches/krita-4.4.8.patchset | 316 ------------------ media-gfx/krita/patches/krita-5.2.2.patchset | 254 ++++++++++++++ 3 files changed, 317 insertions(+), 340 deletions(-) rename media-gfx/krita/{krita-4.4.8.recipe => krita-5.2.2.recipe} (73%) delete mode 100644 media-gfx/krita/patches/krita-4.4.8.patchset create mode 100644 media-gfx/krita/patches/krita-5.2.2.patchset diff --git a/media-gfx/krita/krita-4.4.8.recipe b/media-gfx/krita/krita-5.2.2.recipe similarity index 73% rename from media-gfx/krita/krita-4.4.8.recipe rename to media-gfx/krita/krita-5.2.2.recipe index a0fe48e36..5e41aab8f 100644 --- a/media-gfx/krita/krita-4.4.8.recipe +++ b/media-gfx/krita/krita-5.2.2.recipe @@ -4,14 +4,13 @@ for digital painting and animation purposes. It features a low-distract UI, high OpenGL accelerated canvas, color management support, advanced brush engine, non-destructive \ layers and masks, group-based layer management, vector artwork support and switchable customization profiles." HOMEPAGE="https://www.krita.org/" -COPYRIGHT="2010-2021 KDE Organisation" +COPYRIGHT="2010-2023 KDE Organisation" LICENSE="GNU LGPL v2" REVISION="1" SOURCE_URI="https://download.kde.org/stable/krita/$portVersion/krita-$portVersion.tar.xz" -CHECKSUM_SHA256="45112bf9d59beaf70de1e221699711a66b617a680d07e59d037d3b93ae77f450" +CHECKSUM_SHA256="41515784d65b5bf12919df909f7406dc90f37076587b8c459ef2abd569a71adb" SOURCE_DIR="krita-$portVersion" -PATCHES="krita-$portVersion.patchset - krita-openexr3.patch" +PATCHES="krita-$portVersion.patchset" ADDITIONAL_FILES=" krita.rdef.in icons.zip @@ -26,17 +25,28 @@ PROVIDES=" " REQUIRES=" haiku$secondaryArchSuffix + lib:libavcodec$secondaryArchSuffix + lib:libavdevice$secondaryArchSuffix + lib:libavformat$secondaryArchSuffix + lib:libavutil$secondaryArchSuffix lib:libboost_system$secondaryArchSuffix lib:libexiv2$secondaryArchSuffix lib:libexpat$secondaryArchSuffix lib:libfftw3$secondaryArchSuffix - lib:libgif$secondaryArchSuffix >= 7 + lib:libfreetype$secondaryArchSuffix + lib:libfribidi$secondaryArchSuffix + lib:libfontconfig$secondaryArchSuffix + lib:libgif$secondaryArchSuffix lib:libgsl$secondaryArchSuffix + lib:libharfbuzz$secondaryArchSuffix + lib:libheif$secondaryArchSuffix lib:libiconv$secondaryArchSuffix lib:libIex_3_0$secondaryArchSuffix lib:libIlmThread_3_0$secondaryArchSuffix lib:libImath_3_0$secondaryArchSuffix lib:libintl$secondaryArchSuffix + lib:libjpeg$secondaryArchSuffix + lib:libjson_c$secondaryArchSuffix lib:libKF5Archive$secondaryArchSuffix lib:libKF5Auth$secondaryArchSuffix lib:libKF5Bookmarks$secondaryArchSuffix @@ -53,6 +63,7 @@ REQUIRES=" lib:libKF5ItemModels$secondaryArchSuffix lib:libKF5ItemViews$secondaryArchSuffix lib:libKF5JobWidgets$secondaryArchSuffix + lib:libKF5KDcraw$secondaryArchSuffix lib:libKF5KDELibs4Support$secondaryArchSuffix lib:libKF5KIOCore$secondaryArchSuffix lib:libKF5KIOFileWidgets$secondaryArchSuffix @@ -68,10 +79,13 @@ REQUIRES=" lib:libKF5WindowSystem$secondaryArchSuffix lib:libKF5XmlGui$secondaryArchSuffix lib:liblcms2$secondaryArchSuffix + lib:libmypaint$secondaryArchSuffix lib:libOpenColorIO$secondaryArchSuffix lib:libOpenEXR_3_0$secondaryArchSuffix lib:libOpenEXRUtil_3_0$secondaryArchSuffix + lib:libopenjp2$secondaryArchSuffix lib:libpng16$secondaryArchSuffix + lib:libpoppler$secondaryArchSuffix lib:libpoppler_qt5$secondaryArchSuffix lib:libQt5Concurrent$secondaryArchSuffix lib:libQt5Core$secondaryArchSuffix @@ -84,23 +98,41 @@ REQUIRES=" lib:libQt5Xml$secondaryArchSuffix lib:libquazip5$secondaryArchSuffix lib:libraw$secondaryArchSuffix + lib:libswscale$secondaryArchSuffix + lib:libtiff$secondaryArchSuffix + lib:libturbojpeg$secondaryArchSuffix + lib:libunibreak$secondaryArchSuffix + lib:libwebp$secondaryArchSuffix lib:libz$secondaryArchSuffix " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel - extra_cmake_modules$secondaryArchSuffix >= 5.80 + extra_cmake_modules$secondaryArchSuffix devel:eigen$secondaryArchSuffix - devel:libboost_system$secondaryArchSuffix >= 1.70.0 + devel:immer$secondaryArchSuffix + devel:lager$secondaryArchSuffix + devel:zug$secondaryArchSuffix + devel:libavcodec$secondaryArchSuffix + devel:libavdevice$secondaryArchSuffix + devel:libavformat$secondaryArchSuffix + devel:libavutil$secondaryArchSuffix + devel:libboost_system$secondaryArchSuffix >= 1.83.0 devel:libexiv2$secondaryArchSuffix devel:libexpat$secondaryArchSuffix devel:libfftw3$secondaryArchSuffix + devel:libfreetype$secondaryArchSuffix + devel:libfribidi$secondaryArchSuffix + devel:libfontconfig$secondaryArchSuffix devel:libgif$secondaryArchSuffix >= 7 devel:libgsl$secondaryArchSuffix + devel:libharfbuzz$secondaryArchSuffix + devel:libheif$secondaryArchSuffix devel:libiconv$secondaryArchSuffix devel:libIex_3_0$secondaryArchSuffix devel:libIlmThread_3_0$secondaryArchSuffix devel:libImath_3_0$secondaryArchSuffix + devel:libjson_c$secondaryArchSuffix devel:libKF5Archive$secondaryArchSuffix devel:libKF5Auth$secondaryArchSuffix devel:libKF5Bookmarks$secondaryArchSuffix @@ -117,6 +149,7 @@ BUILD_REQUIRES=" devel:libKF5ItemModels$secondaryArchSuffix devel:libKF5ItemViews$secondaryArchSuffix devel:libKF5JobWidgets$secondaryArchSuffix + devel:libKF5KDcraw$secondaryArchSuffix devel:libKF5KDELibs4Support$secondaryArchSuffix devel:libKF5KIOCore$secondaryArchSuffix devel:libKF5KIOFileWidgets$secondaryArchSuffix @@ -132,14 +165,19 @@ BUILD_REQUIRES=" devel:libKF5WindowSystem$secondaryArchSuffix devel:libKF5XmlGui$secondaryArchSuffix devel:liblcms2$secondaryArchSuffix + devel:libmypaint$secondaryArchSuffix devel:libOpenColorIO$secondaryArchSuffix devel:libOpenEXR_3_0$secondaryArchSuffix devel:libOpenEXRUtil_3_0$secondaryArchSuffix devel:libpng16$secondaryArchSuffix - devel:libpoppler_qt5$secondaryArchSuffix >= 1.26 - devel:libQt5Core$secondaryArchSuffix >= 5.15 + devel:libpoppler_qt5$secondaryArchSuffix >= 1.33 + devel:libQt5Core$secondaryArchSuffix devel:libquazip5$secondaryArchSuffix - devel:libraw$secondaryArchSuffix + devel:libswscale$secondaryArchSuffix + devel:libtiff$secondaryArchSuffix + devel:libunibreak$secondaryArchSuffix >= 5 + devel:libwebp$secondaryArchSuffix + devel:libz$secondaryArchSuffix " BUILD_PREREQUIRES=" cmd:cmake @@ -147,40 +185,41 @@ BUILD_PREREQUIRES=" cmd:lrelease$secondaryArchSuffix >= 5 cmd:make cmd:pkg_config$secondaryArchSuffix - cmd:python3 + cmd:python3.10 cmd:unzip " PATCH() { - unzip -o $sourceDir/../../additional-files/icons.zip -d $sourceDir + unzip -o $sourceDir/../../additional-files/icons.zip -d $sourceDir/krita/pics } BUILD() { - mkdir -p build - cd build - - cmake .. \ + cmake -B build -S . \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$appsDir/Krita \ -DSHARE_INSTALL_PREFIX=$appsDir/Krita/share \ - -DCMAKE_BUILD_TYPE=release \ - -DBUILD_TESTING=FALSE \ - -DHIDE_SAFE_ASSERTS=TRUE \ - -DUSE_LOCK_FREE_HASH_TABLE=FALSE \ -DOPENEXR_INCLUDE_DIR:PATH=/system/$relativeIncludeDir/OpenEXR \ - -DECM_DIR=/system/data/cmake/Modules/ECM/cmake + -DECM_DIR=/system/data/cmake/Modules/ECM/cmake \ + -DQML_INSTALL_DIR=$dataDir/Qt5/qml \ + -DBUILD_TESTING=FALSE \ + -DHIDE_SAFE_ASSERTS=TRUE \ + -DUSE_LOCK_FREE_HASH_TABLE=FALSE - make $jobArgs + make -C build $jobArgs } INSTALL() { - cd build - make install + make -C build install + + rm -rf $appsDir/Krita/{include,etc} + rm -rf $appsDir/Krita/share/{applications,icons,metainfo} mkdir -p $dataDir mv $appsDir/Krita/share/locale $dataDir + mv $appsDir/Krita/bin/krita $appsDir/Krita/Krita rm -rf $appsDir/Krita/bin diff --git a/media-gfx/krita/patches/krita-4.4.8.patchset b/media-gfx/krita/patches/krita-4.4.8.patchset deleted file mode 100644 index 698b73851..000000000 --- a/media-gfx/krita/patches/krita-4.4.8.patchset +++ /dev/null @@ -1,316 +0,0 @@ -From 6d943009205788e75b387d66014d807f4bf3e212 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Thu, 12 Aug 2021 23:22:59 +1000 -Subject: Fix for Haiku - - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index d2aaadf..1200ef2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -419,7 +419,7 @@ set_package_properties(Qt5QuickWidgets PROPERTIES - PURPOSE "Optionally used for the touch gui for Krita") - endif() - --if (NOT WIN32 AND NOT APPLE AND NOT ANDROID) -+if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) - - find_package(Qt5 ${MIN_QT_VERSION} REQUIRED X11Extras) - -diff --git a/krita/main.cc b/krita/main.cc -index 74eb200..667fadf 100644 ---- a/krita/main.cc -+++ b/krita/main.cc -@@ -353,6 +353,9 @@ extern "C" int main(int argc, char **argv) - qputenv("GST_PLUGIN_SCANNER", appimageMountDir + QFile::encodeName("/usr/lib/gstreamer-1.0/gst-plugin-scanner")); - } - } -+#elif defined(Q_OS_HAIKU) -+ qputenv("KRITA_PLUGIN_PATH", QFile::encodeName(root + "lib")); -+ qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share") + ":" + qgetenv("XDG_DATA_DIRS")); - #else - qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share")); - #endif -@@ -521,6 +524,12 @@ extern "C" int main(int argc, char **argv) - } - - -+#if defined Q_OS_HAIKU -+#include -+#include -+#include -+#endif -+ - #if defined HAVE_KCRASH - KCrash::initialize(); - #elif defined USE_DRMINGW -@@ -676,6 +685,8 @@ extern "C" int main(int argc, char **argv) - if (logUsage) { - KisUsageLogger::close(); - } -- -+#if defined Q_OS_HAIKU -+ kill(::getpid(), SIGKILL); -+#endif - return state; - } -diff --git a/krita/pics/Breeze-dark/breeze-dark-icons.qrc b/krita/pics/Breeze-dark/breeze-dark-icons.qrc -index 22a8f23..9bb0b08 100644 ---- a/krita/pics/Breeze-dark/breeze-dark-icons.qrc -+++ b/krita/pics/Breeze-dark/breeze-dark-icons.qrc -@@ -13,7 +13,6 @@ - dark_arrow-right.svg - dark_arrow-up.svg - dark_bookmarks.svg -- dark_applications-system.svg - dark_configure.svg - dark_configure.svg - dark_dialog-cancel.svg -@@ -23,6 +22,7 @@ - dark_document-edit.svg - dark_document-export.svg - dark_document-import.svg -+ dark_configure-shortcuts.svg - dark_document-new.svg - dark_document-open-recent.svg - dark_document-open.svg -diff --git a/krita/pics/Breeze-light/breeze-light-icons.qrc b/krita/pics/Breeze-light/breeze-light-icons.qrc -index a7688a6..54f8da1 100644 ---- a/krita/pics/Breeze-light/breeze-light-icons.qrc -+++ b/krita/pics/Breeze-light/breeze-light-icons.qrc -@@ -13,7 +13,7 @@ - light_arrow-right.svg - light_arrow-up.svg - light_bookmarks.svg -- light_applications-system.svg -+ light_configure-shortcuts.svg - light_configure.svg - light_configure.svg - light_dialog-cancel.svg -diff --git a/libs/image/kis_image_config.cpp b/libs/image/kis_image_config.cpp -index a59517b..57e88fb 100644 ---- a/libs/image/kis_image_config.cpp -+++ b/libs/image/kis_image_config.cpp -@@ -400,6 +400,8 @@ void KisImageConfig::setLazyFrameCreationEnabled(bool value) - #elif defined Q_OS_MACOS - #include - #include -+#elif defined Q_OS_HAIKU -+#include - #endif - - int KisImageConfig::totalRAM() -@@ -428,6 +430,13 @@ int KisImageConfig::totalRAM() - if(!error) { - totalMemory = physmem >> 20; - } -+#elif defined Q_OS_HAIKU -+ system_info info; -+ error = get_system_info(&info) == B_OK?0:1; -+ if (!error) { -+ uint64_t size = (info.max_pages * B_PAGE_SIZE); -+ totalMemory = size >> 20; -+ } - #elif defined Q_OS_WIN - MEMORYSTATUSEX status; - status.dwLength = sizeof(status); -diff --git a/libs/ui/CMakeLists.txt b/libs/ui/CMakeLists.txt -index 4876489..55c7f58 100644 ---- a/libs/ui/CMakeLists.txt -+++ b/libs/ui/CMakeLists.txt -@@ -610,7 +610,7 @@ if (HAVE_QT_MULTIMEDIA) - target_link_libraries(kritaui Qt5::Multimedia) - endif() - --if (NOT WIN32 AND NOT APPLE AND NOT ANDROID) -+if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) - target_link_libraries(kritaui ${X11_X11_LIB} - ${X11_Xinput_LIB}) - endif() -@@ -620,11 +620,17 @@ if(APPLE) - target_link_libraries(kritaui ${APPKIT_LIBRARY}) - endif () - -+if(HAIKU) -+ target_link_libraries(kritaui network) -+ target_link_libraries(kritaui expat) -+ target_link_libraries(kritaui iconv) -+ target_link_libraries(kritaui intl) -+endif () - - target_link_libraries(kritaui ${OPENEXR_LIBRARIES}) - - # Add VSync disable workaround --if(NOT WIN32 AND NOT APPLE AND NOT ANDROID) -+if(NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) - target_link_libraries(kritaui ${CMAKE_DL_LIBS} Qt5::X11Extras) - endif() - -diff --git a/libs/ui/KisApplication.cpp b/libs/ui/KisApplication.cpp -index 7ca7809..9d69ec7 100644 ---- a/libs/ui/KisApplication.cpp -+++ b/libs/ui/KisApplication.cpp -@@ -164,7 +164,7 @@ KisApplication::KisApplication(const QString &key, int &argc, char **argv) - setWindowIcon(KisIconUtils::loadIcon("krita")); - - if (qgetenv("KRITA_NO_STYLE_OVERRIDE").isEmpty()) { -- QStringList styles = QStringList() << "breeze" << "fusion" << "plastique"; -+ QStringList styles = QStringList() << "haiku" << "breeze" << "fusion" << "plastique"; - if (!styles.contains(style()->objectName().toLower())) { - Q_FOREACH (const QString & style, styles) { - if (!setStyle(style)) { -@@ -419,9 +419,10 @@ bool KisApplication::start(const KisApplicationArguments &args) - KoHashGeneratorProvider::instance()->setGenerator("MD5", new KisMD5Generator()); - - KConfigGroup group(KSharedConfig::openConfig(), "theme"); -+#ifndef Q_OS_HAIKU - Digikam::ThemeManager themeManager; - themeManager.setCurrentTheme(group.readEntry("Theme", "Krita dark")); -- -+#endif - - ResetStarting resetStarting(d->splashScreen, args.filenames().count()); // remove the splash when done - Q_UNUSED(resetStarting); -diff --git a/libs/ui/KisMainWindow.cpp b/libs/ui/KisMainWindow.cpp -index bb68c6c..e52b6b3 100644 ---- a/libs/ui/KisMainWindow.cpp -+++ b/libs/ui/KisMainWindow.cpp -@@ -279,9 +279,9 @@ public: - KoToolDocker *toolOptionsDocker {0}; - - QCloseEvent *deferredClosingEvent {0}; -- -+#ifndef Q_OS_HAIKU - Digikam::ThemeManager *themeManager {0}; -- -+#endif - QScrollArea *welcomeScroller {0}; - KisWelcomePageWidget *welcomePage {0}; - -@@ -335,8 +335,9 @@ KisMainWindow::KisMainWindow(QUuid uuid) - - d->viewManager = new KisViewManager(this, actionCollection()); - KConfigGroup group( KSharedConfig::openConfig(), "theme"); -+#ifndef Q_OS_HAIKU - d->themeManager = new Digikam::ThemeManager(group.readEntry("Theme", "Krita dark"), this); -- -+#endif - d->windowStateConfig = KSharedConfig::openConfig()->group("MainWindow"); - - setStandardToolBarMenuEnabled(true); -@@ -776,8 +777,9 @@ void KisMainWindow::slotThemeChanged() - { - // save theme changes instantly - KConfigGroup group( KSharedConfig::openConfig(), "theme"); -+#ifndef Q_OS_HAIKU - group.writeEntry("Theme", d->themeManager->currentThemeName()); -- -+#endif - // reload action icons! - Q_FOREACH (QAction *action, actionCollection()->actions()) { - KisIconUtils::updateIcon(action); -@@ -2561,7 +2563,9 @@ void KisMainWindow::configChanged() - #endif - - KConfigGroup group( KSharedConfig::openConfig(), "theme"); -+#ifndef Q_OS_HAIKU - d->themeManager->setCurrentTheme(group.readEntry("Theme", "Krita dark")); -+#endif - d->actionManager()->updateGUI(); - - QString s = cfg.getMDIBackgroundColor(); -@@ -2786,14 +2790,14 @@ void KisMainWindow::createActions() - d->showDocumentInfo = actionManager->createAction("file_documentinfo"); - connect(d->showDocumentInfo, SIGNAL(triggered(bool)), this, SLOT(slotDocumentInfo())); - -- -+#ifndef Q_OS_HAIKU - d->themeManager->setThemeMenuAction(new KActionMenu(i18nc("@action:inmenu", "&Themes"), this)); - d->themeManager->registerThemeActions(actionCollection()); - connect(d->themeManager, SIGNAL(signalThemeChanged()), this, SLOT(slotThemeChanged())); - - - connect(d->themeManager, SIGNAL(signalThemeChanged()), d->welcomePage, SLOT(slotUpdateThemeColors())); -- -+#endif - d->toggleDockers = actionManager->createAction("view_toggledockers"); - KisConfig(true).showDockers(true); - d->toggleDockers->setChecked(true); -diff --git a/libs/ui/dialogs/kis_dlg_preferences.cc b/libs/ui/dialogs/kis_dlg_preferences.cc -index f0a1a9d..26af04c 100644 ---- a/libs/ui/dialogs/kis_dlg_preferences.cc -+++ b/libs/ui/dialogs/kis_dlg_preferences.cc -@@ -1530,7 +1530,7 @@ KisDlgPreferences::KisDlgPreferences(QWidget* parent, const char* name) - page = new KPageWidgetItem(vbox, i18n("Keyboard Shortcuts")); - page->setObjectName("shortcuts"); - page->setHeader(i18n("Shortcuts")); -- page->setIcon(KisIconUtils::loadIcon("document-export")); -+ page->setIcon(KisIconUtils::loadIcon("configure-shortcuts")); - m_pages << page; - addPage(page); - m_shortcutSettings = new ShortcutSettingsTab(vbox); -diff --git a/libs/ui/widgets/kis_floating_message.cpp b/libs/ui/widgets/kis_floating_message.cpp -index 85714a5..7bffe86 100644 ---- a/libs/ui/widgets/kis_floating_message.cpp -+++ b/libs/ui/widgets/kis_floating_message.cpp -@@ -130,6 +130,7 @@ KisFloatingMessage::KisFloatingMessage(const QString &message, QWidget *parent, - , m_alignment(alignment) - , widgetQueuedForDeletion(false) - { -+#ifndef Q_OS_HAIKU - m_icon = KisIconUtils::loadIcon("krita").pixmap(256, 256).toImage(); - - setWindowFlags(Qt::FramelessWindowHint | Qt::ToolTip | Qt::WindowTransparentForInput); -@@ -141,6 +142,7 @@ KisFloatingMessage::KisFloatingMessage(const QString &message, QWidget *parent, - m_timer.setSingleShot( true ); - connect(&m_timer, SIGNAL(timeout()), SLOT(startFade())); - connect(this, SIGNAL(destroyed()), SLOT(widgetDeleted())); -+#endif - } - - void KisFloatingMessage::tryOverrideMessage(const QString message, -@@ -162,6 +164,7 @@ void KisFloatingMessage::tryOverrideMessage(const QString message, - - void KisFloatingMessage::showMessage() - { -+#ifndef Q_OS_HAIKU - if (widgetQueuedForDeletion) return; - #if QT_VERSION >= QT_VERSION_CHECK(5,13,0) - setGeometry(determineMetrics(fontMetrics().horizontalAdvance('x'))); -@@ -172,6 +175,7 @@ void KisFloatingMessage::showMessage() - - QWidget::setVisible(true); - m_timer.start(m_timeout); -+#endif - } - - void KisFloatingMessage::setShowOverParent(bool show) -diff --git a/libs/widgetutils/KoResourcePaths.cpp b/libs/widgetutils/KoResourcePaths.cpp -index b165d17..5a9c555 100644 ---- a/libs/widgetutils/KoResourcePaths.cpp -+++ b/libs/widgetutils/KoResourcePaths.cpp -@@ -127,6 +127,8 @@ QString getInstallationPrefix() { - appdir.setPath(correctedPath); - appdir.cdUp(); - return appdir.canonicalPath(); -+ #elif defined(Q_OS_HAIKU) -+ return qApp->applicationDirPath() + "/"; - #else - #ifdef Q_OS_ANDROID - // qApp->applicationDirPath() isn't writable and android system won't allow -diff --git a/plugins/dockers/CMakeLists.txt b/plugins/dockers/CMakeLists.txt -index db5e216..49b098e 100644 ---- a/plugins/dockers/CMakeLists.txt -+++ b/plugins/dockers/CMakeLists.txt -@@ -14,7 +14,7 @@ add_subdirectory(compositiondocker) - add_subdirectory(patterndocker) - add_subdirectory(griddocker) - add_subdirectory(arrangedocker) --if(HAVE_OCIO) -+if(HAVE_OCIO AND NOT HAIKU) - add_subdirectory(lut) - endif() - add_subdirectory(overview) --- -2.30.2 - diff --git a/media-gfx/krita/patches/krita-5.2.2.patchset b/media-gfx/krita/patches/krita-5.2.2.patchset new file mode 100644 index 000000000..82e21a492 --- /dev/null +++ b/media-gfx/krita/patches/krita-5.2.2.patchset @@ -0,0 +1,254 @@ +From bb0ce36c42184610b8743d0b029bbb28f3decb7a Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Thu, 14 Mar 2024 20:31:24 +1000 +Subject: Fix for Haiku + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8e1b6ff..df1172b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -539,7 +539,7 @@ if (Qt5QuickWidgets_FOUND) + endif() + + +-if (NOT WIN32 AND NOT APPLE AND NOT ANDROID) ++if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) + + find_package(Qt5 ${MIN_QT_VERSION} REQUIRED X11Extras) + +diff --git a/krita/main.cc b/krita/main.cc +index d2965ab..6502078 100644 +--- a/krita/main.cc ++++ b/krita/main.cc +@@ -80,6 +80,12 @@ + #include "libs/macosutils/KisMacosSystemProber.h" + #endif + ++#ifdef Q_OS_HAIKU ++#include ++#include ++#include ++#endif ++ + #if defined HAVE_KCRASH + #include + #elif defined USE_DRMINGW +@@ -423,6 +429,9 @@ extern "C" MAIN_EXPORT int MAIN_FN(int argc, char **argv) + // NOTE: This line helps also fontconfig have a user-accessible location on Android (see the commit). + qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share") + ":" + originalXdgDataDirs); + } ++#elif defined(Q_OS_HAIKU) ++ qputenv("KRITA_PLUGIN_PATH", QFile::encodeName(root + "lib")); ++ qputenv("XDG_DATA_DIRS", QFile::encodeName(root + "share") + ":" + qgetenv("XDG_DATA_DIRS")); + #else + qputenv("XDG_DATA_DIRS", QFile::encodeName(QDir(root + "share").absolutePath())); + #endif +@@ -774,6 +783,10 @@ extern "C" MAIN_EXPORT int MAIN_FN(int argc, char **argv) + KisUsageLogger::close(); + } + ++#ifdef Q_OS_HAIKU ++ kill(::getpid(), SIGKILL); ++#endif ++ + return state; + } + +diff --git a/libs/image/kis_image_config.cpp b/libs/image/kis_image_config.cpp +index 5df268c..b30bca1 100644 +--- a/libs/image/kis_image_config.cpp ++++ b/libs/image/kis_image_config.cpp +@@ -410,6 +410,8 @@ void KisImageConfig::setAutoKeyModeDuplicate(bool value) + + #if defined Q_OS_LINUX + #include ++#elif defined Q_OS_HAIKU ++#include + #elif defined Q_OS_FREEBSD || defined Q_OS_NETBSD || defined Q_OS_OPENBSD + #include + #elif defined Q_OS_WIN +@@ -432,6 +434,13 @@ int KisImageConfig::totalRAM() + if(!error) { + totalMemory = info.totalram * info.mem_unit / (1UL << 20); + } ++#elif defined Q_OS_HAIKU ++ system_info info; ++ error = get_system_info(&info) == B_OK ? 0 : 1; ++ if (!error) { ++ uint64_t size = (info.max_pages * B_PAGE_SIZE); ++ totalMemory = size >> 20; ++ } + #elif defined Q_OS_FREEBSD || defined Q_OS_NETBSD || defined Q_OS_OPENBSD + u_long physmem; + # if defined HW_PHYSMEM64 // NetBSD only +diff --git a/libs/resources/KoResourcePaths.cpp b/libs/resources/KoResourcePaths.cpp +index cd4343d..553433a 100644 +--- a/libs/resources/KoResourcePaths.cpp ++++ b/libs/resources/KoResourcePaths.cpp +@@ -139,6 +139,8 @@ QString getInstallationPrefix() { + } + + return bundlePath; ++#elif defined(Q_OS_HAIKU) ++ return qApp->applicationDirPath() + "/"; + #elif defined(Q_OS_ANDROID) + // qApp->applicationDirPath() isn't writable and android system won't allow + // any files other than libraries +diff --git a/libs/ui/CMakeLists.txt b/libs/ui/CMakeLists.txt +index 969938a..a0618dc 100644 +--- a/libs/ui/CMakeLists.txt ++++ b/libs/ui/CMakeLists.txt +@@ -711,11 +711,15 @@ if (ANDROID) + target_link_libraries(kritaui PRIVATE Qt5::AndroidExtras) + endif() + +-if (NOT WIN32 AND NOT APPLE AND NOT ANDROID) ++if (NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) + target_link_libraries(kritaui PRIVATE ${X11_X11_LIB} + ${X11_Xinput_LIB}) + endif() + ++if (HAIKU) ++ target_link_libraries(kritaui PRIVATE network expat iconv intl) ++endif() ++ + if(APPLE) + target_link_libraries(kritaui + PUBLIC +@@ -732,7 +736,7 @@ if(OpenEXR_FOUND) + endif() + + # Add VSync disable workaround +-if(NOT WIN32 AND NOT APPLE AND NOT ANDROID) ++if(NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) + target_link_libraries(kritaui PRIVATE ${CMAKE_DL_LIBS} Qt5::X11Extras) + endif() + +diff --git a/libs/ui/KisApplication.cpp b/libs/ui/KisApplication.cpp +index 5395bac..1ba9abb 100644 +--- a/libs/ui/KisApplication.cpp ++++ b/libs/ui/KisApplication.cpp +@@ -209,7 +209,7 @@ KisApplication::KisApplication(const QString &key, int &argc, char **argv) + setWindowIcon(KisIconUtils::loadIcon("krita-branding")); + + if (qgetenv("KRITA_NO_STYLE_OVERRIDE").isEmpty()) { +- QStringList styles = QStringList() << "macintosh" << "breeze" << "fusion"; ++ QStringList styles = QStringList() << "haiku" << "macintosh" << "breeze" << "fusion"; + if (!styles.contains(style()->objectName().toLower())) { + Q_FOREACH (const QString & style, styles) { + if (!setStyle(style)) { +@@ -450,9 +450,10 @@ bool KisApplication::start(const KisApplicationArguments &args) + } + + KConfigGroup group(KSharedConfig::openConfig(), "theme"); ++#ifndef Q_OS_HAIKU + Digikam::ThemeManager themeManager; + themeManager.setCurrentTheme(group.readEntry("Theme", "Krita dark")); +- ++#endif + + ResetStarting resetStarting(d->splashScreen, args.filenames().count()); // remove the splash when done + Q_UNUSED(resetStarting); +diff --git a/libs/ui/KisMainWindow.cpp b/libs/ui/KisMainWindow.cpp +index a65d2d4..27b4a4b 100644 +--- a/libs/ui/KisMainWindow.cpp ++++ b/libs/ui/KisMainWindow.cpp +@@ -282,9 +282,9 @@ public: + KoToolDocker *toolOptionsDocker {nullptr}; + + QCloseEvent *deferredClosingEvent {nullptr}; +- ++#ifndef Q_OS_HAIKU + Digikam::ThemeManager *themeManager {nullptr}; +- ++#endif + QScrollArea *welcomeScroller {nullptr}; + KisWelcomePageWidget *welcomePage {nullptr}; + +@@ -352,8 +352,9 @@ KisMainWindow::KisMainWindow(QUuid uuid) + + d->viewManager = new KisViewManager(this, actionCollection()); + KConfigGroup group( KSharedConfig::openConfig(), "theme"); ++#ifndef Q_OS_HAIKU + d->themeManager = new Digikam::ThemeManager(group.readEntry("Theme", "Krita dark"), this); +- ++#endif + d->windowStateConfig = KSharedConfig::openConfig()->group("MainWindow"); + + setStandardToolBarMenuEnabled(true); +@@ -879,12 +880,12 @@ void KisMainWindow::updateTheme() + void KisMainWindow::slotThemeChanged() + { + KConfigGroup group(KSharedConfig::openConfig(), "theme"); +- ++#ifndef Q_OS_HAIKU + if (group.readEntry("Theme", "") == d->themeManager->currentThemeName()) return; + + // save theme changes instantly + group.writeEntry("Theme", d->themeManager->currentThemeName()); +- ++#endif + updateTheme(); + + // Make the other top level windows update as well +@@ -2761,7 +2762,9 @@ void KisMainWindow::configChanged() + #endif + + KConfigGroup group( KSharedConfig::openConfig(), "theme"); ++#ifndef Q_OS_HAIKU + d->themeManager->setCurrentTheme(group.readEntry("Theme", "Krita dark")); ++#endif + d->actionManager()->updateGUI(); + + QString s = cfg.getMDIBackgroundColor(); +@@ -2949,11 +2952,12 @@ void KisMainWindow::createActions() + intends to show data this entry should not have a trailing ellipses (...). */ + d->showDocumentInfo = actionManager->createAction("file_documentinfo"); + connect(d->showDocumentInfo, SIGNAL(triggered(bool)), this, SLOT(slotDocumentInfo())); +- ++#ifndef Q_OS_HAIKU + d->themeManager->setThemeMenuAction(new KActionMenu(i18nc("@action:inmenu", "&Themes"), this)); + d->themeManager->registerThemeActions(actionCollection()); + connect(d->themeManager, SIGNAL(signalThemeChanged()), this, SLOT(slotThemeChanged()), Qt::QueuedConnection); + connect(this, SIGNAL(themeChanged()), d->welcomePage, SLOT(slotUpdateThemeColors()), Qt::UniqueConnection); ++#endif + d->toggleDockers = actionManager->createAction("view_toggledockers"); + + +diff --git a/libs/ui/widgets/kis_floating_message.cpp b/libs/ui/widgets/kis_floating_message.cpp +index 693a0f3..460722c 100644 +--- a/libs/ui/widgets/kis_floating_message.cpp ++++ b/libs/ui/widgets/kis_floating_message.cpp +@@ -88,6 +88,7 @@ void KisFloatingMessage::tryOverrideMessage(const QString message, + KisFloatingMessage::Priority priority, + int alignment) + { ++#ifndef Q_OS_HAIKU + if ((int)priority > (int)m_priority) return; + + m_message = message; +@@ -98,6 +99,7 @@ void KisFloatingMessage::tryOverrideMessage(const QString message, + m_alignment = alignment; + showMessage(); + update(); ++#endif + } + + void KisFloatingMessage::showMessage() +diff --git a/plugins/dockers/CMakeLists.txt b/plugins/dockers/CMakeLists.txt +index fd3d0bd..5ae73be 100644 +--- a/plugins/dockers/CMakeLists.txt ++++ b/plugins/dockers/CMakeLists.txt +@@ -14,7 +14,7 @@ add_subdirectory(compositiondocker) + add_subdirectory(patterndocker) + add_subdirectory(griddocker) + add_subdirectory(arrangedocker) +-if(HAVE_OCIO) ++if(HAVE_OCIO AND NOT HAIKU) + add_subdirectory(lut) + endif() + add_subdirectory(overview) +-- +2.43.2 +