From 2404d98d06026f335f4d2191ff7ffcf5dc3c0748 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Mon, 14 Nov 2022 09:17:39 -0500 Subject: [PATCH 01/10] Update to new snapshot --- .gitignore | 1 + sddm.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 07fd159..b1a7c49 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /sddm-e67307e4103a8606d57a0c2fd48a378e40fcef06.tar.gz /sddm-21e965aab8d93180966bbb19788bc42bdf2baee7.tar.gz /sddm-fc24321541f6f65b7d1aac89cd82336ffd53e1a0.tar.gz +/sddm-1d156897ab763d1442b0d6b0341c091f0c38b496.tar.gz diff --git a/sddm.spec b/sddm.spec index 5739dc1..559bb2d 100644 --- a/sddm.spec +++ b/sddm.spec @@ -14,8 +14,8 @@ %bcond_without sddm_wayland_default %endif -%global commit fc24321541f6f65b7d1aac89cd82336ffd53e1a0 -%global commitdate 20221025 +%global commit 1d156897ab763d1442b0d6b0341c091f0c38b496 +%global commitdate 20221114 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: sddm @@ -299,6 +299,9 @@ fi %changelog +* Mon Nov 14 2022 Neal Gompa - 0.19.0^git20221114.1d15689-1 +- Update to new snapshot + * Tue Oct 25 2022 Neal Gompa - 0.19.0^git20221025.fc24321-1 - Update to new snapshot diff --git a/sources b/sources index 29705f9..af3ed08 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sddm-fc24321541f6f65b7d1aac89cd82336ffd53e1a0.tar.gz) = d874213dc6fba044f5c42886676dd23a70dad387407361f4562f4cb799ea73ec1a7d13d48476bc769808ab206569f87101f496d16fe3ac4dc222789be5d743d0 +SHA512 (sddm-1d156897ab763d1442b0d6b0341c091f0c38b496.tar.gz) = 6d1186c0d6b9795d0b3468741ffde7dd7648c073da816118f99be5d5a5f44f08814da2df85102661c52f1ff1de819000c4c1609bc38ffbb478e39e4339c14bae From e47450ddbd7b205b47760c84242d3e404a8b7470 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sat, 24 Dec 2022 09:22:28 -0500 Subject: [PATCH 02/10] Update to new snapshot - Add patch to support non-default wayland socket names for sway/weston/etc. - Refreshed patch for waiting on logind seat0 initialization --- .gitignore | 1 + ...lay-for-logind-and-fallback-to-seat0.patch | 12 ++-- ...0.20.0-allow-hiding-wayland-sessions.patch | 58 ------------------- sddm.spec | 21 ++++--- sources | 2 +- 5 files changed, 22 insertions(+), 72 deletions(-) delete mode 100644 sddm-0.20.0-allow-hiding-wayland-sessions.patch diff --git a/.gitignore b/.gitignore index b1a7c49..15c5303 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /sddm-21e965aab8d93180966bbb19788bc42bdf2baee7.tar.gz /sddm-fc24321541f6f65b7d1aac89cd82336ffd53e1a0.tar.gz /sddm-1d156897ab763d1442b0d6b0341c091f0c38b496.tar.gz +/sddm-3e486499b9300ce8f9c62bd102e5119b27a2fad1.tar.gz diff --git a/0001-Delay-for-logind-and-fallback-to-seat0.patch b/0001-Delay-for-logind-and-fallback-to-seat0.patch index b0cd884..8fa1e6d 100644 --- a/0001-Delay-for-logind-and-fallback-to-seat0.patch +++ b/0001-Delay-for-logind-and-fallback-to-seat0.patch @@ -1,4 +1,4 @@ -From 57f91b5f23fcaacaaafd5d8263f65ed58d0cdf15 Mon Sep 17 00:00:00 2001 +From 5e6c0f872272fd617228628ab46c491313750019 Mon Sep 17 00:00:00 2001 From: Jeremy Linton Date: Fri, 22 Oct 2021 14:51:54 -0500 Subject: [PATCH] Delay for logind, and fallback to seat0 @@ -17,6 +17,10 @@ is generally a better strategy than what happens a good amount of time now, where sddm is started and silent about why the screen is blank. +References: +* https://bugzilla.redhat.com/2011991 +* https://bugzilla.redhat.com/2016310 + Signed-off-by: Jeremy Linton --- src/daemon/LogindDBusTypes.cpp | 31 +++++++++++++++++++++---------- @@ -75,7 +79,7 @@ index 011bb7f..6255c69 100644 if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"))) { qDebug() << "Console kit interface found"; diff --git a/src/daemon/SeatManager.cpp b/src/daemon/SeatManager.cpp -index 60d22ea..96d2b82 100644 +index 429ed19..9f569bb 100644 --- a/src/daemon/SeatManager.cpp +++ b/src/daemon/SeatManager.cpp @@ -26,6 +26,9 @@ @@ -98,7 +102,7 @@ index 60d22ea..96d2b82 100644 void SeatManager::createSeat(const QString &name) { @@ -152,6 +157,23 @@ namespace SDDM { - m_seats.value(name)->createDisplay(); + m_seats.value(name)->createDisplay(Display::defaultDisplayServerType()); } + // this is a bit hacky, but linux DRM drivers @@ -134,5 +138,5 @@ index b2f9796..aa43047 100644 } -- -2.33.1 +2.38.1 diff --git a/sddm-0.20.0-allow-hiding-wayland-sessions.patch b/sddm-0.20.0-allow-hiding-wayland-sessions.patch deleted file mode 100644 index f5cd769..0000000 --- a/sddm-0.20.0-allow-hiding-wayland-sessions.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 7168262e2174046e335c445e72504758dbf7049b Mon Sep 17 00:00:00 2001 -From: Jeremy Linton -Date: Mon, 25 Oct 2021 14:56:14 -0500 -Subject: [PATCH] greeter: Do not populate Wayland sessions if /dev/dri does - not exist - -Check for /dev/dri which should indicate that the Wayland will work -on this hardware. - -Signed-off-by: Jeremy Linton ---- - src/greeter/SessionModel.cpp | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp -index a0eb3b1..92f6d1a 100644 ---- a/src/greeter/SessionModel.cpp -+++ b/src/greeter/SessionModel.cpp -@@ -22,6 +22,7 @@ - - #include "Configuration.h" - -+#include - #include - #include - #include -@@ -40,19 +41,26 @@ namespace SDDM { - }; - - SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) { -+ // Check for flag to show Wayland sessions -+ bool dri_active = QFileInfo::exists(QStringLiteral("/dev/dri")); -+ - // initial population - beginResetModel(); -- populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); -+ if (dri_active) -+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); - populate(Session::X11Session, mainConfig.X11.SessionDir.get()); - endResetModel(); - - // refresh everytime a file is changed, added or removed - QFileSystemWatcher *watcher = new QFileSystemWatcher(this); - connect(watcher, &QFileSystemWatcher::directoryChanged, [this](const QString &path) { -+ // Recheck for flag to show Wayland sessions -+ bool dri_active = QFileInfo::exists(QStringLiteral("/dev/dri")); - beginResetModel(); - d->sessions.clear(); - d->displayNames.clear(); -- populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); -+ if (dri_active) -+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); - populate(Session::X11Session, mainConfig.X11.SessionDir.get()); - endResetModel(); - }); --- -2.33.1 - diff --git a/sddm.spec b/sddm.spec index 559bb2d..1e932b2 100644 --- a/sddm.spec +++ b/sddm.spec @@ -14,8 +14,8 @@ %bcond_without sddm_wayland_default %endif -%global commit 1d156897ab763d1442b0d6b0341c091f0c38b496 -%global commitdate 20221114 +%global commit 3e486499b9300ce8f9c62bd102e5119b27a2fad1 +%global commitdate 20221123 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: sddm @@ -35,19 +35,17 @@ Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz ## upstreamable patches -# Disable wayland sessions when /dev/dri doesn't exist -# https://bugzilla.redhat.com/1952431 -# https://bugzilla.redhat.com/show_bug.cgi?id=2016788 -# https://bugzilla.redhat.com/show_bug.cgi?id=2016310 -# Submitted: https://github.com/sddm/sddm/pull/1489 -Patch10: sddm-0.20.0-allow-hiding-wayland-sessions.patch - # Fix race with logind restart, and start seat0 if !CanGraphical on timer # https://bugzilla.redhat.com/show_bug.cgi?id=2011991 # https://bugzilla.redhat.com/show_bug.cgi?id=2016310 # Submmited: https://github.com/sddm/sddm/pull/1494 Patch11: 0001-Delay-for-logind-and-fallback-to-seat0.patch +# Support non-default "wayland-?" socket names +# required for sway, weston, et al +# Submitted: https://github.com/sddm/sddm/pull/1509 +Patch12: sddm-0.20.0-support-non-default-wayland-socket-names.patch + ## downstream patches Patch101: sddm-0.20.0-fedora_config.patch @@ -299,6 +297,11 @@ fi %changelog +* Sat Dec 24 2022 Neal Gompa - 0.19.0^git20221123.3e48649-1 +- Update to new snapshot +- Add patch to support non-default wayland socket names for sway/weston/etc. +- Refreshed patch for waiting on logind seat0 initialization + * Mon Nov 14 2022 Neal Gompa - 0.19.0^git20221114.1d15689-1 - Update to new snapshot diff --git a/sources b/sources index af3ed08..ebd34a3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sddm-1d156897ab763d1442b0d6b0341c091f0c38b496.tar.gz) = 6d1186c0d6b9795d0b3468741ffde7dd7648c073da816118f99be5d5a5f44f08814da2df85102661c52f1ff1de819000c4c1609bc38ffbb478e39e4339c14bae +SHA512 (sddm-3e486499b9300ce8f9c62bd102e5119b27a2fad1.tar.gz) = 7c1317cc479947aaee535c5f319ec7e7294d5aeec867bee7ce42fb3da0e6874134c9bc7840488ab8f9348d41690f3f05bd1ee2ae64fb02dc3709419f095a894e From f7ff3bd8a53e9c7e4654496b41355fe7ea8ebb54 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sat, 24 Dec 2022 09:24:00 -0500 Subject: [PATCH 03/10] Add missing patch, oops --- ...ort-non-default-wayland-socket-names.patch | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 sddm-0.20.0-support-non-default-wayland-socket-names.patch diff --git a/sddm-0.20.0-support-non-default-wayland-socket-names.patch b/sddm-0.20.0-support-non-default-wayland-socket-names.patch new file mode 100644 index 0000000..28b209d --- /dev/null +++ b/sddm-0.20.0-support-non-default-wayland-socket-names.patch @@ -0,0 +1,155 @@ +From df564d59533f9556d20f1141bf01de705cce3bf4 Mon Sep 17 00:00:00 2001 +From: Aleksei Bavshin +Date: Wed, 2 Feb 2022 23:08:59 -0800 +Subject: [PATCH] WaylandHelper: support non-default display names + +Weston v10[1] and some wlroots-based compositors[2][3] decided to stop +using `wayland-0`. +Extend WaylandSocketWatcher to look for any socket matching the +`wayland-?` pattern and pass the `WAYLAND_DISPLAY` to the greeter. + +[1]: https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/486 +[2]: https://github.com/swaywm/sway/commit/65a751a21f61b30808b7e703257c6ca3b71f50eb +[3]: https://github.com/WayfireWM/wayfire/commit/4ee4f3f259be00fd9a3c26960e8fce91ec526290 +--- + src/helper/waylandhelper.cpp | 5 +++- + src/helper/waylandsocketwatcher.cpp | 37 +++++++++++++++++------------ + src/helper/waylandsocketwatcher.h | 4 ++-- + 3 files changed, 28 insertions(+), 18 deletions(-) + +diff --git a/src/helper/waylandhelper.cpp b/src/helper/waylandhelper.cpp +index 39952cb99..66d6b0796 100644 +--- a/src/helper/waylandhelper.cpp ++++ b/src/helper/waylandhelper.cpp +@@ -119,7 +119,6 @@ void WaylandHelper::startGreeter(const QString &cmd) + m_greeterProcess = new QProcess(this); + m_greeterProcess->setProgram(args.takeFirst()); + m_greeterProcess->setArguments(args); +- m_greeterProcess->setProcessEnvironment(m_environment); + connect(m_greeterProcess, &QProcess::readyReadStandardError, this, [this] { + qWarning() << m_greeterProcess->readAllStandardError(); + }); +@@ -132,6 +131,8 @@ void WaylandHelper::startGreeter(const QString &cmd) + QCoreApplication::instance()->quit(); + }); + if (m_watcher->status() == WaylandSocketWatcher::Started) { ++ m_environment.insert(QStringLiteral("WAYLAND_DISPLAY"), m_watcher->socketName()); ++ m_greeterProcess->setProcessEnvironment(m_environment); + m_greeterProcess->start(); + } else if (m_watcher->status() == WaylandSocketWatcher::Failed) { + Q_EMIT failed(); +@@ -139,6 +140,8 @@ void WaylandHelper::startGreeter(const QString &cmd) + connect(m_watcher, &WaylandSocketWatcher::failed, this, &WaylandHelper::failed); + connect(m_watcher, &WaylandSocketWatcher::started, this, [this] { + m_watcher->stop(); ++ m_environment.insert(QStringLiteral("WAYLAND_DISPLAY"), m_watcher->socketName()); ++ m_greeterProcess->setProcessEnvironment(m_environment); + m_greeterProcess->start(); + }); + } +diff --git a/src/helper/waylandsocketwatcher.cpp b/src/helper/waylandsocketwatcher.cpp +index 316690935..837bb189d 100644 +--- a/src/helper/waylandsocketwatcher.cpp ++++ b/src/helper/waylandsocketwatcher.cpp +@@ -18,6 +18,7 @@ + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + ***************************************************************************/ + ++#include + #include + #include + +@@ -28,8 +29,9 @@ namespace SDDM { + WaylandSocketWatcher::WaylandSocketWatcher(QObject *parent ) + : QObject(parent) + , m_runtimeDir(QDir(QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation))) +- , m_socketPath(m_runtimeDir.absoluteFilePath(QLatin1String("wayland-0"))) + { ++ m_runtimeDir.setFilter(QDir::Files | QDir::System); ++ m_runtimeDir.setNameFilters(QStringList() << QLatin1String("wayland-?")); + } + + WaylandSocketWatcher::Status WaylandSocketWatcher::status() const +@@ -37,9 +39,9 @@ WaylandSocketWatcher::Status WaylandSocketWatcher::status() const + return m_status; + } + +-QString WaylandSocketWatcher::socketPath() const ++QString WaylandSocketWatcher::socketName() const + { +- return m_socketPath; ++ return m_socketName; + } + + void WaylandSocketWatcher::start() +@@ -53,8 +55,7 @@ void WaylandSocketWatcher::start() + // Time is up and a socket was not found + if (!m_watcher.isNull()) + m_watcher->deleteLater(); +- qWarning("Wayland socket watcher for \"%s\" timed out", +- qPrintable(m_socketPath)); ++ qWarning("Wayland socket watcher timed out"); + m_status = Failed; + Q_EMIT failed(); + }); +@@ -62,22 +63,28 @@ void WaylandSocketWatcher::start() + // Check if the socket exists + connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, + [this](const QString &path) { +- qDebug() << "Directory" << path << "has changed, checking for" << m_socketPath; ++ qDebug() << "Directory" << path << "has changed, checking for Wayland socket"; + +- if (QFile::exists(m_socketPath)) { +- m_timer.stop(); +- if (!m_watcher.isNull()) +- m_watcher->deleteLater(); +- m_status = Started; +- Q_EMIT started(); ++ m_runtimeDir.refresh(); ++ const QFileInfoList fileInfoList = m_runtimeDir.entryInfoList(); ++ for (const QFileInfo &fileInfo : fileInfoList) { ++ if (fileInfo.ownerId() == ::getuid()) { ++ qDebug() << "Found Wayland socket" << fileInfo.absoluteFilePath(); ++ m_timer.stop(); ++ if (!m_watcher.isNull()) ++ m_watcher->deleteLater(); ++ m_socketName = fileInfo.fileName(); ++ m_status = Started; ++ Q_EMIT started(); ++ break; ++ } + } + }); + + // Watch for runtime directory changes + if (!m_runtimeDir.exists() || !m_watcher->addPath(m_runtimeDir.absolutePath())) { +- qWarning("Cannot watch directory \"%s\" for Wayland socket \"%s\"", +- qPrintable(m_runtimeDir.absolutePath()), +- qPrintable(m_socketPath)); ++ qWarning("Cannot watch directory \"%s\" for Wayland socket", ++ qPrintable(m_runtimeDir.absolutePath())); + m_watcher->deleteLater(); + m_status = Failed; + Q_EMIT failed(); +diff --git a/src/helper/waylandsocketwatcher.h b/src/helper/waylandsocketwatcher.h +index dfc5d214a..0032c1866 100644 +--- a/src/helper/waylandsocketwatcher.h ++++ b/src/helper/waylandsocketwatcher.h +@@ -41,7 +41,7 @@ class WaylandSocketWatcher : public QObject + explicit WaylandSocketWatcher(QObject *parent = nullptr); + + Status status() const; +- QString socketPath() const; ++ QString socketName() const; + + void start(); + void stop(); +@@ -54,7 +54,7 @@ class WaylandSocketWatcher : public QObject + private: + Status m_status = Stopped; + QDir m_runtimeDir; +- QString m_socketPath; ++ QString m_socketName; + QTimer m_timer; + QPointer m_watcher; + }; From 792d966eb1f30c5ee3f69a8bd2a126eb11429847 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 02:53:10 +0000 Subject: [PATCH 04/10] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- sddm.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sddm.spec b/sddm.spec index 1e932b2..90ac40a 100644 --- a/sddm.spec +++ b/sddm.spec @@ -20,7 +20,7 @@ Name: sddm Version: 0.19.0%{?commitdate:^git%{commitdate}.%{shortcommit}} -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ Summary: QML based desktop and login manager @@ -297,6 +297,9 @@ fi %changelog +* Sat Jan 21 2023 Fedora Release Engineering - 0.19.0^git20221123.3e48649-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Sat Dec 24 2022 Neal Gompa - 0.19.0^git20221123.3e48649-1 - Update to new snapshot - Add patch to support non-default wayland socket names for sway/weston/etc. From 954e5c84eb8ea3f2c09df644479e108f7710c916 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sun, 29 Jan 2023 13:58:20 -0500 Subject: [PATCH 05/10] Add proposed patch to recover from tty switching failures (#2110801) --- ...covering-from-tty-switching-failures.patch | 102 ++++++++++++++++++ sddm.spec | 11 +- 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 0001-Allow-recovering-from-tty-switching-failures.patch diff --git a/0001-Allow-recovering-from-tty-switching-failures.patch b/0001-Allow-recovering-from-tty-switching-failures.patch new file mode 100644 index 0000000..46cc7d6 --- /dev/null +++ b/0001-Allow-recovering-from-tty-switching-failures.patch @@ -0,0 +1,102 @@ +From b8ef20b8bc6b9636449f602e10ac49d39b2abc79 Mon Sep 17 00:00:00 2001 +From: Aleix Pol +Date: Thu, 26 Jan 2023 18:04:12 +0100 +Subject: [PATCH] Allow recovering from tty switching failures + +If we fail to switch tty when showing the greeter, exit saying so then +switch back to tty 1 and try launching the Display again. + +Fixes #1636 +--- + src/auth/Auth.h | 1 + + src/daemon/Display.cpp | 9 +++++---- + src/daemon/Greeter.cpp | 7 ++++--- + src/daemon/Greeter.h | 1 + + src/helper/UserSession.cpp | 2 +- + 5 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/src/auth/Auth.h b/src/auth/Auth.h +index 0e39f69..66a9ec9 100644 +--- a/src/auth/Auth.h ++++ b/src/auth/Auth.h +@@ -86,6 +86,7 @@ namespace SDDM { + HELPER_SESSION_ERROR, + HELPER_OTHER_ERROR, + HELPER_DISPLAYSERVER_ERROR, ++ HELPER_TTY_ERROR, + }; + Q_ENUM(HelperExitStatus) + +diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp +index c2437c7..b6b5728 100644 +--- a/src/daemon/Display.cpp ++++ b/src/daemon/Display.cpp +@@ -149,10 +149,11 @@ namespace SDDM { + connect(this, &Display::loginFailed, m_socketServer, &SocketServer::loginFailed); + connect(this, &Display::loginSucceeded, m_socketServer, &SocketServer::loginSucceeded); + +- connect(m_greeter, &Greeter::failed, +- QCoreApplication::instance(), [] { +- QCoreApplication::instance()->exit(23); +- }); ++ connect(m_greeter, &Greeter::failed, this, &Display::stop); ++ connect(m_greeter, &Greeter::ttyFailed, this, [this] { ++ VirtualTerminal::jumpToVt(1, true); ++ stop(); ++ }); + connect(m_greeter, &Greeter::displayServerFailed, this, &Display::displayServerFailed); + } + +diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp +index eadae5a..ea9ad81 100644 +--- a/src/daemon/Greeter.cpp ++++ b/src/daemon/Greeter.cpp +@@ -32,6 +32,7 @@ + + #include + #include ++#include + + namespace SDDM { + Greeter::Greeter(Display *parent) +@@ -312,9 +313,9 @@ namespace SDDM { + + if (status == Auth::HELPER_DISPLAYSERVER_ERROR) { + Q_EMIT displayServerFailed(); +- } +- +- if (status == Auth::HELPER_SESSION_ERROR) { ++ } else if (status == Auth::HELPER_TTY_ERROR) { ++ Q_EMIT ttyFailed(); ++ } else if (status == Auth::HELPER_SESSION_ERROR) { + Q_EMIT failed(); + } + } +diff --git a/src/daemon/Greeter.h b/src/daemon/Greeter.h +index 5a69ccd..3a6295c 100644 +--- a/src/daemon/Greeter.h ++++ b/src/daemon/Greeter.h +@@ -62,6 +62,7 @@ namespace SDDM { + void authError(const QString &message, Auth::Error error); + + signals: ++ void ttyFailed(); + void failed(); + void displayServerFailed(); + +diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp +index 39ff9ad..1bd9959 100644 +--- a/src/helper/UserSession.cpp ++++ b/src/helper/UserSession.cpp +@@ -180,7 +180,7 @@ namespace SDDM { + if (ioctl(STDIN_FILENO, TIOCSCTTY) < 0) { + const auto error = strerror(errno); + qCritical().nospace() << "Failed to take control of " << ttyString << " (" << QFileInfo(ttyString).owner() << "): " << error; +- exit(Auth::HELPER_OTHER_ERROR); ++ exit(Auth::HELPER_TTY_ERROR); + } + } + +-- +2.39.1 + diff --git a/sddm.spec b/sddm.spec index 90ac40a..9980aa7 100644 --- a/sddm.spec +++ b/sddm.spec @@ -20,7 +20,7 @@ Name: sddm Version: 0.19.0%{?commitdate:^git%{commitdate}.%{shortcommit}} -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ Summary: QML based desktop and login manager @@ -46,6 +46,12 @@ Patch11: 0001-Delay-for-logind-and-fallback-to-seat0.patch # Submitted: https://github.com/sddm/sddm/pull/1509 Patch12: sddm-0.20.0-support-non-default-wayland-socket-names.patch +# Allow recovering from tty switching failures +# https://bugzilla.redhat.com/show_bug.cgi?id=2110801 +# https://github.com/sddm/sddm/issues/1636 +# Submitted: https://github.com/sddm/sddm/pull/1641 +Patch13: 0001-Allow-recovering-from-tty-switching-failures.patch + ## downstream patches Patch101: sddm-0.20.0-fedora_config.patch @@ -297,6 +303,9 @@ fi %changelog +* Sun Jan 29 2023 Neal Gompa - 0.19.0^git20221123.3e48649-3 +- Add proposed patch to recover from tty switching failures (#2110801) + * Sat Jan 21 2023 Fedora Release Engineering - 0.19.0^git20221123.3e48649-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From cb1d68a8efee337eda78ddfae88017728568d79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Deop=20i=20Argem=C3=AD?= Date: Wed, 1 Feb 2023 19:34:36 +0100 Subject: [PATCH 06/10] Update to new snapshot and remove patches merged upstream --- ...covering-from-tty-switching-failures.patch | 102 ------------ ...ort-non-default-wayland-socket-names.patch | 155 ------------------ sddm.spec | 21 +-- 3 files changed, 7 insertions(+), 271 deletions(-) delete mode 100644 0001-Allow-recovering-from-tty-switching-failures.patch delete mode 100644 sddm-0.20.0-support-non-default-wayland-socket-names.patch diff --git a/0001-Allow-recovering-from-tty-switching-failures.patch b/0001-Allow-recovering-from-tty-switching-failures.patch deleted file mode 100644 index 46cc7d6..0000000 --- a/0001-Allow-recovering-from-tty-switching-failures.patch +++ /dev/null @@ -1,102 +0,0 @@ -From b8ef20b8bc6b9636449f602e10ac49d39b2abc79 Mon Sep 17 00:00:00 2001 -From: Aleix Pol -Date: Thu, 26 Jan 2023 18:04:12 +0100 -Subject: [PATCH] Allow recovering from tty switching failures - -If we fail to switch tty when showing the greeter, exit saying so then -switch back to tty 1 and try launching the Display again. - -Fixes #1636 ---- - src/auth/Auth.h | 1 + - src/daemon/Display.cpp | 9 +++++---- - src/daemon/Greeter.cpp | 7 ++++--- - src/daemon/Greeter.h | 1 + - src/helper/UserSession.cpp | 2 +- - 5 files changed, 12 insertions(+), 8 deletions(-) - -diff --git a/src/auth/Auth.h b/src/auth/Auth.h -index 0e39f69..66a9ec9 100644 ---- a/src/auth/Auth.h -+++ b/src/auth/Auth.h -@@ -86,6 +86,7 @@ namespace SDDM { - HELPER_SESSION_ERROR, - HELPER_OTHER_ERROR, - HELPER_DISPLAYSERVER_ERROR, -+ HELPER_TTY_ERROR, - }; - Q_ENUM(HelperExitStatus) - -diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp -index c2437c7..b6b5728 100644 ---- a/src/daemon/Display.cpp -+++ b/src/daemon/Display.cpp -@@ -149,10 +149,11 @@ namespace SDDM { - connect(this, &Display::loginFailed, m_socketServer, &SocketServer::loginFailed); - connect(this, &Display::loginSucceeded, m_socketServer, &SocketServer::loginSucceeded); - -- connect(m_greeter, &Greeter::failed, -- QCoreApplication::instance(), [] { -- QCoreApplication::instance()->exit(23); -- }); -+ connect(m_greeter, &Greeter::failed, this, &Display::stop); -+ connect(m_greeter, &Greeter::ttyFailed, this, [this] { -+ VirtualTerminal::jumpToVt(1, true); -+ stop(); -+ }); - connect(m_greeter, &Greeter::displayServerFailed, this, &Display::displayServerFailed); - } - -diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp -index eadae5a..ea9ad81 100644 ---- a/src/daemon/Greeter.cpp -+++ b/src/daemon/Greeter.cpp -@@ -32,6 +32,7 @@ - - #include - #include -+#include - - namespace SDDM { - Greeter::Greeter(Display *parent) -@@ -312,9 +313,9 @@ namespace SDDM { - - if (status == Auth::HELPER_DISPLAYSERVER_ERROR) { - Q_EMIT displayServerFailed(); -- } -- -- if (status == Auth::HELPER_SESSION_ERROR) { -+ } else if (status == Auth::HELPER_TTY_ERROR) { -+ Q_EMIT ttyFailed(); -+ } else if (status == Auth::HELPER_SESSION_ERROR) { - Q_EMIT failed(); - } - } -diff --git a/src/daemon/Greeter.h b/src/daemon/Greeter.h -index 5a69ccd..3a6295c 100644 ---- a/src/daemon/Greeter.h -+++ b/src/daemon/Greeter.h -@@ -62,6 +62,7 @@ namespace SDDM { - void authError(const QString &message, Auth::Error error); - - signals: -+ void ttyFailed(); - void failed(); - void displayServerFailed(); - -diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp -index 39ff9ad..1bd9959 100644 ---- a/src/helper/UserSession.cpp -+++ b/src/helper/UserSession.cpp -@@ -180,7 +180,7 @@ namespace SDDM { - if (ioctl(STDIN_FILENO, TIOCSCTTY) < 0) { - const auto error = strerror(errno); - qCritical().nospace() << "Failed to take control of " << ttyString << " (" << QFileInfo(ttyString).owner() << "): " << error; -- exit(Auth::HELPER_OTHER_ERROR); -+ exit(Auth::HELPER_TTY_ERROR); - } - } - --- -2.39.1 - diff --git a/sddm-0.20.0-support-non-default-wayland-socket-names.patch b/sddm-0.20.0-support-non-default-wayland-socket-names.patch deleted file mode 100644 index 28b209d..0000000 --- a/sddm-0.20.0-support-non-default-wayland-socket-names.patch +++ /dev/null @@ -1,155 +0,0 @@ -From df564d59533f9556d20f1141bf01de705cce3bf4 Mon Sep 17 00:00:00 2001 -From: Aleksei Bavshin -Date: Wed, 2 Feb 2022 23:08:59 -0800 -Subject: [PATCH] WaylandHelper: support non-default display names - -Weston v10[1] and some wlroots-based compositors[2][3] decided to stop -using `wayland-0`. -Extend WaylandSocketWatcher to look for any socket matching the -`wayland-?` pattern and pass the `WAYLAND_DISPLAY` to the greeter. - -[1]: https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/486 -[2]: https://github.com/swaywm/sway/commit/65a751a21f61b30808b7e703257c6ca3b71f50eb -[3]: https://github.com/WayfireWM/wayfire/commit/4ee4f3f259be00fd9a3c26960e8fce91ec526290 ---- - src/helper/waylandhelper.cpp | 5 +++- - src/helper/waylandsocketwatcher.cpp | 37 +++++++++++++++++------------ - src/helper/waylandsocketwatcher.h | 4 ++-- - 3 files changed, 28 insertions(+), 18 deletions(-) - -diff --git a/src/helper/waylandhelper.cpp b/src/helper/waylandhelper.cpp -index 39952cb99..66d6b0796 100644 ---- a/src/helper/waylandhelper.cpp -+++ b/src/helper/waylandhelper.cpp -@@ -119,7 +119,6 @@ void WaylandHelper::startGreeter(const QString &cmd) - m_greeterProcess = new QProcess(this); - m_greeterProcess->setProgram(args.takeFirst()); - m_greeterProcess->setArguments(args); -- m_greeterProcess->setProcessEnvironment(m_environment); - connect(m_greeterProcess, &QProcess::readyReadStandardError, this, [this] { - qWarning() << m_greeterProcess->readAllStandardError(); - }); -@@ -132,6 +131,8 @@ void WaylandHelper::startGreeter(const QString &cmd) - QCoreApplication::instance()->quit(); - }); - if (m_watcher->status() == WaylandSocketWatcher::Started) { -+ m_environment.insert(QStringLiteral("WAYLAND_DISPLAY"), m_watcher->socketName()); -+ m_greeterProcess->setProcessEnvironment(m_environment); - m_greeterProcess->start(); - } else if (m_watcher->status() == WaylandSocketWatcher::Failed) { - Q_EMIT failed(); -@@ -139,6 +140,8 @@ void WaylandHelper::startGreeter(const QString &cmd) - connect(m_watcher, &WaylandSocketWatcher::failed, this, &WaylandHelper::failed); - connect(m_watcher, &WaylandSocketWatcher::started, this, [this] { - m_watcher->stop(); -+ m_environment.insert(QStringLiteral("WAYLAND_DISPLAY"), m_watcher->socketName()); -+ m_greeterProcess->setProcessEnvironment(m_environment); - m_greeterProcess->start(); - }); - } -diff --git a/src/helper/waylandsocketwatcher.cpp b/src/helper/waylandsocketwatcher.cpp -index 316690935..837bb189d 100644 ---- a/src/helper/waylandsocketwatcher.cpp -+++ b/src/helper/waylandsocketwatcher.cpp -@@ -18,6 +18,7 @@ - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - ***************************************************************************/ - -+#include - #include - #include - -@@ -28,8 +29,9 @@ namespace SDDM { - WaylandSocketWatcher::WaylandSocketWatcher(QObject *parent ) - : QObject(parent) - , m_runtimeDir(QDir(QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation))) -- , m_socketPath(m_runtimeDir.absoluteFilePath(QLatin1String("wayland-0"))) - { -+ m_runtimeDir.setFilter(QDir::Files | QDir::System); -+ m_runtimeDir.setNameFilters(QStringList() << QLatin1String("wayland-?")); - } - - WaylandSocketWatcher::Status WaylandSocketWatcher::status() const -@@ -37,9 +39,9 @@ WaylandSocketWatcher::Status WaylandSocketWatcher::status() const - return m_status; - } - --QString WaylandSocketWatcher::socketPath() const -+QString WaylandSocketWatcher::socketName() const - { -- return m_socketPath; -+ return m_socketName; - } - - void WaylandSocketWatcher::start() -@@ -53,8 +55,7 @@ void WaylandSocketWatcher::start() - // Time is up and a socket was not found - if (!m_watcher.isNull()) - m_watcher->deleteLater(); -- qWarning("Wayland socket watcher for \"%s\" timed out", -- qPrintable(m_socketPath)); -+ qWarning("Wayland socket watcher timed out"); - m_status = Failed; - Q_EMIT failed(); - }); -@@ -62,22 +63,28 @@ void WaylandSocketWatcher::start() - // Check if the socket exists - connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, - [this](const QString &path) { -- qDebug() << "Directory" << path << "has changed, checking for" << m_socketPath; -+ qDebug() << "Directory" << path << "has changed, checking for Wayland socket"; - -- if (QFile::exists(m_socketPath)) { -- m_timer.stop(); -- if (!m_watcher.isNull()) -- m_watcher->deleteLater(); -- m_status = Started; -- Q_EMIT started(); -+ m_runtimeDir.refresh(); -+ const QFileInfoList fileInfoList = m_runtimeDir.entryInfoList(); -+ for (const QFileInfo &fileInfo : fileInfoList) { -+ if (fileInfo.ownerId() == ::getuid()) { -+ qDebug() << "Found Wayland socket" << fileInfo.absoluteFilePath(); -+ m_timer.stop(); -+ if (!m_watcher.isNull()) -+ m_watcher->deleteLater(); -+ m_socketName = fileInfo.fileName(); -+ m_status = Started; -+ Q_EMIT started(); -+ break; -+ } - } - }); - - // Watch for runtime directory changes - if (!m_runtimeDir.exists() || !m_watcher->addPath(m_runtimeDir.absolutePath())) { -- qWarning("Cannot watch directory \"%s\" for Wayland socket \"%s\"", -- qPrintable(m_runtimeDir.absolutePath()), -- qPrintable(m_socketPath)); -+ qWarning("Cannot watch directory \"%s\" for Wayland socket", -+ qPrintable(m_runtimeDir.absolutePath())); - m_watcher->deleteLater(); - m_status = Failed; - Q_EMIT failed(); -diff --git a/src/helper/waylandsocketwatcher.h b/src/helper/waylandsocketwatcher.h -index dfc5d214a..0032c1866 100644 ---- a/src/helper/waylandsocketwatcher.h -+++ b/src/helper/waylandsocketwatcher.h -@@ -41,7 +41,7 @@ class WaylandSocketWatcher : public QObject - explicit WaylandSocketWatcher(QObject *parent = nullptr); - - Status status() const; -- QString socketPath() const; -+ QString socketName() const; - - void start(); - void stop(); -@@ -54,7 +54,7 @@ class WaylandSocketWatcher : public QObject - private: - Status m_status = Stopped; - QDir m_runtimeDir; -- QString m_socketPath; -+ QString m_socketName; - QTimer m_timer; - QPointer m_watcher; - }; diff --git a/sddm.spec b/sddm.spec index 9980aa7..99a4430 100644 --- a/sddm.spec +++ b/sddm.spec @@ -14,13 +14,13 @@ %bcond_without sddm_wayland_default %endif -%global commit 3e486499b9300ce8f9c62bd102e5119b27a2fad1 -%global commitdate 20221123 +%global commit b042f69ff3ada1e5d94156450621db7a9246645a +%global commitdate 20230201 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: sddm Version: 0.19.0%{?commitdate:^git%{commitdate}.%{shortcommit}} -Release: 3%{?dist} +Release: 1%{?dist} License: GPLv2+ Summary: QML based desktop and login manager @@ -41,17 +41,6 @@ Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # Submmited: https://github.com/sddm/sddm/pull/1494 Patch11: 0001-Delay-for-logind-and-fallback-to-seat0.patch -# Support non-default "wayland-?" socket names -# required for sway, weston, et al -# Submitted: https://github.com/sddm/sddm/pull/1509 -Patch12: sddm-0.20.0-support-non-default-wayland-socket-names.patch - -# Allow recovering from tty switching failures -# https://bugzilla.redhat.com/show_bug.cgi?id=2110801 -# https://github.com/sddm/sddm/issues/1636 -# Submitted: https://github.com/sddm/sddm/pull/1641 -Patch13: 0001-Allow-recovering-from-tty-switching-failures.patch - ## downstream patches Patch101: sddm-0.20.0-fedora_config.patch @@ -303,6 +292,10 @@ fi %changelog +* Wed Feb 01 2023 Marc Deop - 0.19.0^git20230201.b042f69-1 +- Update to new snapshot. +- Remove patches merged upstream. + * Sun Jan 29 2023 Neal Gompa - 0.19.0^git20221123.3e48649-3 - Add proposed patch to recover from tty switching failures (#2110801) From b59126ef3891c61d9f23d95fd49d766decaafdd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Deop=20i=20Argem=C3=AD?= Date: Wed, 1 Feb 2023 19:43:47 +0100 Subject: [PATCH 07/10] fix: upload sources --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 15c5303..dc45f22 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ /sddm-fc24321541f6f65b7d1aac89cd82336ffd53e1a0.tar.gz /sddm-1d156897ab763d1442b0d6b0341c091f0c38b496.tar.gz /sddm-3e486499b9300ce8f9c62bd102e5119b27a2fad1.tar.gz +/sddm-b042f69ff3ada1e5d94156450621db7a9246645a.tar.gz diff --git a/sources b/sources index ebd34a3..b7769c1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sddm-3e486499b9300ce8f9c62bd102e5119b27a2fad1.tar.gz) = 7c1317cc479947aaee535c5f319ec7e7294d5aeec867bee7ce42fb3da0e6874134c9bc7840488ab8f9348d41690f3f05bd1ee2ae64fb02dc3709419f095a894e +SHA512 (sddm-b042f69ff3ada1e5d94156450621db7a9246645a.tar.gz) = f9634d170ede9cd39e57feada94a13fff2d6ed30a87a35e134764806c16007e81750fbe2d0fca496846b3d0712081ec84c6856a2a7ec7079979b5f4247568a29 From fe6b04ecc8daa4bb19c92e17bd0c10b3a6938c60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Deop=20i=20Argem=C3=AD?= Date: Wed, 1 Feb 2023 20:11:54 +0100 Subject: [PATCH 08/10] Update to new snapshot --- .gitignore | 1 + sddm.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index dc45f22..c214a08 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /sddm-1d156897ab763d1442b0d6b0341c091f0c38b496.tar.gz /sddm-3e486499b9300ce8f9c62bd102e5119b27a2fad1.tar.gz /sddm-b042f69ff3ada1e5d94156450621db7a9246645a.tar.gz +/sddm-3ee57e99836fe051c97e0f301962120466d220f7.tar.gz diff --git a/sddm.spec b/sddm.spec index 99a4430..56daaa0 100644 --- a/sddm.spec +++ b/sddm.spec @@ -14,13 +14,13 @@ %bcond_without sddm_wayland_default %endif -%global commit b042f69ff3ada1e5d94156450621db7a9246645a +%global commit 3ee57e99836fe051c97e0f301962120466d220f7 %global commitdate 20230201 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: sddm Version: 0.19.0%{?commitdate:^git%{commitdate}.%{shortcommit}} -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ Summary: QML based desktop and login manager @@ -292,6 +292,9 @@ fi %changelog +* Wed Feb 01 2023 Marc Deop - 0.19.0^git20230201.3ee57e9-2 +- Update to new snapshot + * Wed Feb 01 2023 Marc Deop - 0.19.0^git20230201.b042f69-1 - Update to new snapshot. - Remove patches merged upstream. diff --git a/sources b/sources index b7769c1..64bbd5d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sddm-b042f69ff3ada1e5d94156450621db7a9246645a.tar.gz) = f9634d170ede9cd39e57feada94a13fff2d6ed30a87a35e134764806c16007e81750fbe2d0fca496846b3d0712081ec84c6856a2a7ec7079979b5f4247568a29 +SHA512 (sddm-3ee57e99836fe051c97e0f301962120466d220f7.tar.gz) = 2831dddbd741fb249765442bd0b17ca7657367ed32c8e5036da2704e62091d600fa1d4c261aec637bc34bd9f1cd07186b793bafbd84179497858bd77ef3e0226 From 8399d1aeab795a02e9794f23670b1a86b5d7da80 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Mon, 20 Feb 2023 08:20:21 -0500 Subject: [PATCH 09/10] Update to new snapshot - Drop our sysusers and tmpfiles configuration for upstream versions --- .gitignore | 1 + sddm-0.20.0-fedora_config.patch | 30 ++++++++++++------------- sddm-rpmostree-tmpfiles-hack.patch | 12 ++++++++++ sddm-systemd-sysusers.conf | 1 - sddm.spec | 35 +++++++++++++++--------------- sources | 2 +- tmpfiles-sddm.conf | 3 --- 7 files changed, 47 insertions(+), 37 deletions(-) create mode 100644 sddm-rpmostree-tmpfiles-hack.patch delete mode 100644 sddm-systemd-sysusers.conf delete mode 100644 tmpfiles-sddm.conf diff --git a/.gitignore b/.gitignore index c214a08..c61e540 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /sddm-3e486499b9300ce8f9c62bd102e5119b27a2fad1.tar.gz /sddm-b042f69ff3ada1e5d94156450621db7a9246645a.tar.gz /sddm-3ee57e99836fe051c97e0f301962120466d220f7.tar.gz +/sddm-8f1e3df4768bd521034e02602c4410b06aaef7d5.tar.gz diff --git a/sddm-0.20.0-fedora_config.patch b/sddm-0.20.0-fedora_config.patch index 5c316d2..ab93e5e 100644 --- a/sddm-0.20.0-fedora_config.patch +++ b/sddm-0.20.0-fedora_config.patch @@ -1,17 +1,18 @@ diff --git a/src/common/Configuration.h b/src/common/Configuration.h -index cdffde3..0272e2c 100644 +index 182f6a1..538243b 100644 --- a/src/common/Configuration.h +++ b/src/common/Configuration.h -@@ -38,7 +38,7 @@ namespace SDDM { +@@ -37,8 +37,7 @@ namespace SDDM { + enum NumState { NUM_NONE, NUM_SET_ON, NUM_SET_OFF }; // Name Type Default value Description - // TODO: Change default to x11-user in a future release +- // TODO: Change default to x11-user in a future release - Entry(DisplayServer, QString, _S("x11"), _S("Which display server should be used.\n" + Entry(DisplayServer, QString, _S("wayland"), _S("Which display server should be used.\n" "Valid values are: x11, x11-user, wayland.")); Entry(HaltCommand, QString, _S(HALT_COMMAND), _S("Halt command")); Entry(RebootCommand, QString, _S(REBOOT_COMMAND), _S("Reboot command")); -@@ -51,7 +51,7 @@ namespace SDDM { +@@ -51,7 +50,7 @@ namespace SDDM { // Name Entries (but it's a regular class again) Section(Theme, Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path")); @@ -20,26 +21,25 @@ index cdffde3..0272e2c 100644 Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Global directory for user avatars\n" "The files should be named .face.icon")); Entry(CursorTheme, QString, QString(), _S("Cursor theme used in the greeter")); -@@ -71,10 +71,10 @@ namespace SDDM { - Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Path to xauth binary")); - Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Directory containing available X sessions")); +@@ -71,9 +70,9 @@ namespace SDDM { + Entry(SessionDir, QStringList, {_S("/usr/local/share/xsessions"), + _S("/usr/share/xsessions")}, _S("Comma-separated list of directories containing available X sessions")); Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session")); -- Entry(SessionLogFile, QString, _S(".local/share/sddm/xorg-session.log"), _S("Path to the user session log file")); -+ Entry(SessionLogFile, QString, _S(".cache/xsession-errors"), _S("Path to the user session log file")); - Entry(UserAuthFile, QString, _S(".Xauthority"), _S("Path to the Xauthority file")); +- Entry(SessionLogFile, QString, _S(".local/share/sddm/xorg-session.log"), _S("Path to the user session log file")); - Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Path to a script to execute when starting the display server")); - Entry(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Path to a script to execute when stopping the display server")); ++ Entry(SessionLogFile, QString, _S(".cache/xsession-errors"), _S("Path to the user session log file")); + Entry(DisplayCommand, QString, _S(SYS_CONFIG_DIR "/sddm/Xsetup"), _S("Path to a script to execute when starting the display server")); + Entry(DisplayStopCommand, QString, _S(SYS_CONFIG_DIR "/sddm/Xstop"), _S("Path to a script to execute when stopping the display server")); Entry(EnableHiDPI, bool, false, _S("Enable Qt's automatic high-DPI scaling")); ); -@@ -82,12 +82,12 @@ namespace SDDM { - Entry(CompositorCommand, QString, _S("weston --shell=fullscreen-shell.so"), _S("Path of the Wayland compositor to execute when starting the greeter")); - Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Directory containing available Wayland sessions")); +@@ -82,12 +81,12 @@ namespace SDDM { + Entry(SessionDir, QStringList, {_S("/usr/local/share/wayland-sessions"), + _S("/usr/share/wayland-sessions")}, _S("Comma-separated list of directories containing available Wayland sessions")); Entry(SessionCommand, QString, _S(WAYLAND_SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session")); -- Entry(SessionLogFile, QString, _S(".local/share/sddm/wayland-session.log"),_S("Path to the user session log file")); -+ Entry(SessionLogFile, QString, _S(".cache/wayland-errors"), _S("Path to the user session log file")); +- Entry(SessionLogFile, QString, _S(".local/share/sddm/wayland-session.log"),_S("Path to the user session log file")); ++ Entry(SessionLogFile, QString, _S(".cache/wayland-errors"), _S("Path to the user session log file")); Entry(EnableHiDPI, bool, false, _S("Enable Qt's automatic high-DPI scaling")); ); diff --git a/sddm-rpmostree-tmpfiles-hack.patch b/sddm-rpmostree-tmpfiles-hack.patch new file mode 100644 index 0000000..4f06aa1 --- /dev/null +++ b/sddm-rpmostree-tmpfiles-hack.patch @@ -0,0 +1,12 @@ +diff --git a/services/sddm-tmpfiles.conf.in b/services/sddm-tmpfiles.conf.in +index fb45553..6acfb6c 100644 +--- a/services/sddm-tmpfiles.conf.in ++++ b/services/sddm-tmpfiles.conf.in +@@ -1,5 +1,7 @@ + # Home dir of the sddm user, also contains state.conf + d ${STATE_DIR} 0750 sddm sddm ++# Workaround for https://pagure.io/fedora-kde/SIG/issue/87 ++Z ${STATE_DIR} - sddm sddm + # This contains X11 auth files passed to Xorg and the greeter + d ${RUNTIME_DIR} 0711 root root + # Sockets for IPC diff --git a/sddm-systemd-sysusers.conf b/sddm-systemd-sysusers.conf deleted file mode 100644 index a48f929..0000000 --- a/sddm-systemd-sysusers.conf +++ /dev/null @@ -1 +0,0 @@ -u sddm - "Simple Desktop Display Manager" /var/lib/sddm diff --git a/sddm.spec b/sddm.spec index 56daaa0..b094ec0 100644 --- a/sddm.spec +++ b/sddm.spec @@ -14,13 +14,13 @@ %bcond_without sddm_wayland_default %endif -%global commit 3ee57e99836fe051c97e0f301962120466d220f7 -%global commitdate 20230201 +%global commit 8f1e3df4768bd521034e02602c4410b06aaef7d5 +%global commitdate 20230214 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: sddm Version: 0.19.0%{?commitdate:^git%{commitdate}.%{shortcommit}} -Release: 2%{?dist} +Release: 1%{?dist} License: GPLv2+ Summary: QML based desktop and login manager @@ -47,22 +47,21 @@ Patch101: sddm-0.20.0-fedora_config.patch # sddm.service: +EnvironmentFile=-/etc/sysconfig/sddm Patch103: sddm-0.18.0-environment_file.patch +# Workaround for https://pagure.io/fedora-kde/SIG/issue/87 +Patch104: sddm-rpmostree-tmpfiles-hack.patch + # Shamelessly stolen from gdm Source11: sddm.pam # Shamelessly stolen from gdm Source12: sddm-autologin.pam -# systemd tmpfiles support for /var/run/sddm -Source13: tmpfiles-sddm.conf # sample sddm.conf generated with sddm --example-config, and entries commented-out -Source14: sddm.conf +Source13: sddm.conf # README.scripts -Source15: README.scripts +Source14: README.scripts # sysconfig snippet -Source16: sddm.sysconfig -# systemd sysusers config -Source18: sddm-systemd-sysusers.conf +Source15: sddm.sysconfig # sddm x11 override config -Source19: sddm-x11.conf +Source16: sddm-x11.conf Provides: service(graphical-login) = sddm @@ -182,12 +181,10 @@ mkdir -p %{buildroot}%{_sysconfdir}/sddm.conf.d mkdir -p %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d install -Dpm 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/pam.d/sddm install -Dpm 644 %{SOURCE12} %{buildroot}%{_sysconfdir}/pam.d/sddm-autologin -install -Dpm 644 %{SOURCE13} %{buildroot}%{_tmpfilesdir}/sddm.conf -install -Dpm 644 %{SOURCE14} %{buildroot}%{_sysconfdir}/sddm.conf -install -Dpm 644 %{SOURCE15} %{buildroot}%{_datadir}/sddm/scripts/README.scripts -install -Dpm 644 %{SOURCE16} %{buildroot}%{_sysconfdir}/sysconfig/sddm -install -Dpm 644 %{SOURCE18} %{buildroot}%{_sysusersdir}/sddm.conf -install -Dpm 644 %{SOURCE19} %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d/x11.conf +install -Dpm 644 %{SOURCE13} %{buildroot}%{_sysconfdir}/sddm.conf +install -Dpm 644 %{SOURCE14} %{buildroot}%{_datadir}/sddm/scripts/README.scripts +install -Dpm 644 %{SOURCE15} %{buildroot}%{_sysconfdir}/sysconfig/sddm +install -Dpm 644 %{SOURCE16} %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d/x11.conf mkdir -p %{buildroot}/run/sddm mkdir -p %{buildroot}%{_localstatedir}/lib/sddm mkdir -p %{buildroot}%{_sysconfdir}/sddm/ @@ -292,6 +289,10 @@ fi %changelog +* Mon Feb 20 2023 Neal Gompa - 0.19.0^git20230214.8f1e3df-1 +- Update to new snapshot +- Drop our sysusers and tmpfiles configuration for upstream versions + * Wed Feb 01 2023 Marc Deop - 0.19.0^git20230201.3ee57e9-2 - Update to new snapshot diff --git a/sources b/sources index 64bbd5d..e26061d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sddm-3ee57e99836fe051c97e0f301962120466d220f7.tar.gz) = 2831dddbd741fb249765442bd0b17ca7657367ed32c8e5036da2704e62091d600fa1d4c261aec637bc34bd9f1cd07186b793bafbd84179497858bd77ef3e0226 +SHA512 (sddm-8f1e3df4768bd521034e02602c4410b06aaef7d5.tar.gz) = 07b3435d1a5679fca48879aa1b6477bf285cddab98c9aa926b25b82f6f4134b2a6b0158de1aec8c3cc12201ce7486f2ab085449b9d949d55cb769ffa4309b04a diff --git a/tmpfiles-sddm.conf b/tmpfiles-sddm.conf deleted file mode 100644 index de2f6f9..0000000 --- a/tmpfiles-sddm.conf +++ /dev/null @@ -1,3 +0,0 @@ -d /run/sddm 1733 root root - -# Workaround for https://pagure.io/fedora-kde/SIG/issue/87 -Z /var/lib/sddm - sddm sddm - - From 3c2f1f687a6b53565c4d36f8d5249afc3d5cd269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Deop=20i=20Argem=C3=AD?= Date: Mon, 6 Mar 2023 23:49:29 +0100 Subject: [PATCH 10/10] feat: update to new snapshot --- .gitignore | 1 + sddm.spec | 10 +++++++--- sources | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index c61e540..ecc8898 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ /sddm-b042f69ff3ada1e5d94156450621db7a9246645a.tar.gz /sddm-3ee57e99836fe051c97e0f301962120466d220f7.tar.gz /sddm-8f1e3df4768bd521034e02602c4410b06aaef7d5.tar.gz +/sddm-572b128c92c5bce366f5db136423b0b296448429.tar.gz diff --git a/sddm.spec b/sddm.spec index b094ec0..501e3df 100644 --- a/sddm.spec +++ b/sddm.spec @@ -14,8 +14,8 @@ %bcond_without sddm_wayland_default %endif -%global commit 8f1e3df4768bd521034e02602c4410b06aaef7d5 -%global commitdate 20230214 +%global commit 572b128c92c5bce366f5db136423b0b296448429 +%global commitdate 20230306 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: sddm @@ -39,7 +39,7 @@ Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # https://bugzilla.redhat.com/show_bug.cgi?id=2011991 # https://bugzilla.redhat.com/show_bug.cgi?id=2016310 # Submmited: https://github.com/sddm/sddm/pull/1494 -Patch11: 0001-Delay-for-logind-and-fallback-to-seat0.patch +Patch11: 0001-Delay-for-logind-and-fallback-to-seat0.patch ## downstream patches Patch101: sddm-0.20.0-fedora_config.patch @@ -289,6 +289,10 @@ fi %changelog +* Mon Mar 06 2023 Marc Deop i Argemí - 0.19.0^git20230306.7bd10de-1 +- Update to new snapshot +- Fixes #2175947 + * Mon Feb 20 2023 Neal Gompa - 0.19.0^git20230214.8f1e3df-1 - Update to new snapshot - Drop our sysusers and tmpfiles configuration for upstream versions diff --git a/sources b/sources index e26061d..48a899f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sddm-8f1e3df4768bd521034e02602c4410b06aaef7d5.tar.gz) = 07b3435d1a5679fca48879aa1b6477bf285cddab98c9aa926b25b82f6f4134b2a6b0158de1aec8c3cc12201ce7486f2ab085449b9d949d55cb769ffa4309b04a +SHA512 (sddm-572b128c92c5bce366f5db136423b0b296448429.tar.gz) = 0c0b2997f52a1a49ca9b2c05b8ca554a1b356bbfed067fde01c6b0239be1469f9c7726725196c2a438cbf86ad85fc7b466f6eaceee7a6c211b4e0052f456b3c7