public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-workspace/, kde-plasma/plasma-workspace/files/
Date: Wed, 30 Nov 2022 01:44:11 +0000 (UTC)	[thread overview]
Message-ID: <1669772550.1fde9bdcfb26c7bb0ae09d9954106108a203bd36.sam@gentoo> (raw)

commit:     1fde9bdcfb26c7bb0ae09d9954106108a203bd36
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 25 09:18:30 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Nov 30 01:42:30 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1fde9bdc

kde-plasma/plasma-workspace: backport upstream fixes for 5.25.5

Upstream commit: 432d7c4b51c5a1f17af327d770266b3fe81e5ae5
Upstream commit: d693026676cc6bf2b7c23e9ff4b620679cf15d10
Upstream commit: 0a01c8910309fb9f289fe0aa58492e106d154548
Upstream commit: f30431c9ed0bb70506cbc72ea337323660a0dc14
Upstream commit: b983f1c758552346083ffe0b3d47173b487ae426

KDE-bug: https://bugs.kde.org/420245
KDE-bug: https://bugs.kde.org/449984
KDE-bug: https://bugs.kde.org/457341
KDE-bug: https://bugs.kde.org/413645
Bug: https://bugs.gentoo.org/883289
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...sma-workspace-5.25.5-geolocation-deadlock.patch | 194 +++++++++++++++++
 .../plasma-workspace-5.25.5-layout-save.patch      |  33 +++
 .../plasma-workspace-5.25.5-lock-layout.patch      | 113 ++++++++++
 ...ace-5.25.5-prevent-panel-go-out-of-screen.patch |   8 -
 .../files/plasma-workspace-5.25.5-relayout.patch   |  22 ++
 ...a-workspace-5.25.5-systray-double-destroy.patch |  24 +++
 .../plasma-workspace-5.25.5-r5.ebuild              | 229 +++++++++++++++++++++
 7 files changed, 615 insertions(+), 8 deletions(-)

diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch
new file mode 100644
index 000000000000..70bd28419472
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-geolocation-deadlock.patch
@@ -0,0 +1,194 @@
+https://invent.kde.org/plasma/plasma-workspace/-/commit/d693026676cc6bf2b7c23e9ff4b620679cf15d10
+
+From d693026676cc6bf2b7c23e9ff4b620679cf15d10 Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@gmx.de>
+Date: Mon, 15 Aug 2022 18:36:56 +0200
+Subject: [PATCH] [dataengines/geolocation] Port from KIO::http_post to
+ QNetworkAccessManager
+
+Not only does this slightly simplify the code, it also avoids a deadlock in kded when automatic proxy detection is enabled
+
+BUG: 449984
+
+BUG: 457341
+(cherry picked from commit 98cadd48c21c89b81fdeb3499a557a6551a09d8a)
+---
+ dataengines/geolocation/CMakeLists.txt  |  2 +-
+ dataengines/geolocation/location_ip.cpp | 84 ++++++++++---------------
+ 2 files changed, 35 insertions(+), 51 deletions(-)
+
+diff --git a/dataengines/geolocation/CMakeLists.txt b/dataengines/geolocation/CMakeLists.txt
+index 175687bd4d..6ae707643c 100644
+--- a/dataengines/geolocation/CMakeLists.txt
++++ b/dataengines/geolocation/CMakeLists.txt
+@@ -36,7 +36,7 @@ target_link_libraries(plasma_engine_geolocation
+ kcoreaddons_add_plugin(plasma-geolocation-ip SOURCES location_ip.cpp INSTALL_NAMESPACE plasma/geolocationprovider)
+ ecm_qt_declare_logging_category(plasma-geolocation-ip HEADER geolocdebug.h IDENTIFIER DATAENGINE_GEOLOCATION CATEGORY_NAME org.kde.plasma.dataengine.geolocation)
+ target_compile_definitions(plasma-geolocation-ip PRIVATE -DQT_NO_KEYWORDS)
+-target_link_libraries(plasma-geolocation-ip plasma-geolocation-interface KF5::KIOCore KF5::NetworkManagerQt)
++target_link_libraries(plasma-geolocation-ip plasma-geolocation-interface KF5::NetworkManagerQt)
+ 
+ pkg_check_modules(LIBGPS libgps IMPORTED_TARGET)
+ 
+diff --git a/dataengines/geolocation/location_ip.cpp b/dataengines/geolocation/location_ip.cpp
+index 27b530810c..3c5a202b89 100644
+--- a/dataengines/geolocation/location_ip.cpp
++++ b/dataengines/geolocation/location_ip.cpp
+@@ -12,15 +12,14 @@
+ 
+ #include "location_ip.h"
+ #include "geolocdebug.h"
+-#include <KIO/Job>
+-#include <KIO/TransferJob>
+-#include <KJob>
+ #include <KSharedConfig>
+ #include <NetworkManagerQt/Manager>
+ #include <NetworkManagerQt/WirelessDevice>
+ #include <QJsonArray>
+ #include <QJsonDocument>
+ #include <QJsonObject>
++#include <QNetworkAccessManager>
++#include <QNetworkReply>
+ #include <QUrl>
+ 
+ class Ip::Private : public QObject
+@@ -30,19 +29,21 @@ public:
+     Private(Ip *q)
+         : q(q)
+     {
++        m_nam.setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
++        m_nam.setStrictTransportSecurityEnabled(true);
++        m_nam.enableStrictTransportSecurityStore(true,
++                                                 QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/plasmashell/hsts/"));
+     }
+ 
+-    void readGeoLocation(KJob *job)
++    void readGeoLocation(QNetworkReply *reply)
+     {
+         m_geoLocationResolved = true;
+-        if (job && job->error()) {
+-            qCCritical(DATAENGINE_GEOLOCATION) << "error: " << job->errorString();
+-            m_geoLocationPayload.clear();
++        if (reply->error()) {
++            qCCritical(DATAENGINE_GEOLOCATION) << "error: " << reply->errorString();
+             checkUpdateData();
+             return;
+         }
+-        const QJsonObject json = QJsonDocument::fromJson(m_geoLocationPayload).object();
+-        m_geoLocationPayload.clear();
++        const QJsonObject json = QJsonDocument::fromJson(reply->readAll()).object();
+ 
+         auto accuracyIt = json.find(QStringLiteral("accuracy"));
+         if (accuracyIt != json.end()) {
+@@ -62,52 +63,28 @@ public:
+ 
+     void clear()
+     {
+-        m_geoLocationPayload.clear();
+-        m_countryPayload.clear();
+         m_countryResolved = false;
+         m_geoLocationResolved = false;
+         m_data.clear();
+     }
+ 
+-    void geoLocationData(KIO::Job *job, const QByteArray &data)
+-    {
+-        Q_UNUSED(job)
+-
+-        if (data.isEmpty()) {
+-            return;
+-        }
+-        m_geoLocationPayload.append(data);
+-    }
+-
+-    void countryData(KIO::Job *job, const QByteArray &data)
+-    {
+-        Q_UNUSED(job)
+-
+-        if (data.isEmpty()) {
+-            return;
+-        }
+-        m_countryPayload.append(data);
+-    }
+-
+-    void readCountry(KJob *job)
++    void readCountry(QNetworkReply *reply)
+     {
+         m_countryResolved = true;
+-        if (job && job->error()) {
+-            qCCritical(DATAENGINE_GEOLOCATION) << "error: " << job->errorString();
+-            m_countryPayload.clear();
++        if (reply->error()) {
++            qCCritical(DATAENGINE_GEOLOCATION) << "error: " << reply->errorString();
+             checkUpdateData();
+             return;
+         }
+ 
+-        const QJsonObject json = QJsonDocument::fromJson(m_countryPayload).object();
+-        m_countryPayload.clear();
++        const QJsonObject json = QJsonDocument::fromJson(reply->readAll()).object();
+ 
+         m_data[QStringLiteral("country")] = json.value(QStringLiteral("country_name")).toString();
+         m_data[QStringLiteral("country code")] = json.value(QStringLiteral("country_code")).toString();
++
+         checkUpdateData();
+     }
+ 
+-private:
+     void checkUpdateData()
+     {
+         if (!m_countryResolved || !m_geoLocationResolved) {
+@@ -117,11 +94,10 @@ private:
+     }
+ 
+     Ip *q;
+-    QByteArray m_geoLocationPayload;
+-    QByteArray m_countryPayload;
+     bool m_countryResolved = false;
+     bool m_geoLocationResolved = false;
+     Plasma::DataEngine::Data m_data;
++    QNetworkAccessManager m_nam;
+ };
+ 
+ Ip::Ip(QObject *parent, const QVariantList &args)
+@@ -176,18 +152,26 @@ void Ip::update()
+     }
+     const QByteArray postData = QJsonDocument(request).toJson(QJsonDocument::Compact);
+     const QString apiKey = QStringLiteral("60e8eae6-3988-4ada-ad48-2cfddddf216b");
+-    KIO::TransferJob *datajob =
+-        KIO::http_post(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/geolocate?key=%1").arg(apiKey)), postData, KIO::HideProgressInfo);
+-    datajob->addMetaData(QStringLiteral("content-type"), QStringLiteral("application/json"));
+ 
+     qCDebug(DATAENGINE_GEOLOCATION) << "Fetching https://location.services.mozilla.com/v1/geolocate";
+-    connect(datajob, &KIO::TransferJob::data, d, &Ip::Private::geoLocationData);
+-    connect(datajob, &KIO::TransferJob::result, d, &Ip::Private::readGeoLocation);
+-
+-    datajob = KIO::http_post(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/country?key=%1").arg(apiKey)), postData, KIO::HideProgressInfo);
+-    datajob->addMetaData(QStringLiteral("content-type"), QStringLiteral("application/json"));
+-    connect(datajob, &KIO::TransferJob::data, d, &Ip::Private::countryData);
+-    connect(datajob, &KIO::TransferJob::result, d, &Ip::Private::readCountry);
++    QNetworkRequest locationRequest(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/geolocate?key=%1").arg(apiKey)));
++    locationRequest.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));
++    QNetworkReply *locationReply = d->m_nam.post(locationRequest, postData);
++
++    connect(locationReply, &QNetworkReply::finished, this, [this, locationReply] {
++        locationReply->deleteLater();
++        d->readGeoLocation(locationReply);
++    });
++
++    qCDebug(DATAENGINE_GEOLOCATION) << "Fetching https://location.services.mozilla.com/v1/country";
++    QNetworkRequest countryRequest(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/country?key=%1").arg(apiKey)));
++    countryRequest.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json"));
++    QNetworkReply *countryReply = d->m_nam.post(countryRequest, postData);
++
++    connect(countryReply, &QNetworkReply::finished, this, [this, countryReply] {
++        countryReply->deleteLater();
++        d->readCountry(countryReply);
++    });
+ }
+ 
+ K_PLUGIN_CLASS_WITH_JSON(Ip, "plasma-geolocation-ip.json")
+-- 
+GitLab
+
+

diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-layout-save.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-layout-save.patch
new file mode 100644
index 000000000000..ed298549128a
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-layout-save.patch
@@ -0,0 +1,33 @@
+https://invent.kde.org/plasma/plasma-workspace/-/commit/b983f1c758552346083ffe0b3d47173b487ae426
+
+From b983f1c758552346083ffe0b3d47173b487ae426 Mon Sep 17 00:00:00 2001
+From: Aaron Rainbolt <arraybolt3@gmail.com>
+Date: Wed, 19 Oct 2022 14:16:26 -0500
+Subject: [PATCH] Save layout immediately after a resolution change triggered
+ relayout
+
+(cherry picked from commit f33cd92fbfb765299018bddc2a86ac5326731231)
+---
+ components/containmentlayoutmanager/appletslayout.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/components/containmentlayoutmanager/appletslayout.cpp b/components/containmentlayoutmanager/appletslayout.cpp
+index 70970e8919..c3e957cbd9 100644
+--- a/components/containmentlayoutmanager/appletslayout.cpp
++++ b/components/containmentlayoutmanager/appletslayout.cpp
+@@ -80,6 +80,11 @@ AppletsLayout::AppletsLayout(QQuickItem *parent)
+             } else if (!m_geometryBeforeResolutionChange.isEmpty()) {
+                 m_layoutManager->layoutGeometryChanged(newGeom, m_geometryBeforeResolutionChange);
+                 m_geometryBeforeResolutionChange = QRectF();
++
++                // If the user doesn't move a widget after this is done, the widget positions won't be saved and they will be in the wrong
++                // places on next login, so save them now.
++
++                save();
+             }
+         }
+         m_layoutChanges = NoChange;
+-- 
+GitLab
+
+

diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-lock-layout.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-lock-layout.patch
new file mode 100644
index 000000000000..422b22a678dd
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-lock-layout.patch
@@ -0,0 +1,113 @@
+https://invent.kde.org/plasma/plasma-workspace/-/commit/0a01c8910309fb9f289fe0aa58492e106d154548
+
+From 0a01c8910309fb9f289fe0aa58492e106d154548 Mon Sep 17 00:00:00 2001
+From: Marco Martin <notmart@gmail.com>
+Date: Sun, 25 Sep 2022 16:47:31 -0500
+Subject: [PATCH] Introduce a lock that blocks relayouts and config writes
+
+The resize of the layout area can happen either by screen resolution
+change or available screen area change (a panel appears or is resized)
+This is not an atomic operation, as width and height are usually set in
+2 different operations, and even worse the layout area is resized to
+  match the available one with an animation, so many intermediate resizes
+that should never cause a relayout happen.
+In normal operation an event compression timer limits the actual
+relayouts to hopefully one, but if the system is really slowed down
+(for instance, startup) the timer may expire and cause relayouts in
+non useful sizes, losing the needed configuration
+In combination with
+
+The lock blocks all relayout and config writes when the size of the
+layout area doesn't correspond to corona availablescreenrect, which are
+the only "settled" cases.
+
+BUG:413645
+--- a/components/containmentlayoutmanager/appletslayout.cpp
++++ b/components/containmentlayoutmanager/appletslayout.cpp
+@@ -56,9 +56,10 @@ AppletsLayout::AppletsLayout(QQuickItem *parent)
+     connect(m_layoutChangeTimer, &QTimer::timeout, this, [this]() {
+         // We can't assume m_containment to be valid: if we load in a plasmoid that can run also
+         // in "applet" mode, m_containment will never be valid
+-        if (!m_containment) {
++        if (!m_containment || width() <= 0 || height() <= 0 || m_relayoutLock) {
+             return;
+         }
++
+         const QString &serializedConfig = m_containment->config().readEntry(m_configKey, "");
+         if ((m_layoutChanges & ConfigKeyChange) && !serializedConfig.isEmpty()) {
+             if (!m_configKey.isEmpty() && m_containment) {
+@@ -169,6 +170,27 @@ void AppletsLayout::setFallbackConfigKey(const QString &key)
+     Q_EMIT fallbackConfigKeyChanged();
+ }
+ 
++bool AppletsLayout::relayoutLock() const
++{
++    return m_relayoutLock;
++}
++
++void AppletsLayout::setRelayoutLock(bool lock)
++{
++    if (lock == m_relayoutLock) {
++        return;
++    }
++
++    m_relayoutLock = lock;
++
++    if (!lock && m_layoutChanges != NoChange) {
++        m_layoutChangeTimer->start();
++    }
++
++    Q_EMIT relayoutLockChanged();
++}
++
++
+ QJSValue AppletsLayout::acceptsAppletCallback() const
+ {
+     return m_acceptsAppletCallback;
+@@ -468,7 +490,7 @@ void AppletsLayout::geometryChanged(const QRectF &newGeometry, const QRectF &old
+     }
+ 
+     // Only do a layouting procedure if we received a valid size
+-    if (!newGeometry.isEmpty()) {
++    if (!newGeometry.isEmpty() && newGeometry != oldGeometry) {
+         m_layoutChanges |= SizeChange;
+         m_layoutChangeTimer->start();
+     }
+--- a/components/containmentlayoutmanager/appletslayout.h
++++ b/components/containmentlayoutmanager/appletslayout.h
+@@ -39,6 +39,8 @@ class AppletsLayout : public QQuickItem
+     // from the screen size and plasma starts on an "unexpected" size
+     Q_PROPERTY(QString fallbackConfigKey READ fallbackConfigKey WRITE setFallbackConfigKey NOTIFY fallbackConfigKeyChanged)
+ 
++    Q_PROPERTY(bool relayoutLock READ relayoutLock WRITE setRelayoutLock NOTIFY relayoutLockChanged)
++
+     Q_PROPERTY(PlasmaQuick::AppletQuickItem *containment READ containment WRITE setContainment NOTIFY containmentChanged)
+ 
+     Q_PROPERTY(QJSValue acceptsAppletCallback READ acceptsAppletCallback WRITE setAcceptsAppletCallback NOTIFY acceptsAppletCallbackChanged)
+@@ -103,6 +105,9 @@ public:
+     QString fallbackConfigKey() const;
+     void setFallbackConfigKey(const QString &key);
+ 
++    bool relayoutLock() const;
++    void setRelayoutLock(bool lock);
++
+     PlasmaQuick::AppletQuickItem *containment() const;
+     void setContainment(PlasmaQuick::AppletQuickItem *containment);
+ 
+@@ -162,6 +167,7 @@ Q_SIGNALS:
+ 
+     void configKeyChanged();
+     void fallbackConfigKeyChanged();
++    void relayoutLockChanged();
+     void containmentChanged();
+     void minimumItemWidthChanged();
+     void minimumItemHeightChanged();
+@@ -226,6 +232,7 @@ private:
+     QPointF m_mouseDownPosition = QPoint(-1, -1);
+     bool m_mouseDownWasEditMode = false;
+     bool m_editMode = false;
++    bool m_relayoutLock = false;
+ };
+ 
+ Q_DECLARE_OPERATORS_FOR_FLAGS(AppletsLayout::LayoutChanges)
+GitLab

diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-prevent-panel-go-out-of-screen.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-prevent-panel-go-out-of-screen.patch
index 457470f0807c..ef94ed3afa00 100644
--- a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-prevent-panel-go-out-of-screen.patch
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-prevent-panel-go-out-of-screen.patch
@@ -10,12 +10,6 @@ There is still a known culprit (duplicate display names) so the hack shouldn't b
 
 CCBUG: 353975
 CCBUG: 438114
----
- shell/panelview.cpp | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/shell/panelview.cpp b/shell/panelview.cpp
-index b5c87bbf71..4be1e26ca4 100644
 --- a/shell/panelview.cpp
 +++ b/shell/panelview.cpp
 @@ -859,6 +859,9 @@ void PanelView::moveEvent(QMoveEvent *ev)
@@ -28,6 +22,4 @@ index b5c87bbf71..4be1e26ca4 100644
  }
  
  void PanelView::keyPressEvent(QKeyEvent *event)
--- 
 GitLab
-

diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-relayout.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-relayout.patch
new file mode 100644
index 000000000000..efd211c26de4
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-relayout.patch
@@ -0,0 +1,22 @@
+https://invent.kde.org/plasma/plasma-workspace/-/commit/f30431c9ed0bb70506cbc72ea337323660a0dc14
+
+From f30431c9ed0bb70506cbc72ea337323660a0dc14 Mon Sep 17 00:00:00 2001
+From: Aaron Rainbolt <arraybolt3@gmail.com>
+Date: Wed, 19 Oct 2022 14:15:16 -0500
+Subject: [PATCH] Remove unnecessary heuristic relayout function call
+
+(cherry picked from commit c344410a061862dd4802581a1ac3b9a09758ace0)
+--- a/components/containmentlayoutmanager/appletslayout.cpp
++++ b/components/containmentlayoutmanager/appletslayout.cpp
+@@ -80,10 +80,6 @@ AppletsLayout::AppletsLayout(QQuickItem *parent)
+             } else if (!m_geometryBeforeResolutionChange.isEmpty()) {
+                 m_layoutManager->layoutGeometryChanged(newGeom, m_geometryBeforeResolutionChange);
+                 m_geometryBeforeResolutionChange = QRectF();
+-
+-                // Heuristically relayout items only when the plasma startup is fully completed
+-            } else {
+-                polish();
+             }
+         }
+         m_layoutChanges = NoChange;
+GitLab

diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-systray-double-destroy.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-systray-double-destroy.patch
new file mode 100644
index 000000000000..3719f2dcae7a
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.25.5-systray-double-destroy.patch
@@ -0,0 +1,24 @@
+https://invent.kde.org/plasma/plasma-workspace/-/commit/432d7c4b51c5a1f17af327d770266b3fe81e5ae5
+
+From 432d7c4b51c5a1f17af327d770266b3fe81e5ae5 Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@gmx.de>
+Date: Tue, 27 Sep 2022 18:04:51 +0200
+Subject: [PATCH] [applets/systemtray] Don't manually destroy innerContainment
+
+It's already destroyed by the corona
+
+BUG: 420245
+(cherry picked from commit 7baa4c221e45f161adf4e00d4cf0e36d6436e90c)
+--- a/applets/systemtray/container/systemtraycontainer.cpp
++++ b/applets/systemtray/container/systemtraycontainer.cpp
+@@ -20,9 +20,6 @@ SystemTrayContainer::SystemTrayContainer(QObject *parent, const KPluginMetaData
+ 
+ SystemTrayContainer::~SystemTrayContainer()
+ {
+-    if (destroyed()) {
+-        m_innerContainment->destroy();
+-    }
+ }
+ 
+ void SystemTrayContainer::init()
+GitLab

diff --git a/kde-plasma/plasma-workspace/plasma-workspace-5.25.5-r5.ebuild b/kde-plasma/plasma-workspace/plasma-workspace-5.25.5-r5.ebuild
new file mode 100644
index 000000000000..973ec86a90e6
--- /dev/null
+++ b/kde-plasma/plasma-workspace/plasma-workspace-5.25.5-r5.ebuild
@@ -0,0 +1,229 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="optional"
+ECM_TEST="forceoptional"
+KFMIN=5.99.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=5.15.5
+VIRTUALX_REQUIRED="test"
+inherit ecm plasma.kde.org
+
+DESCRIPTION="KDE Plasma workspace"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="appstream +calendar +fontconfig geolocation gps +policykit
+screencast +semantic-desktop telemetry"
+
+REQUIRED_USE="gps? ( geolocation )"
+RESTRICT="test"
+
+# slot op: various private QtWaylandClient headers
+COMMON_DEPEND="
+	dev-libs/icu:=
+	>=dev-libs/wayland-1.15
+	>=dev-qt/qtdbus-${QTMIN}:5
+	>=dev-qt/qtdeclarative-${QTMIN}:5[widgets]
+	>=dev-qt/qtgui-${QTMIN}:5=[jpeg,libinput]
+	>=dev-qt/qtnetwork-${QTMIN}:5
+	>=dev-qt/qtsql-${QTMIN}:5
+	>=dev-qt/qtsvg-${QTMIN}:5
+	>=dev-qt/qtwayland-${QTMIN}:5=
+	>=dev-qt/qtwidgets-${QTMIN}:5
+	>=dev-qt/qtx11extras-${QTMIN}:5
+	>=dev-qt/qtxml-${QTMIN}:5
+	>=kde-frameworks/kactivities-${KFMIN}:5
+	>=kde-frameworks/kactivities-stats-${KFMIN}:5
+	>=kde-frameworks/karchive-${KFMIN}:5
+	>=kde-frameworks/kauth-${KFMIN}:5
+	>=kde-frameworks/kbookmarks-${KFMIN}:5
+	>=kde-frameworks/kcompletion-${KFMIN}:5
+	>=kde-frameworks/kconfig-${KFMIN}:5
+	>=kde-frameworks/kconfigwidgets-${KFMIN}:5
+	>=kde-frameworks/kcoreaddons-${KFMIN}:5
+	>=kde-frameworks/kcrash-${KFMIN}:5
+	>=kde-frameworks/kdbusaddons-${KFMIN}:5
+	>=kde-frameworks/kdeclarative-${KFMIN}:5
+	>=kde-frameworks/kded-${KFMIN}:5
+	>=kde-frameworks/kglobalaccel-${KFMIN}:5
+	>=kde-frameworks/kguiaddons-${KFMIN}:5
+	>=kde-frameworks/ki18n-${KFMIN}:5
+	>=kde-frameworks/kiconthemes-${KFMIN}:5
+	>=kde-frameworks/kidletime-${KFMIN}:5
+	>=kde-frameworks/kinit-${KFMIN}:5
+	>=kde-frameworks/kio-${KFMIN}:5
+	>=kde-frameworks/kitemmodels-${KFMIN}:5
+	>=kde-frameworks/kitemviews-${KFMIN}:5
+	>=kde-frameworks/kjobwidgets-${KFMIN}:5
+	>=kde-frameworks/knewstuff-${KFMIN}:5
+	>=kde-frameworks/knotifications-${KFMIN}:5
+	>=kde-frameworks/knotifyconfig-${KFMIN}:5
+	>=kde-frameworks/kpackage-${KFMIN}:5
+	>=kde-frameworks/kpeople-${KFMIN}:5
+	>=kde-frameworks/krunner-${KFMIN}:5
+	>=kde-frameworks/kservice-${KFMIN}:5
+	>=kde-frameworks/ktexteditor-${KFMIN}:5
+	>=kde-frameworks/ktextwidgets-${KFMIN}:5
+	>=kde-frameworks/kunitconversion-${KFMIN}:5
+	>=kde-frameworks/kwallet-${KFMIN}:5
+	>=kde-frameworks/kwayland-${KFMIN}:5
+	>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+	>=kde-frameworks/kwindowsystem-${KFMIN}:5
+	>=kde-frameworks/kxmlgui-${KFMIN}:5
+	>=kde-frameworks/plasma-${KFMIN}:5
+	>=kde-frameworks/prison-${KFMIN}:5[qml]
+	>=kde-frameworks/solid-${KFMIN}:5
+	>=kde-plasma/breeze-${PVCUT}:5
+	>=kde-plasma/kscreenlocker-${PVCUT}:5
+	>=kde-plasma/kwin-${PVCUT}:5
+	>=kde-plasma/layer-shell-qt-${PVCUT}:5
+	>=kde-plasma/libkscreen-${PVCUT}:5
+	>=kde-plasma/libksysguard-${PVCUT}:5
+	>=kde-plasma/libkworkspace-${PVCUT}:5
+	>=media-libs/phonon-4.11.0
+	sci-libs/libqalculate:=
+	sys-libs/zlib
+	x11-libs/libICE
+	x11-libs/libSM
+	x11-libs/libX11
+	x11-libs/libXau
+	x11-libs/libxcb
+	x11-libs/libXcursor
+	x11-libs/libXfixes
+	x11-libs/libXrender
+	x11-libs/libXtst
+	x11-libs/xcb-util
+	x11-libs/xcb-util-image
+	appstream? ( dev-libs/appstream[qt5] )
+	calendar? ( >=kde-frameworks/kholidays-${KFMIN}:5 )
+	fontconfig? (
+		>=dev-qt/qtprintsupport-${QTMIN}:5
+		media-libs/fontconfig
+		x11-libs/libXft
+		x11-libs/xcb-util-image
+	)
+	geolocation? ( >=kde-frameworks/networkmanager-qt-${KFMIN}:5 )
+	gps? ( sci-geosciences/gpsd )
+	policykit? ( virtual/libcrypt:= )
+	screencast? (
+		>=dev-qt/qtgui-${QTMIN}:5=[egl]
+		media-libs/libglvnd
+		>=media-video/pipewire-0.3:=
+		x11-libs/libdrm
+	)
+	semantic-desktop? ( >=kde-frameworks/baloo-${KFMIN}:5 )
+	telemetry? ( dev-libs/kuserfeedback:5 )
+"
+DEPEND="${COMMON_DEPEND}
+	>=dev-libs/plasma-wayland-protocols-1.6.0
+	>=dev-qt/qtconcurrent-${QTMIN}:5
+	>=dev-util/wayland-scanner-1.19.0
+	x11-base/xorg-proto
+	fontconfig? ( x11-libs/libXrender )
+	test? ( >=dev-libs/wayland-protocols-1.24 )
+"
+RDEPEND="${COMMON_DEPEND}
+	app-text/iso-codes
+	>=dev-qt/qdbus-${QTMIN}:*
+	>=dev-qt/qtgraphicaleffects-${QTMIN}:5
+	>=dev-qt/qtpaths-${QTMIN}:5
+	>=dev-qt/qtquickcontrols-${QTMIN}:5[widgets]
+	>=dev-qt/qtquickcontrols2-${QTMIN}:5
+	kde-apps/kio-extras:5
+	>=kde-frameworks/kirigami-${KFMIN}:5
+	>=kde-frameworks/kquickcharts-${KFMIN}:5
+	>=kde-plasma/milou-${PVCUT}:5
+	>=kde-plasma/plasma-integration-${PVCUT}:5
+	sys-apps/dbus
+	x11-apps/xmessage
+	x11-apps/xprop
+	x11-apps/xrdb
+	x11-apps/xsetroot
+	!<kde-plasma/breeze-5.22.90:5
+	!<kde-plasma/plasma-desktop-5.23.90:5
+	policykit? ( sys-apps/accountsservice )
+"
+BDEPEND="
+	>=dev-qt/qtwaylandscanner-${QTMIN}:5
+	virtual/pkgconfig
+"
+PDEPEND=">=kde-plasma/kde-cli-tools-${PVCUT}:5"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-5.24.80-split-libkworkspace.patch" # downstream
+	"${FILESDIR}/${PN}-5.22.5-krunner-cwd-at-home.patch" # TODO upstream: KDE-bug 432975, bug 767478
+	"${FILESDIR}/${P}-widgetexplorer-recurse-containments.patch" # https://mail.kde.org/pipermail/distributions/2022-September/001287.html
+	"${FILESDIR}/${P}-delay-ksplash-until-after-env-setup.patch" # KDE-bug 458865 w/ Qt 5.15.6
+	"${FILESDIR}/${P}-fonts-honor-and-present-system-defaults.patch" # KDE-bug 416140
+	"${FILESDIR}/${P}-prevent-panel-go-out-of-screen.patch" # git master and Plasma/5.24 branch double revert
+	"${FILESDIR}/${P}-fix-setpassword.patch" # Plasma/5.25 branch, KDE-bug 459309
+	"${FILESDIR}/${P}-systray-double-destroy.patch" # Plasma/5.24 branch, KDE-bug 420245
+	"${FILESDIR}/${P}-geolocation-deadlock.patch" # Plasma/5.24 branch, KDE-bug 449984, KDE-bug 457341
+	"${FILESDIR}/${P}-lock-layout.patch" # Plasma/5.24 branch, KDE-bug 413645
+	"${FILESDIR}/${P}-relayout.patch" # Plasma/5.24 branch
+	"${FILESDIR}/${P}-layout-save.patch" # Plasma/5.24 branch
+)
+
+src_prepare() {
+	ecm_src_prepare
+
+	cmake_comment_add_subdirectory libkworkspace
+	# delete colliding libkworkspace translations
+	if [[ ${KDE_BUILD_TYPE} = release ]]; then
+		find po -type f -name "*po" -and -name "libkworkspace*" -delete || die
+	fi
+
+	# TODO: try to get a build switch upstreamed
+	if ! use screencast; then
+		sed -e "s/^pkg_check_modules.*PipeWire/#&/" -i CMakeLists.txt || die
+	fi
+
+	# TODO: try to get a build switch upstreamed
+	if use geolocation; then
+		use gps || sed -e "s/^pkg_check_modules.*LIBGPS/#&/" \
+			-i dataengines/geolocation/CMakeLists.txt || die
+	fi
+
+	if ! use policykit; then
+		cmake_run_in kcms cmake_comment_add_subdirectory users
+	fi
+}
+
+src_configure() {
+	local mycmakeargs=(
+		-DBUILD_xembed-sni-proxy=OFF
+		-DCMAKE_DISABLE_FIND_PACKAGE_PackageKitQt5=ON
+		$(cmake_use_find_package appstream AppStreamQt)
+		$(cmake_use_find_package calendar KF5Holidays)
+		$(cmake_use_find_package fontconfig Fontconfig)
+		$(cmake_use_find_package geolocation KF5NetworkManagerQt)
+		$(cmake_use_find_package semantic-desktop KF5Baloo)
+		$(cmake_use_find_package telemetry KUserFeedback)
+	)
+
+	ecm_src_configure
+}
+
+src_install() {
+	ecm_src_install
+
+	# default startup and shutdown scripts
+	insinto /etc/xdg/plasma-workspace/env
+	doins "${FILESDIR}"/10-agent-startup.sh
+
+	insinto /etc/xdg/plasma-workspace/shutdown
+	doins "${FILESDIR}"/10-agent-shutdown.sh
+	fperms +x /etc/xdg/plasma-workspace/shutdown/10-agent-shutdown.sh
+}
+
+pkg_postinst () {
+	ecm_pkg_postinst
+
+	elog "To enable gpg-agent and/or ssh-agent in Plasma sessions,"
+	elog "edit ${EPREFIX}/etc/xdg/plasma-workspace/env/10-agent-startup.sh"
+	elog "and ${EPREFIX}/etc/xdg/plasma-workspace/shutdown/10-agent-shutdown.sh"
+}


             reply	other threads:[~2022-11-30  1:44 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-30  1:44 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-20 16:43 [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-workspace/, kde-plasma/plasma-workspace/files/ Andreas Sturmlechner
2025-09-25 19:11 Andreas Sturmlechner
2025-05-26 18:04 Andreas Sturmlechner
2024-10-07 22:12 Andreas Sturmlechner
2024-10-07 18:02 Andreas Sturmlechner
2024-09-20 17:11 Andreas Sturmlechner
2024-08-12 20:16 Andreas Sturmlechner
2024-06-05 18:57 Andreas Sturmlechner
2023-09-24 21:47 Andreas Sturmlechner
2023-06-27 11:25 Andreas Sturmlechner
2023-04-10 18:35 Andreas Sturmlechner
2023-03-23  8:39 Andreas Sturmlechner
2023-02-01  9:47 Andreas Sturmlechner
2022-10-03  8:43 Andreas Sturmlechner
2022-09-14 11:59 Andreas Sturmlechner
2022-09-09  7:34 Sam James
2022-06-14 12:44 Andreas Sturmlechner
2022-05-17 19:02 Andreas Sturmlechner
2022-02-06 21:17 Andreas Sturmlechner
2021-12-14  9:28 Andreas Sturmlechner
2021-12-10 14:58 Andreas Sturmlechner
2021-11-30 14:33 Andreas Sturmlechner
2021-11-23 14:59 Andreas Sturmlechner
2021-09-22 21:59 Andreas Sturmlechner
2021-09-16 11:14 Andreas Sturmlechner
2021-05-29 21:19 Andreas Sturmlechner
2021-02-05 10:12 Andreas Sturmlechner
2021-01-23 22:45 Andreas Sturmlechner
2021-01-15 18:33 Andreas Sturmlechner
2020-10-04 16:07 Andreas Sturmlechner
2020-07-28 15:37 Andreas Sturmlechner
2020-07-09 17:52 Andreas Sturmlechner
2020-06-23 13:49 Andreas Sturmlechner
2020-05-16 22:38 Andreas Sturmlechner
2020-05-16 22:38 Andreas Sturmlechner
2020-01-21 16:29 Andreas Sturmlechner
2019-07-20 22:15 Andreas Sturmlechner
2018-09-11 17:47 Andreas Sturmlechner
2018-04-11 20:08 Andreas Sturmlechner
2018-02-09 13:57 Michael Palimaka
2017-08-31 20:54 Andreas Sturmlechner
2017-08-02 23:22 Andreas Sturmlechner
2017-07-27 16:24 Andreas Sturmlechner
2016-11-16 18:38 Michael Palimaka
2016-09-28 21:47 Michael Palimaka
2016-02-09 16:25 Michael Palimaka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1669772550.1fde9bdcfb26c7bb0ae09d9954106108a203bd36.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox