Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package plasma5-workspace for 
openSUSE:Factory checked in at 2021-05-15 23:15:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma5-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.plasma5-workspace.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "plasma5-workspace"

Sat May 15 23:15:41 2021 rev:164 rq:892495 version:5.21.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma5-workspace/plasma5-workspace.changes      
2021-05-06 22:52:45.382717556 +0200
+++ 
/work/SRC/openSUSE:Factory/.plasma5-workspace.new.2988/plasma5-workspace.changes
    2021-05-15 23:16:42.356614620 +0200
@@ -1,0 +2,6 @@
+Wed May 12 09:49:28 UTC 2021 - Fabian Vogt <fab...@ritter-vogt.de>
+
+- Add patch to unbreak some services after login (kde#429415):
+  * 0001-startkde-Reset-systemd-failed-units-on-login.patch
+
+-------------------------------------------------------------------

New:
----
  0001-startkde-Reset-systemd-failed-units-on-login.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ plasma5-workspace.spec ++++++
--- /var/tmp/diff_new_pack.FavuN9/_old  2021-05-15 23:16:43.044611933 +0200
+++ /var/tmp/diff_new_pack.FavuN9/_new  2021-05-15 23:16:43.044611933 +0200
@@ -42,6 +42,8 @@
 Source2:        plasma.keyring
 %endif
 Source3:        baselibs.conf
+# PATCH-FIX-UPSTREAM
+Patch1:         0001-startkde-Reset-systemd-failed-units-on-login.patch
 # PATCHES 501-??? are PATCH-FIX-OPENSUSE
 Patch501:       0001-Use-qdbus-qt5.patch
 Patch502:       0001-Ignore-default-sddm-face-icons.patch

++++++ 0001-startkde-Reset-systemd-failed-units-on-login.patch ++++++
>From 40f69fbb53a3ffa6a9a71b172433a4fedcaf7a88 Mon Sep 17 00:00:00 2001
From: David Edmundson <k...@davidedmundson.co.uk>
Date: Thu, 8 Apr 2021 11:59:44 +0100
Subject: [PATCH] [startkde] Reset systemd failed units on login

If a service has recently failed multiple times, systemd will (quite
cleverly) not restart it. This includes DBus activation so is indepdent
of the systemd boot.

If a service gets into a broken state on a previous session where ithas
different environment variables and a different display server, we
shouldn't treat it as failed for a new session.

This shouldn't be needed with the other recent fixes, but it seems like
a good practice nevertheless.

Gnome are doing something similar:
https://gitlab.gnome.org/GNOME/gnome-session/-/blob/master/gnome-session/main.c#L565

(cherry picked from commit b0997076c194b1cb72fc4380c8ebbe67b0ebc58a)
---
 startkde/startplasma.cpp | 12 ++++++++++++
 startkde/startplasma.h   |  1 +
 2 files changed, 13 insertions(+)

diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
index c159035a0..4120582b5 100644
--- a/startkde/startplasma.cpp
+++ b/startkde/startplasma.cpp
@@ -349,6 +349,17 @@ QProcess *setupKSplash()
     return p;
 }
 
+// If something went on an endless restart crash loop it will get blacklisted, 
as this is a clean login we will want to reset those counters
+// This is independent of whether we use the Plasma systemd boot
+void resetSystemdFailedUnits()
+{
+    QDBusMessage message = 
QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.systemd1"),
+                                                          
QStringLiteral("/org/freedesktop/systemd1"),
+                                                          
QStringLiteral("org.freedesktop.systemd1.Manager"),
+                                                          
QStringLiteral("ResetFailed"));
+    QDBusConnection::sessionBus().call(message);
+}
+
 bool hasSystemdService(const QString &serviceName)
 {
     auto msg = 
QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.systemd1"),
@@ -390,6 +401,7 @@ bool useSystemdBoot()
 
 bool startPlasmaSession(bool wayland)
 {
+    resetSystemdFailedUnits();
     OrgKdeKSplashInterface iface(QStringLiteral("org.kde.KSplash"), 
QStringLiteral("/KSplash"), QDBusConnection::sessionBus());
     iface.setStage(QStringLiteral("kinit"));
     // finally, give the session control to the session manager
diff --git a/startkde/startplasma.h b/startkde/startplasma.h
index dcd6187f6..0e1ab08dc 100644
--- a/startkde/startplasma.h
+++ b/startkde/startplasma.h
@@ -48,6 +48,7 @@ bool startPlasmaSession(bool wayland);
 
 void waitForKonqi();
 
+static void resetSystemdFailedUnits();
 static bool hasSystemdService(const QString &serviceName);
 static bool useSystemdBoot();
 
-- 
2.25.1

Reply via email to