diff options
author | Andreas Sturmlechner <andreas.sturmlechner@gmail.com> | 2016-11-17 11:26:39 +0100 |
---|---|---|
committer | Michael Palimaka <kensington@gentoo.org> | 2016-11-17 22:35:20 +1100 |
commit | 76e918e9731c0e30aeb93f2d91967b9b90adb550 (patch) | |
tree | e68ca8dbd19daa85087b3105f12db3d8f62ac48c /kde-plasma | |
parent | kde-frameworks/plasma: Drop old (diff) | |
download | gentoo-76e918e9731c0e30aeb93f2d91967b9b90adb550.tar.gz gentoo-76e918e9731c0e30aeb93f2d91967b9b90adb550.tar.bz2 gentoo-76e918e9731c0e30aeb93f2d91967b9b90adb550.zip |
kde-plasma/plasma-workspace: Fix krunner crashfix
Upstream revert-fixed in 9e457e8c639f1db0b42a22036d61673aeac6a60f
and then fixed once more.
Package-Manager: portage-2.3.0
Diffstat (limited to 'kde-plasma')
-rw-r--r-- | kde-plasma/plasma-workspace/files/plasma-workspace-5.8.3-krunner-crash.patch | 452 | ||||
-rw-r--r-- | kde-plasma/plasma-workspace/plasma-workspace-5.8.3-r3.ebuild | 176 |
2 files changed, 193 insertions, 435 deletions
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.8.3-krunner-crash.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.8.3-krunner-crash.patch index 9b238b68b698..2d4f7eca0b32 100644 --- a/kde-plasma/plasma-workspace/files/plasma-workspace-5.8.3-krunner-crash.patch +++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.8.3-krunner-crash.patch @@ -1,441 +1,23 @@ -From 3f859c3dbdded68cc96d4c695ff27d15c387da09 Mon Sep 17 00:00:00 2001 -From: Aleix Pol <aleixpol@kde.org> -Date: Mon, 10 Oct 2016 16:30:24 +0200 -Subject: [PATCH] Port to new plasma-framework API - -Reduces unnecessary castings. -Ports away the WindowedWidgets runner from KService - -REVIEW: 129101 ---- - applets/systemtray/systemtray.cpp | 30 +++++++------- - .../shellprivate/widgetexplorer/widgetexplorer.cpp | 14 +++---- - plasma-windowed/plasmawindowedcorona.cpp | 2 +- - runners/windowedwidgets/windowedwidgetsrunner.cpp | 46 ++++++++++------------ - runners/windowedwidgets/windowedwidgetsrunner.h | 2 +- - shell/alternativeshelper.cpp | 6 +-- - shell/containmentconfigview.cpp | 2 +- - shell/scripting/containment.cpp | 4 +- - shell/scripting/widget.cpp | 2 +- - shell/shellcorona.cpp | 15 +++---- - 10 files changed, 60 insertions(+), 63 deletions(-) - -diff --git a/applets/systemtray/systemtray.cpp b/applets/systemtray/systemtray.cpp -index e1cd610..ecc23a4 100644 ---- a/applets/systemtray/systemtray.cpp -+++ b/applets/systemtray/systemtray.cpp -@@ -99,19 +99,19 @@ void SystemTray::init() - { - Containment::init(); - -- for (const auto &info: Plasma::PluginLoader::self()->listAppletInfo(QString())) { -- if (!info.isValid() || info.property(QStringLiteral("X-Plasma-NotificationArea")) != "true") { -+ for (const auto &info: Plasma::PluginLoader::self()->listAppletMetaData(QString())) { -+ if (!info.isValid() || info.value(QStringLiteral("X-Plasma-NotificationArea")) != "true") { - continue; - } -- m_systrayApplets[info.pluginName()] = info; -+ m_systrayApplets[info.pluginId()] = KPluginInfo(info); - -- if (info.isPluginEnabledByDefault()) { -- m_defaultPlasmoids += info.pluginName(); -+ if (info.isEnabledByDefault()) { -+ m_defaultPlasmoids += info.pluginId(); - } -- const QString dbusactivation = info.property(QStringLiteral("X-Plasma-DBusActivationService")).toString(); -+ const QString dbusactivation = info.value(QStringLiteral("X-Plasma-DBusActivationService")); - if (!dbusactivation.isEmpty()) { -- qCDebug(SYSTEM_TRAY) << "ST Found DBus-able Applet: " << info.pluginName() << dbusactivation; -- m_dbusActivatableTasks[info.pluginName()] = dbusactivation; -+ qCDebug(SYSTEM_TRAY) << "ST Found DBus-able Applet: " << info.pluginId() << dbusactivation; -+ m_dbusActivatableTasks[info.pluginId()] = dbusactivation; - } - } - } -@@ -119,12 +119,12 @@ void SystemTray::init() - void SystemTray::newTask(const QString &task) - { - foreach (Plasma::Applet *applet, applets()) { -- if (!applet->pluginInfo().isValid()) { -+ if (!applet->pluginMetaData().isValid()) { - continue; - } - - //only allow one instance per applet -- if (task == applet->pluginInfo().pluginName()) { -+ if (task == applet->pluginMetaData().pluginId()) { - //Applet::destroy doesn't delete the applet from Containment::applets in the same event - //potentially a dbus activated service being restarted can be added in this time. - if (!applet->destroyed()) { -@@ -156,7 +156,7 @@ void SystemTray::newTask(const QString &task) - void SystemTray::cleanupTask(const QString &task) - { - foreach (Plasma::Applet *applet, applets()) { -- if (!applet->pluginInfo().isValid() || task == applet->pluginInfo().pluginName()) { -+ if (!applet->pluginMetaData().isValid() || task == applet->pluginMetaData().pluginId()) { - //we are *not* cleaning the config here, because since is one - //of those automatically loaded/unloaded by dbus, we want to recycle - //the config the next time it's loaded, in case the user configured something here -@@ -255,11 +255,11 @@ Q_INVOKABLE QString SystemTray::plasmoidCategory(QQuickItem *appletInterface) co - } - - Plasma::Applet *applet = appletInterface->property("_plasma_applet").value<Plasma::Applet*>(); -- if (!applet || !applet->pluginInfo().isValid()) { -+ if (!applet || !applet->pluginMetaData().isValid()) { - return "UnknownCategory"; - } - -- const QString cat = applet->pluginInfo().property(QStringLiteral("X-Plasma-NotificationAreaCategory")).toString(); -+ const QString cat = applet->pluginMetaData().value(QStringLiteral("X-Plasma-NotificationAreaCategory")); - - if (cat.isEmpty()) { - return "UnknownCategory"; -@@ -385,11 +385,11 @@ void SystemTray::restorePlasmoids() - foreach (Plasma::Applet *applet, applets()) { - //Here it should always be valid. - //for some reason it not always is. -- if (!applet->pluginInfo().isValid()) { -+ if (!applet->pluginMetaData().isValid()) { - applet->config().parent().deleteGroup(); - applet->deleteLater(); - } else { -- const QString task = applet->pluginInfo().pluginName(); -+ const QString task = applet->pluginMetaData().pluginId(); - if (!m_allowedPlasmoids.contains(task)) { - //in those cases we do delete the applet config completely - //as they were explicitly disabled by the user -diff --git a/components/shellprivate/widgetexplorer/widgetexplorer.cpp b/components/shellprivate/widgetexplorer/widgetexplorer.cpp -index c2b38a8..b445897 100644 ---- a/components/shellprivate/widgetexplorer/widgetexplorer.cpp -+++ b/components/shellprivate/widgetexplorer/widgetexplorer.cpp -@@ -249,14 +249,14 @@ void WidgetExplorerPrivate::addContainment(Containment *containment) - QObject::connect(containment, SIGNAL(appletRemoved(Plasma::Applet*)), q, SLOT(appletRemoved(Plasma::Applet*))); - - foreach (Applet *applet, containment->applets()) { -- if (applet->pluginInfo().isValid()) { -+ if (applet->pluginMetaData().isValid()) { - Containment *childContainment = applet->property("containment").value<Containment*>(); - if (childContainment) { - addContainment(childContainment); - } -- runningApplets[applet->pluginInfo().pluginName()]++; -+ runningApplets[applet->pluginMetaData().pluginId()]++; - } else { -- qDebug() << "Invalid plugininfo. :("; -+ qDebug() << "Invalid plugin metadata. :("; - } - } - } -@@ -268,10 +268,10 @@ void WidgetExplorerPrivate::containmentDestroyed() - - void WidgetExplorerPrivate::appletAdded(Plasma::Applet *applet) - { -- if (!applet->pluginInfo().isValid()) { -+ if (!applet->pluginMetaData().isValid()) { - return; - } -- QString name = applet->pluginInfo().pluginName(); -+ QString name = applet->pluginMetaData().pluginId(); - - runningApplets[name]++; - appletNames.insert(applet, name); -@@ -471,9 +471,9 @@ void WidgetExplorer::uninstall(const QString &pluginName) - const auto &applets = c->applets(); - - foreach (Applet *applet, applets) { -- const auto &appletInfo = applet->pluginInfo(); -+ const auto &appletInfo = applet->pluginMetaData(); - -- if (appletInfo.isValid() && appletInfo.pluginName() == pluginName) { -+ if (appletInfo.isValid() && appletInfo.pluginId() == pluginName) { - applet->destroy(); - } - } -diff --git a/plasma-windowed/plasmawindowedcorona.cpp b/plasma-windowed/plasmawindowedcorona.cpp -index fbacbf8..b68d270 100644 ---- a/plasma-windowed/plasmawindowedcorona.cpp -+++ b/plasma-windowed/plasmawindowedcorona.cpp -@@ -51,7 +51,7 @@ void PlasmaWindowedCorona::loadApplet(const QString &applet, const QVariantList - - //forbid more instances per applet (todo: activate the correpsponding already loaded applet) - for (Plasma::Applet *a : cont->applets()) { -- if (a->pluginInfo().pluginName() == applet) { -+ if (a->pluginMetaData().pluginId() == applet) { - return; - } - } +commit 238ec3ee671bcf6716348122bebefb20c25d1101 +Author: David Edmundson <kde@davidedmundson.co.uk> +Date: Thu, 17 Nov 2016 10:53:48 +0000 + + [Windowed Widgets Runner] Don't access invalid KPluginInfo + + BUG: 372017 + FIXED-IN: 5.8.4 + diff --git a/runners/windowedwidgets/windowedwidgetsrunner.cpp b/runners/windowedwidgets/windowedwidgetsrunner.cpp -index 5ccbd27..7f093a7 100644 +index 5ccbd27..f86159a 100644 --- a/runners/windowedwidgets/windowedwidgetsrunner.cpp +++ b/runners/windowedwidgets/windowedwidgetsrunner.cpp -@@ -60,24 +60,22 @@ void WindowedWidgetsRunner::match(Plasma::RunnerContext &context) - - QList<Plasma::QueryMatch> matches; - -- foreach (const KPluginInfo &info, Plasma::PluginLoader::self()->listAppletInfo(QString())) { -- KService::Ptr service = info.service(); -- -- if (((service->name().contains(term, Qt::CaseInsensitive) || -- service->genericName().contains(term, Qt::CaseInsensitive) || -- service->comment().contains(term, Qt::CaseInsensitive)) || -- service->categories().contains(term, Qt::CaseInsensitive) || -+ foreach (const KPluginMetaData &md, Plasma::PluginLoader::self()->listAppletMetaData(QString())) { -+ if (((md.name().contains(term, Qt::CaseInsensitive) || -+ md.value(QLatin1String("GenericName")).contains(term, Qt::CaseInsensitive) || -+ md.description().contains(term, Qt::CaseInsensitive)) || -+ md.category().contains(term, Qt::CaseInsensitive) || - term.startsWith(i18nc("Note this is a KRunner keyword", "mobile applications"))) && -- !info.property(QStringLiteral("NoDisplay")).toBool()) { -+ !md.rawData().value(QStringLiteral("NoDisplay")).toBool()) { - -- QVariant val = info.property(QStringLiteral("X-Plasma-StandAloneApp")); -+ QVariant val = md.value(QStringLiteral("X-Plasma-StandAloneApp")); - if (!val.isValid() || !val.toBool()) { - continue; - } - - Plasma::QueryMatch match(this); -- setupMatch(service, match); -- if (service->name().compare(term, Qt::CaseInsensitive) == 0) { -+ setupMatch(md, match); -+ if (md.name().compare(term, Qt::CaseInsensitive) == 0) { - match.setType(Plasma::QueryMatch::ExactMatch); - match.setRelevance(1); - } else { -@@ -85,8 +83,6 @@ void WindowedWidgetsRunner::match(Plasma::RunnerContext &context) - match.setRelevance(0.7); - } - matches << match; -- -- qDebug() << service; - } - } - -@@ -100,27 +96,27 @@ void WindowedWidgetsRunner::match(Plasma::RunnerContext &context) - void WindowedWidgetsRunner::run(const Plasma::RunnerContext &context, const Plasma::QueryMatch &match) - { - Q_UNUSED(context); -- KService::Ptr service = KService::serviceByStorageId(match.data().toString()); -- if (service) { -- QProcess::startDetached(QStringLiteral("plasmawindowed"), QStringList() << service->property(QStringLiteral("X-KDE-PluginInfo-Name"), QVariant::String).toString()); -+ KPluginMetaData md(match.data().toString()); -+ if (md.isValid()) { -+ QProcess::startDetached(QStringLiteral("plasmawindowed"), QStringList() << md.pluginId()); - } - } - --void WindowedWidgetsRunner::setupMatch(const KService::Ptr &service, Plasma::QueryMatch &match) -+void WindowedWidgetsRunner::setupMatch(const KPluginMetaData &md, Plasma::QueryMatch &match) - { -- const QString name = service->name(); -+ const QString name = md.pluginId(); - - match.setText(name); -- match.setData(service->storageId()); -+ match.setData(md.metaDataFileName()); - -- if (!service->genericName().isEmpty() && service->genericName() != name) { -- match.setSubtext(service->genericName()); -- } else if (!service->comment().isEmpty()) { -- match.setSubtext(service->comment()); -+ if (!md.name().isEmpty() && md.name() != name) { -+ match.setSubtext(md.name()); -+ } else if (!md.description().isEmpty()) { -+ match.setSubtext(md.description()); - } - -- if (!service->icon().isEmpty()) { -- match.setIconName(service->icon()); -+ if (!md.iconName().isEmpty()) { -+ match.setIconName(md.iconName()); - } - } - -diff --git a/runners/windowedwidgets/windowedwidgetsrunner.h b/runners/windowedwidgets/windowedwidgetsrunner.h -index 2294965..fbc8006 100644 ---- a/runners/windowedwidgets/windowedwidgetsrunner.h -+++ b/runners/windowedwidgets/windowedwidgetsrunner.h -@@ -48,7 +48,7 @@ protected Q_SLOTS: - - - protected: -- void setupMatch(const KService::Ptr &service, Plasma::QueryMatch &action); -+ void setupMatch(const KPluginMetaData &md, Plasma::QueryMatch &action); - }; - - #endif -diff --git a/shell/alternativeshelper.cpp b/shell/alternativeshelper.cpp -index d0f5dfd..6d76307 100644 ---- a/shell/alternativeshelper.cpp -+++ b/shell/alternativeshelper.cpp -@@ -38,12 +38,12 @@ AlternativesHelper::~AlternativesHelper() - - QStringList AlternativesHelper::appletProvides() const - { -- return m_applet->pluginInfo().property(QStringLiteral("X-Plasma-Provides")).toStringList(); -+ return KPluginMetaData::readStringList(m_applet->pluginMetaData().rawData(), QStringLiteral("X-Plasma-Provides")); - } +@@ -60,6 +60,9 @@ void WindowedWidgetsRunner::match(Plasma::RunnerContext &context) - QString AlternativesHelper::currentPlugin() const - { -- return m_applet->pluginInfo().pluginName(); -+ return m_applet->pluginMetaData().pluginId(); - } - - QQuickItem *AlternativesHelper::applet() const -@@ -53,7 +53,7 @@ QQuickItem *AlternativesHelper::applet() const - - void AlternativesHelper::loadAlternative(const QString &plugin) - { -- if (plugin == m_applet->pluginInfo().pluginName() || m_applet->isContainment()) { -+ if (plugin == m_applet->pluginMetaData().pluginId() || m_applet->isContainment()) { - return; - } - -diff --git a/shell/containmentconfigview.cpp b/shell/containmentconfigview.cpp -index cec067e..4c9d146 100644 ---- a/shell/containmentconfigview.cpp -+++ b/shell/containmentconfigview.cpp -@@ -104,7 +104,7 @@ QAbstractItemModel *ContainmentConfigView::currentContainmentActionsModel() - - QString ContainmentConfigView::containmentPlugin() const - { -- return m_containment->pluginInfo().pluginName(); -+ return m_containment->pluginMetaData().pluginId(); - } - - void ContainmentConfigView::setContainmentPlugin(const QString &plugin) -diff --git a/shell/scripting/containment.cpp b/shell/scripting/containment.cpp -index 6040e62..96e2009 100644 ---- a/shell/scripting/containment.cpp -+++ b/shell/scripting/containment.cpp -@@ -248,7 +248,7 @@ QScriptValue Containment::widgets(QScriptContext *context, QScriptEngine *engine - int count = 0; - - foreach (Plasma::Applet *widget, c->d->containment.data()->applets()) { -- if (widgetType.isEmpty() || widget->pluginInfo().pluginName() == widgetType) { -+ if (widgetType.isEmpty() || widget->pluginMetaData().pluginId() == widgetType) { - widgets.setProperty(count, env->wrap(widget)); - ++count; - } -@@ -273,7 +273,7 @@ QString Containment::type() const - return QString(); - } - -- return d->containment.data()->pluginInfo().pluginName(); -+ return d->containment.data()->pluginMetaData().pluginId(); - } - - void Containment::remove() -diff --git a/shell/scripting/widget.cpp b/shell/scripting/widget.cpp -index a651c2a..b58822b 100644 ---- a/shell/scripting/widget.cpp -+++ b/shell/scripting/widget.cpp -@@ -65,7 +65,7 @@ uint Widget::id() const - QString Widget::type() const - { - if (d->applet) { -- return d->applet.data()->pluginInfo().pluginName(); -+ return d->applet.data()->pluginMetaData().pluginId(); - } - - return QString(); -diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp -index 33259da..598fdb0 100644 ---- a/shell/shellcorona.cpp -+++ b/shell/shellcorona.cpp -@@ -406,7 +406,7 @@ QByteArray ShellCorona::dumpCurrentLayoutJS() const - || cont->location() == Plasma::Types::BottomEdge - || cont->location() == Plasma::Types::LeftEdge - || cont->location() == Plasma::Types::RightEdge) && -- cont->pluginInfo().pluginName() != QStringLiteral("org.kde.plasma.private.systemtray"); -+ cont->pluginMetaData().pluginId() != QStringLiteral("org.kde.plasma.private.systemtray"); - }; - - auto isDesktop = [] (Plasma::Containment *cont) { -@@ -493,7 +493,7 @@ QByteArray ShellCorona::dumpCurrentLayoutJS() const - - KConfigGroup appletConfig = applet->config(); - -- appletJson.insert("plugin", applet->pluginInfo().pluginName()); -+ appletJson.insert("plugin", applet->pluginMetaData().pluginId()); - appletJson.insert("config", dumpconfigGroupJS(appletConfig)); - - appletsJsonArray << appletJson; -@@ -560,7 +560,7 @@ QByteArray ShellCorona::dumpCurrentLayoutJS() const - QJsonObject appletJson; - - appletJson.insert("title", applet->title()); -- appletJson.insert("plugin", applet->pluginInfo().pluginName()); -+ appletJson.insert("plugin", applet->pluginMetaData().pluginId()); - - appletJson.insert("geometry.x", geometry.x() / gridUnit); - appletJson.insert("geometry.y", geometry.y() / gridUnit); -@@ -1238,11 +1238,11 @@ void ShellCorona::handleContainmentAdded(Plasma::Containment *c) - - void ShellCorona::executeSetupPlasmoidScript(Plasma::Containment *containment, Plasma::Applet *applet) - { -- if (!applet->pluginInfo().isValid() || !containment->pluginInfo().isValid()) { -+ if (!applet->pluginMetaData().isValid() || !containment->pluginMetaData().isValid()) { - return; - } - -- const QString scriptFile = m_lookAndFeelPackage.filePath("plasmoidsetupscripts", applet->pluginInfo().pluginName() + ".js"); -+ const QString scriptFile = m_lookAndFeelPackage.filePath("plasmoidsetupscripts", applet->pluginMetaData().pluginId() + ".js"); - - if (scriptFile.isEmpty()) { - return; -@@ -1541,7 +1541,7 @@ Plasma::Containment *ShellCorona::setContainmentTypeForScreen(int screen, const - //if creation failed or invalid plugin, give up - if (!newContainment) { - return oldContainment; -- } else if (!newContainment->pluginInfo().isValid()) { -+ } else if (!newContainment->pluginMetaData().isValid()) { - newContainment->deleteLater(); - return oldContainment; - } -@@ -1975,7 +1975,8 @@ void ShellCorona::activateLauncherMenu() - for (auto it = m_panelViews.constBegin(), end = m_panelViews.constEnd(); it != end; ++it) { - const auto applets = it.key()->applets(); - for (auto applet : applets) { -- if (applet->pluginInfo().property("X-Plasma-Provides").toStringList().contains(QStringLiteral("org.kde.plasma.launchermenu"))) { -+ const auto provides = KPluginMetaData::readStringList(applet->pluginMetaData().rawData(), QStringLiteral("X-Plasma-Provides")); -+ if (provides.contains(QLatin1String("org.kde.plasma.launchermenu"))) { - if (!applet->globalShortcut().isEmpty()) { - emit applet->activated(); - return; --- -2.7.3 - -From 59b2d1effcee8d449cbbcd237ba8cebaeb4dd949 Mon Sep 17 00:00:00 2001 -From: Kai Uwe Broulik <kde@privat.broulik.de> -Date: Mon, 14 Nov 2016 15:23:00 +0100 -Subject: [PATCH] [Windowed Widgets Runner] Don't access invalid - KPluginMetaData - -BUG: 372017 -FIXED-IN: 5.8.4 - -Differential Revision: https://phabricator.kde.org/D3356 ---- - runners/windowedwidgets/windowedwidgetsrunner.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/runners/windowedwidgets/windowedwidgetsrunner.cpp b/runners/windowedwidgets/windowedwidgetsrunner.cpp -index 7f093a7..706b1bb 100644 ---- a/runners/windowedwidgets/windowedwidgetsrunner.cpp -+++ b/runners/windowedwidgets/windowedwidgetsrunner.cpp -@@ -61,6 +61,10 @@ void WindowedWidgetsRunner::match(Plasma::RunnerContext &context) - QList<Plasma::QueryMatch> matches; - - foreach (const KPluginMetaData &md, Plasma::PluginLoader::self()->listAppletMetaData(QString())) { -+ if (!md.isValid()) { + foreach (const KPluginInfo &info, Plasma::PluginLoader::self()->listAppletInfo(QString())) { + KService::Ptr service = info.service(); ++ if (!service || !service->isValid()) { + continue; + } -+ - if (((md.name().contains(term, Qt::CaseInsensitive) || - md.value(QLatin1String("GenericName")).contains(term, Qt::CaseInsensitive) || - md.description().contains(term, Qt::CaseInsensitive)) || --- -2.7.3 - + + if (((service->name().contains(term, Qt::CaseInsensitive) || + service->genericName().contains(term, Qt::CaseInsensitive) || diff --git a/kde-plasma/plasma-workspace/plasma-workspace-5.8.3-r3.ebuild b/kde-plasma/plasma-workspace/plasma-workspace-5.8.3-r3.ebuild new file mode 100644 index 000000000000..c97f621a5c86 --- /dev/null +++ b/kde-plasma/plasma-workspace/plasma-workspace-5.8.3-r3.ebuild @@ -0,0 +1,176 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +KDE_HANDBOOK="forceoptional" +KDE_TEST="forceoptional" +VIRTUALX_REQUIRED="test" +inherit kde5 multilib qmake-utils + +DESCRIPTION="KDE Plasma workspace" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+calendar geolocation gps prison qalculate +semantic-desktop" + +COMMON_DEPEND=" + $(add_frameworks_dep kactivities) + $(add_frameworks_dep kauth) + $(add_frameworks_dep kbookmarks) + $(add_frameworks_dep kcmutils) + $(add_frameworks_dep kcompletion) + $(add_frameworks_dep kconfig) + $(add_frameworks_dep kconfigwidgets) + $(add_frameworks_dep kcoreaddons) + $(add_frameworks_dep kcrash) + $(add_frameworks_dep kdbusaddons) + $(add_frameworks_dep kdeclarative) + $(add_frameworks_dep kdelibs4support) + $(add_frameworks_dep kdesu) + $(add_frameworks_dep kglobalaccel) + $(add_frameworks_dep kguiaddons) + $(add_frameworks_dep ki18n) + $(add_frameworks_dep kiconthemes) + $(add_frameworks_dep kidletime) + $(add_frameworks_dep kio) + $(add_frameworks_dep kitemmodels) + $(add_frameworks_dep kitemviews) + $(add_frameworks_dep kjobwidgets) + $(add_frameworks_dep kjs) + $(add_frameworks_dep kjsembed) + $(add_frameworks_dep knewstuff) + $(add_frameworks_dep knotifications) + $(add_frameworks_dep knotifyconfig) + $(add_frameworks_dep kpackage) + $(add_frameworks_dep krunner) + $(add_frameworks_dep kservice) + $(add_frameworks_dep ktexteditor) + $(add_frameworks_dep ktextwidgets) + $(add_frameworks_dep kwallet) + $(add_frameworks_dep kwayland) + $(add_frameworks_dep kwidgetsaddons) + $(add_frameworks_dep kwindowsystem) + $(add_frameworks_dep kxmlgui) + $(add_frameworks_dep kxmlrpcclient) + $(add_frameworks_dep plasma) + $(add_frameworks_dep solid) + $(add_plasma_dep kscreenlocker) + $(add_plasma_dep kwin) + $(add_plasma_dep libksysguard) + $(add_qt_dep qtconcurrent) + $(add_qt_dep qtdbus) + $(add_qt_dep qtdeclarative 'widgets') + $(add_qt_dep qtgui 'jpeg') + $(add_qt_dep qtnetwork) + $(add_qt_dep qtscript) + $(add_qt_dep qtsql) + $(add_qt_dep qtwidgets) + $(add_qt_dep qtx11extras) + $(add_qt_dep qtxml) + dev-libs/libdbusmenu-qt[qt5] + media-libs/phonon[qt5] + sys-libs/zlib + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXau + x11-libs/libxcb + x11-libs/libXfixes + x11-libs/libXrender + x11-libs/xcb-util + x11-libs/xcb-util-image + calendar? ( $(add_kdeapps_dep kholidays) ) + geolocation? ( $(add_frameworks_dep networkmanager-qt) ) + gps? ( sci-geosciences/gpsd ) + prison? ( media-libs/prison:5 ) + qalculate? ( sci-libs/libqalculate ) + semantic-desktop? ( $(add_frameworks_dep baloo) ) +" +RDEPEND="${COMMON_DEPEND} + $(add_frameworks_dep kded) + $(add_kdeapps_dep kio-extras) + $(add_plasma_dep kde-cli-tools) + $(add_plasma_dep ksysguard) + $(add_plasma_dep milou) + $(add_plasma_dep plasma-integration) + $(add_qt_dep qdbus) + $(add_qt_dep qtgraphicaleffects) + $(add_qt_dep qtpaths) + $(add_qt_dep qtquickcontrols 'widgets') + app-text/iso-codes + x11-apps/mkfontdir + x11-apps/xmessage + x11-apps/xprop + x11-apps/xrdb + x11-apps/xset + x11-apps/xsetroot + !dev-libs/xembed-sni-proxy + !kde-base/freespacenotifier:4 + !kde-base/libtaskmanager:4 + !kde-base/kcminit:4 + !kde-base/kdebase-startkde:4 + !kde-base/klipper:4 + !kde-base/krunner:4 + !kde-base/ksmserver:4 + !kde-base/ksplash:4 + !kde-base/plasma-workspace:4 +" +DEPEND="${COMMON_DEPEND} + x11-proto/xproto +" + +PATCHES=( + "${FILESDIR}/${PN}-5.4-startkde-script.patch" + # stable branch + "${FILESDIR}/${PN}-5.8.3-all-outputs-known.patch" + "${FILESDIR}/${PN}-5.8.3-sync-app-w-applets-config.patch" + "${FILESDIR}/${PN}-5.8.3-dont-connect-twice.patch" + "${FILESDIR}/${PN}-5.8.3-screenpool-screenchange.patch" + "${FILESDIR}/${PN}-5.8.3-krunner-crash.patch" + # master + "${FILESDIR}/${PN}-5.7.90-baloo-optional.patch" + "${FILESDIR}/${PN}-5.8.3-systray-cpuload.patch" +) + +RESTRICT+=" test" + +src_prepare() { + kde5_src_prepare + + sed -e "s|\`qtpaths|\`$(qt5_get_bindir)/qtpaths|" \ + -i startkde/startkde.cmake startkde/startplasmacompositor.cmake || die +} + +src_configure() { + local mycmakeargs=( + $(cmake-utils_use_find_package calendar KF5Holidays) + $(cmake-utils_use_find_package geolocation KF5NetworkManagerQt) + $(cmake-utils_use_find_package gps libgps) + $(cmake-utils_use_find_package prison KF5Prison) + $(cmake-utils_use_find_package qalculate Qalculate) + $(cmake-utils_use_find_package semantic-desktop KF5Baloo) + ) + + kde5_src_configure +} + +src_install() { + kde5_src_install + + # startup and shutdown scripts + insinto /etc/plasma/startup + doins "${FILESDIR}/10-agent-startup.sh" + + insinto /etc/plasma/shutdown + doins "${FILESDIR}/10-agent-shutdown.sh" +} + +pkg_postinst () { + kde5_pkg_postinst + + echo + elog "To enable gpg-agent and/or ssh-agent in Plasma sessions," + elog "edit ${EPREFIX}/etc/plasma/startup/10-agent-startup.sh and" + elog "${EPREFIX}/etc/plasma/shutdown/10-agent-shutdown.sh" + echo +} |