From b1c663e5364a93bd667c6597491e9299be08b281 Mon Sep 17 00:00:00 2001 From: Automatic Build System Date: Sun, 3 Mar 2024 18:01:35 +0100 Subject: [PATCH] automatic version update by autodist [release 0.21.0-1mamba;Wed Feb 28 2024] --- sddm-0.17.0.20180408git-fix-pam-group.patch | 89 -------- sddm-0.19.0-fix-build.patch | 13 -- ...arted-as-the-wrong-type-on-autologin.patch | 31 --- sddm-0.19.0-fix-xorg-autologin.patch | 14 -- ...refer_wayland_sessions_over_X11_ones.patch | 87 ------- ...ng_paths_in_XorgDisplayServer__start.patch | 171 -------------- ...use_the_basename_for_desktop_session.patch | 25 --- ...-upstream-retry-starting-the-xserver.patch | 212 ------------------ sddm.spec | 33 +-- 9 files changed, 9 insertions(+), 666 deletions(-) delete mode 100644 sddm-0.17.0.20180408git-fix-pam-group.patch delete mode 100644 sddm-0.19.0-fix-build.patch delete mode 100644 sddm-0.19.0-fix-sessions-being-started-as-the-wrong-type-on-autologin.patch delete mode 100644 sddm-0.19.0-fix-xorg-autologin.patch delete mode 100644 sddm-0.19.0-revert-prefer_wayland_sessions_over_X11_ones.patch delete mode 100644 sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch delete mode 100644 sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch delete mode 100644 sddm-0.19.0-upstream-retry-starting-the-xserver.patch diff --git a/sddm-0.17.0.20180408git-fix-pam-group.patch b/sddm-0.17.0.20180408git-fix-pam-group.patch deleted file mode 100644 index 51ac07e..0000000 --- a/sddm-0.17.0.20180408git-fix-pam-group.patch +++ /dev/null @@ -1,89 +0,0 @@ -From bd14b3a8a9731e644a50c1c350b7f76038c22bbb Mon Sep 17 00:00:00 2001 -From: "J. Konrad Tegtmeier-Rottach" -Date: Mon, 19 Jun 2017 23:13:34 +0200 -Subject: [PATCH] Honor PAM's ambient supplemental groups. - -When compiled with USE_PAM, prefer a combination of -getgroups(3) and getgrouplist(3) for ambient and user -groups, respectively, to initgroups(3). - -This way, groups injected into the PAM environment -by means of pam_groups.so aren't ignored. - -Signed-off-by: J. Konrad Tegtmeier-Rottach ---- - src/helper/UserSession.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 57 insertions(+) - -diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp -index 587888d7..4b5b8553 100644 ---- a/src/helper/UserSession.cpp -+++ b/src/helper/UserSession.cpp -@@ -116,10 +116,67 @@ namespace SDDM { - qCritical() << "setgid(" << pw->pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -+ -+#ifdef USE_PAM -+ -+ // fetch ambient groups from PAM's environment; -+ // these are set by modules such as pam_groups.so -+ int n_pam_groups = getgroups(0, NULL); -+ gid_t *pam_groups = NULL; -+ if (n_pam_groups > 0) { -+ pam_groups = new gid_t[n_pam_groups]; -+ if ((n_pam_groups = getgroups(n_pam_groups, pam_groups)) == -1) { -+ qCritical() << "getgroups() failed to fetch supplemental" -+ << "PAM groups for user:" << username; -+ exit(Auth::HELPER_OTHER_ERROR); -+ } -+ } else { -+ n_pam_groups = 0; -+ } -+ -+ // fetch session's user's groups -+ int n_user_groups = 0; -+ gid_t *user_groups = NULL; -+ if (-1 == getgrouplist(username.constData(), pw->pw_gid, -+ NULL, &n_user_groups)) { -+ user_groups = new gid_t[n_user_groups]; -+ if ((n_user_groups = getgrouplist(username.constData(), -+ pw->pw_gid, user_groups, -+ &n_user_groups)) == -1 ) { -+ qCritical() << "getgrouplist(" << username << ", " << pw->pw_gid -+ << ") failed"; -+ exit(Auth::HELPER_OTHER_ERROR); -+ } -+ } -+ -+ // set groups to concatenation of PAM's ambient -+ // groups and the session's user's groups -+ int n_groups = n_pam_groups + n_user_groups; -+ if (n_groups > 0) { -+ gid_t *groups = new gid_t[n_groups]; -+ memcpy(groups, pam_groups, (n_pam_groups * sizeof(gid_t))); -+ memcpy((groups + n_pam_groups), user_groups, -+ (n_user_groups * sizeof(gid_t))); -+ -+ // setgroups(2) handles duplicate groups -+ if (setgroups(n_groups, groups) != 0) { -+ qCritical() << "setgroups() failed for user: " << username; -+ exit (Auth::HELPER_OTHER_ERROR); -+ } -+ delete[] groups; -+ } -+ delete[] pam_groups; -+ delete[] user_groups; -+ -+#else -+ - if (initgroups(pw->pw_name, pw->pw_gid) != 0) { - qCritical() << "initgroups(" << pw->pw_name << ", " << pw->pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -+ -+#endif /* USE_PAM */ -+ - if (setuid(pw->pw_uid) != 0) { - qCritical() << "setuid(" << pw->pw_uid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); diff --git a/sddm-0.19.0-fix-build.patch b/sddm-0.19.0-fix-build.patch deleted file mode 100644 index 8e6cde8..0000000 --- a/sddm-0.19.0-fix-build.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp -index 5f93a1b..d5f29a9 100644 ---- a/src/daemon/XorgDisplayServer.cpp -+++ b/src/daemon/XorgDisplayServer.cpp -@@ -65,7 +65,7 @@ namespace SDDM { - // create a random hexadecimal number - const char *digits = "0123456789abcdef"; - for (int i = 0; i < 32; ++i) -- m_cookie[i] = digits[dis(gen)]; -+ m_cookie[i] = QLatin1Char(digits[dis(gen)]); - } - - XorgDisplayServer::~XorgDisplayServer() { diff --git a/sddm-0.19.0-fix-sessions-being-started-as-the-wrong-type-on-autologin.patch b/sddm-0.19.0-fix-sessions-being-started-as-the-wrong-type-on-autologin.patch deleted file mode 100644 index 8d5a6f3..0000000 --- a/sddm-0.19.0-fix-sessions-being-started-as-the-wrong-type-on-autologin.patch +++ /dev/null @@ -1,31 +0,0 @@ -From e81dfcd6913c4fbd1801597168291b1e396633d8 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Wed, 6 Jan 2021 16:00:34 +0100 -Subject: [PATCH] Fix sessions being started as the wrong type on autologin - -For autologin, the last session is used, which contains a full path. -Display::findSessionEntry didn't handle that correctly, which led to -X11 sessions getting started as Wayland ones (or the other way around -before 994fa67). - -Fixes #1348 ---- - src/daemon/Display.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp -index b95f6e51..9f1fabc6 100644 ---- a/src/daemon/Display.cpp -+++ b/src/daemon/Display.cpp -@@ -245,6 +245,11 @@ namespace SDDM { - } - - bool Display::findSessionEntry(const QDir &dir, const QString &name) const { -+ // Given an absolute path: Check that it matches dir -+ const QFileInfo fileInfo(name); -+ if (fileInfo.isAbsolute() && fileInfo.absolutePath() != dir.absolutePath()) -+ return false; -+ - QString fileName = name; - - // append extension diff --git a/sddm-0.19.0-fix-xorg-autologin.patch b/sddm-0.19.0-fix-xorg-autologin.patch deleted file mode 100644 index 15d3e3c..0000000 --- a/sddm-0.19.0-fix-xorg-autologin.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- sddm-0.19.0/src/daemon/Display.cpp.orig 2020-12-27 18:36:50.203227500 +0100 -+++ sddm-0.19.0/src/daemon/Display.cpp 2020-12-27 18:37:25.051854984 +0100 -@@ -245,6 +245,11 @@ - } - - bool Display::findSessionEntry(const QDir &dir, const QString &name) const { -+ // Given an absolute path: Check that it matches dir -+ const QFileInfo fileInfo(name); -+ if (fileInfo.isAbsolute() && fileInfo.absoluteFilePath() != dir.absolutePath()) -+ return false; -+ - QString fileName = name; - - // append extension diff --git a/sddm-0.19.0-revert-prefer_wayland_sessions_over_X11_ones.patch b/sddm-0.19.0-revert-prefer_wayland_sessions_over_X11_ones.patch deleted file mode 100644 index dc71e96..0000000 --- a/sddm-0.19.0-revert-prefer_wayland_sessions_over_X11_ones.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 994fa67b01ccfac1aaac08572302bbbea7842dc3 Mon Sep 17 00:00:00 2001 -From: Neal Gompa -Date: Sun, 18 Oct 2020 19:33:52 -0400 -Subject: [PATCH] Prefer Wayland sessions over X11 ones - -As a general goal and preference, we want to make the change -to Wayland as the default and X11 as the fallback. - -This change codifies that preference. - -Reference: https://fedoraproject.org/wiki/Changes/WaylandByDefaultForPlasma ---- - src/common/Session.cpp | 8 ++++---- - src/daemon/Display.cpp | 6 +++--- - src/greeter/SessionModel.cpp | 6 +++--- - 3 files changed, 10 insertions(+), 10 deletions(-) - -diff --git a/src/common/Session.cpp b/src/common/Session.cpp -index ab25822b5..f8c91450f 100644 ---- a/src/common/Session.cpp -+++ b/src/common/Session.cpp -@@ -131,14 +131,14 @@ namespace SDDM { - m_desktopNames.clear(); - - switch (type) { -- case X11Session: -- m_dir = QDir(mainConfig.X11.SessionDir.get()); -- m_xdgSessionType = QStringLiteral("x11"); -- break; - case WaylandSession: - m_dir = QDir(mainConfig.Wayland.SessionDir.get()); - m_xdgSessionType = QStringLiteral("wayland"); - break; -+ case X11Session: -+ m_dir = QDir(mainConfig.X11.SessionDir.get()); -+ m_xdgSessionType = QStringLiteral("x11"); -+ break; - default: - m_xdgSessionType.clear(); - break; -diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp -index 4a5e267d4..bd91446cc 100644 ---- a/src/daemon/Display.cpp -+++ b/src/daemon/Display.cpp -@@ -115,10 +115,10 @@ namespace SDDM { - if (autologinSession.isEmpty()) { - autologinSession = stateConfig.Last.Session.get(); - } -- if (findSessionEntry(mainConfig.X11.SessionDir.get(), autologinSession)) { -- sessionType = Session::X11Session; -- } else if (findSessionEntry(mainConfig.Wayland.SessionDir.get(), autologinSession)) { -+ if (findSessionEntry(mainConfig.Wayland.SessionDir.get(), autologinSession)) { - sessionType = Session::WaylandSession; -+ } else if (findSessionEntry(mainConfig.X11.SessionDir.get(), autologinSession)) { -+ sessionType = Session::X11Session; - } else { - qCritical() << "Unable to find autologin session entry" << autologinSession; - return false; -diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp -index 655f793d0..1953c76a2 100644 ---- a/src/greeter/SessionModel.cpp -+++ b/src/greeter/SessionModel.cpp -@@ -41,8 +41,8 @@ namespace SDDM { - SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) { - // initial population - beginResetModel(); -- populate(Session::X11Session, mainConfig.X11.SessionDir.get()); - populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); -+ populate(Session::X11Session, mainConfig.X11.SessionDir.get()); - endResetModel(); - - // refresh everytime a file is changed, added or removed -@@ -50,12 +50,12 @@ namespace SDDM { - connect(watcher, &QFileSystemWatcher::directoryChanged, [this](const QString &path) { - beginResetModel(); - d->sessions.clear(); -- populate(Session::X11Session, mainConfig.X11.SessionDir.get()); - populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); -+ populate(Session::X11Session, mainConfig.X11.SessionDir.get()); - endResetModel(); - }); -- watcher->addPath(mainConfig.X11.SessionDir.get()); - watcher->addPath(mainConfig.Wayland.SessionDir.get()); -+ watcher->addPath(mainConfig.X11.SessionDir.get()); - } - - SessionModel::~SessionModel() { diff --git a/sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch b/sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch deleted file mode 100644 index c2e35d3..0000000 --- a/sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch +++ /dev/null @@ -1,171 +0,0 @@ -From 68cc9e31d1a4c4609f42114782fc485cb07353a4 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Fri, 9 Oct 2020 21:06:01 +0200 -Subject: [PATCH] Merge normal and testing paths in XorgDisplayServer::start - -They have much in common and this means that Xephyr can also make use use -of -displayfd now. ---- - src/daemon/XorgDisplayServer.cpp | 132 ++++++++++++++----------------- - 1 file changed, 60 insertions(+), 72 deletions(-) - -diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp -index d5f29a94..e60c0221 100644 ---- a/src/daemon/XorgDisplayServer.cpp -+++ b/src/daemon/XorgDisplayServer.cpp -@@ -136,95 +136,83 @@ namespace SDDM { - return false; - } - -- if (daemonApp->testing()) { -- QStringList args; -- QDir x11socketDir(QStringLiteral("/tmp/.X11-unix")); -- int display = 100; -- while (x11socketDir.exists(QStringLiteral("X%1").arg(display))) { -- ++display; -- } -- m_display = QStringLiteral(":%1").arg(display); -- args << m_display << QStringLiteral("-auth") << m_authPath << QStringLiteral("-br") << QStringLiteral("-noreset") << QStringLiteral("-screen") << QStringLiteral("800x600"); -- process->start(mainConfig.X11.XephyrPath.get(), args); -- -- -- // wait for display server to start -- if (!process->waitForStarted()) { -- // log message -- qCritical() << "Failed to start display server process."; -+ // set process environment -+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); -+ env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); -+ process->setProcessEnvironment(env); - -- // return fail -- return false; -- } -- emit started(); -- } else { -- // set process environment -- QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); -- env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); -- process->setProcessEnvironment(env); -- -- //create pipe for communicating with X server -- //0 == read from X, 1== write to from X -- int pipeFds[2]; -- if (pipe(pipeFds) != 0) { -- qCritical("Could not create pipe to start X server"); -- } -+ //create pipe for communicating with X server -+ //0 == read from X, 1== write to from X -+ int pipeFds[2]; -+ if (pipe(pipeFds) != 0) { -+ qCritical("Could not create pipe to start X server"); -+ } - -- // start display server -- QStringList args = mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts); -- args << QStringLiteral("-auth") << m_authPath -+ // start display server -+ QStringList args; -+ if (!daemonApp->testing()) { -+ process->setProgram(mainConfig.X11.ServerPath.get()); -+ args << mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts) - << QStringLiteral("-background") << QStringLiteral("none") -- << QStringLiteral("-noreset") -- << QStringLiteral("-displayfd") << QString::number(pipeFds[1]) - << QStringLiteral("-seat") << displayPtr()->seat()->name(); - - if (displayPtr()->seat()->name() == QLatin1String("seat0")) { - args << QStringLiteral("vt%1").arg(displayPtr()->terminalId()); - } -- qDebug() << "Running:" -- << qPrintable(mainConfig.X11.ServerPath.get()) -- << qPrintable(args.join(QLatin1Char(' '))); -- process->start(mainConfig.X11.ServerPath.get(), args); -- -- // wait for display server to start -- if (!process->waitForStarted()) { -- // log message -- qCritical() << "Failed to start display server process."; -- -- // return fail -- close(pipeFds[0]); -- return false; -- } -+ } else { -+ process->setProgram(mainConfig.X11.XephyrPath.get()); -+ args << QStringLiteral("-br") -+ << QStringLiteral("-screen") << QStringLiteral("800x600"); -+ } - -- // close the other side of pipe in our process, otherwise reading -- // from it may stuck even X server exit. -- close(pipeFds[1]); -+ args << QStringLiteral("-auth") << m_authPath -+ << QStringLiteral("-noreset") -+ << QStringLiteral("-displayfd") << QString::number(pipeFds[1]); - -- QFile readPipe; -+ process->setArguments(args); -+ qDebug() << "Running:" -+ << qPrintable(process->program()) -+ << qPrintable(process->arguments().join(QLatin1Char(' '))); -+ process->start(); - -- if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) { -- qCritical("Failed to open pipe to start X Server"); -+ // wait for display server to start -+ if (!process->waitForStarted()) { -+ // log message -+ qCritical() << "Failed to start display server process."; - -- close(pipeFds[0]); -- return false; -- } -- QByteArray displayNumber = readPipe.readLine(); -- if (displayNumber.size() < 2) { -- // X server gave nothing (or a whitespace). -- qCritical("Failed to read display number from pipe"); -+ // return fail -+ close(pipeFds[0]); -+ return false; -+ } - -- close(pipeFds[0]); -- return false; -- } -- displayNumber.prepend(QByteArray(":")); -- displayNumber.remove(displayNumber.size() -1, 1); // trim trailing whitespace -- m_display = QString::fromLocal8Bit(displayNumber); -+ // close the other side of pipe in our process, otherwise reading -+ // from it may stuck even X server exit. -+ close(pipeFds[1]); -+ -+ QFile readPipe; -+ -+ if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) { -+ qCritical("Failed to open pipe to start X Server"); - -- // close our pipe - close(pipeFds[0]); -+ return false; -+ } -+ QByteArray displayNumber = readPipe.readLine(); -+ if (displayNumber.size() < 2) { -+ // X server gave nothing (or a whitespace). -+ qCritical("Failed to read display number from pipe"); - -- emit started(); -+ close(pipeFds[0]); -+ return false; - } -+ displayNumber.prepend(QByteArray(":")); -+ displayNumber.remove(displayNumber.size() -1, 1); // trim trailing whitespace -+ m_display = QString::fromLocal8Bit(displayNumber); -+ -+ // close our pipe -+ close(pipeFds[0]); -+ -+ emit started(); - - // The file is also used by the greeter, which does care about the - // display number. Write the proper entry, if it's different. diff --git a/sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch b/sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch deleted file mode 100644 index ada64d7..0000000 --- a/sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 5fd5ed271a0e5b8c8857cc4f5f2084d43fd228f1 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Mon, 9 Nov 2020 11:22:15 +0100 -Subject: [PATCH] Only use the base name for $DESKTOP_SESSION - -Other DMs don't use the path. - -Fixes #852 ---- - src/common/Session.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/common/Session.cpp b/src/common/Session.cpp -index 2d7b04f1..3de28ef1 100644 ---- a/src/common/Session.cpp -+++ b/src/common/Session.cpp -@@ -89,7 +89,7 @@ namespace SDDM { - - QString Session::desktopSession() const - { -- return fileName().replace(s_entryExtention, QString()); -+ return QFileInfo(m_fileName).completeBaseName(); - } - - QString Session::desktopNames() const diff --git a/sddm-0.19.0-upstream-retry-starting-the-xserver.patch b/sddm-0.19.0-upstream-retry-starting-the-xserver.patch deleted file mode 100644 index 704bee4..0000000 --- a/sddm-0.19.0-upstream-retry-starting-the-xserver.patch +++ /dev/null @@ -1,212 +0,0 @@ -From adfaa222fdfa6115ea2b320b0bbc2126db9270a5 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Thu, 12 Nov 2020 20:30:55 +0100 -Subject: [PATCH 1/3] Retry starting the display server - -Even if the CanGraphical property of a Seat is true, it's possible that it's -still too early for X to start, as it might need some driver or device which -isn't present yet. - -Fixes #1316 ---- - src/daemon/Seat.cpp | 23 ++++++++++++++++++----- - src/daemon/Seat.h | 4 +++- - src/daemon/XorgDisplayServer.cpp | 10 ++++++---- - 3 files changed, 27 insertions(+), 10 deletions(-) - -diff --git a/src/daemon/Seat.cpp b/src/daemon/Seat.cpp -index eef26da4..838c2221 100644 ---- a/src/daemon/Seat.cpp -+++ b/src/daemon/Seat.cpp -@@ -28,6 +28,7 @@ - - #include - #include -+#include - - #include - -@@ -52,7 +53,7 @@ namespace SDDM { - return m_name; - } - -- bool Seat::createDisplay(int terminalId) { -+ void Seat::createDisplay(int terminalId) { - //reload config if needed - mainConfig.load(); - -@@ -84,12 +85,24 @@ namespace SDDM { - m_displays << display; - - // start the display -- if (!display->start()) { -- qCritical() << "Could not start Display server on vt" << terminalId; -- return false; -+ startDisplay(display); -+ } -+ -+ void Seat::startDisplay(Display *display, int tryNr) { -+ if (display->start()) -+ return; -+ -+ // It's possible that the system isn't ready yet (driver not loaded, -+ // device not enumerated, ...). It's not possible to tell when that changes, -+ // so try a few times with a delay in between. -+ qWarning() << "Attempt" << tryNr << "starting the Display server on vt" << display->terminalId() << "failed"; -+ -+ if(tryNr >= 3) { -+ qCritical() << "Could not start Display server on vt" << display->terminalId(); -+ return; - } - -- return true; -+ QTimer::singleShot(2000, display, [=] { startDisplay(display, tryNr + 1); }); - } - - void Seat::removeDisplay(Display* display) { -diff --git a/src/daemon/Seat.h b/src/daemon/Seat.h -index bf22566b..f9fe7331 100644 ---- a/src/daemon/Seat.h -+++ b/src/daemon/Seat.h -@@ -35,13 +35,15 @@ namespace SDDM { - const QString &name() const; - - public slots: -- bool createDisplay(int terminalId = -1); -+ void createDisplay(int terminalId = -1); - void removeDisplay(SDDM::Display* display); - - private slots: - void displayStopped(); - - private: -+ void startDisplay(SDDM::Display *display, int tryNr = 1); -+ - QString m_name; - - QVector m_displays; -diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp -index e60c0221..5f40fe8c 100644 ---- a/src/daemon/XorgDisplayServer.cpp -+++ b/src/daemon/XorgDisplayServer.cpp -@@ -248,6 +248,12 @@ namespace SDDM { - } - - void XorgDisplayServer::finished() { -+ // clean up -+ if (process) { -+ process->deleteLater(); -+ process = nullptr; -+ } -+ - // check flag - if (!m_started) - return; -@@ -283,10 +289,6 @@ namespace SDDM { - displayStopScript->deleteLater(); - displayStopScript = nullptr; - -- // clean up -- process->deleteLater(); -- process = nullptr; -- - // remove authority file - QFile::remove(m_authPath); - - -From d11e1e987b440fa1aaa741719b92472eeee79b17 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Wed, 9 Dec 2020 19:28:41 +0100 -Subject: [PATCH 2/3] Explicitly stop Xorg when starting fails - -When Xorg starts but there is an error, stop it explicitly instead of assuming -that X exits itself. This avoids a possibly lingering Xorg process in the -XorgDisplayServer instance. Add a check and warning message if Xorg is -restarted too early (shouldn't happen). ---- - src/daemon/XorgDisplayServer.cpp | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp -index 5f40fe8c..3a7bee0d 100644 ---- a/src/daemon/XorgDisplayServer.cpp -+++ b/src/daemon/XorgDisplayServer.cpp -@@ -118,6 +118,11 @@ namespace SDDM { - if (m_started) - return false; - -+ if (process) { -+ qCritical() << "Tried to start Xorg before previous instance exited"; -+ return false; -+ } -+ - // create process - process = new QProcess(this); - -@@ -195,6 +200,7 @@ namespace SDDM { - qCritical("Failed to open pipe to start X Server"); - - close(pipeFds[0]); -+ stop(); - return false; - } - QByteArray displayNumber = readPipe.readLine(); -@@ -203,6 +209,7 @@ namespace SDDM { - qCritical("Failed to read display number from pipe"); - - close(pipeFds[0]); -+ stop(); - return false; - } - displayNumber.prepend(QByteArray(":")); -@@ -219,6 +226,7 @@ namespace SDDM { - if(m_display != QStringLiteral(":0")) { - if(!addCookie(m_authPath)) { - qCritical() << "Failed to write xauth file"; -+ stop(); - return false; - } - } -@@ -232,8 +240,7 @@ namespace SDDM { - } - - void XorgDisplayServer::stop() { -- // check flag -- if (!m_started) -+ if (!process) - return; - - // log message - -From 78048b22e3988d3daec9c271883fa114abc114dc Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Wed, 9 Dec 2020 19:33:08 +0100 -Subject: [PATCH 3/3] Emit XorgDisplayServer::started only when the auth file - is ready - ---- - src/daemon/XorgDisplayServer.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp -index 3a7bee0d..331adcda 100644 ---- a/src/daemon/XorgDisplayServer.cpp -+++ b/src/daemon/XorgDisplayServer.cpp -@@ -219,8 +219,6 @@ namespace SDDM { - // close our pipe - close(pipeFds[0]); - -- emit started(); -- - // The file is also used by the greeter, which does care about the - // display number. Write the proper entry, if it's different. - if(m_display != QStringLiteral(":0")) { -@@ -232,6 +230,8 @@ namespace SDDM { - } - changeOwner(m_authPath); - -+ emit started(); -+ - // set flag - m_started = true; - diff --git a/sddm.spec b/sddm.spec index 3472424..6e9777b 100644 --- a/sddm.spec +++ b/sddm.spec @@ -2,8 +2,8 @@ %define group_sddm 68 Name: sddm Epoch: 1 -Version: 0.20.0 -Release: 3mamba +Version: 0.21.0 +Release: 1mamba Summary: QML based X11 and Wayland display manager Group: Graphical Desktop/Applications/Environment Vendor: openmamba @@ -11,17 +11,8 @@ Distribution: openmamba Packager: Silvan Calarco URL: https://github.com/sddm/sddm Source: https://github.com/sddm/sddm.git/v%{version}/sddm-%{version}.tar.bz2 -#Source: https://github.com/sddm/sddm.git/develop/sddm-%{version}.tar.bz2 Patch0: sddm-0.20.0-openmamba-pam-1.patch -Patch1: sddm-0.17.0.20180408git-fix-pam-group.patch Patch2: sddm-0.18.0-autorotate.patch -Patch3: sddm-0.19.0-fix-xorg-autologin.patch -Patch4: sddm-0.19.0-upstream-Merge_normal_and_testing_paths_in_XorgDisplayServer__start.patch -Patch5: sddm-0.19.0-upstream-retry-starting-the-xserver.patch -Patch6: sddm-0.19.0-upstream-only_use_the_basename_for_desktop_session.patch -Patch7: sddm-0.19.0-fix-sessions-being-started-as-the-wrong-type-on-autologin.patch -Patch8: sddm-0.19.0-fix-build.patch -Patch9: sddm-0.19.0-revert-prefer_wayland_sessions_over_X11_ones.patch License: GPL ## AUTOBUILDREQ-BEGIN BuildRequires: glibc-devel @@ -47,12 +38,6 @@ QML based X11 and Wayland display manager. %setup -q %patch 0 -p1 %patch 2 -p1 -#%patch 4 -p1 -#%patch 5 -p1 -#%patch 6 -p1 -#%patch 7 -p1 -b .fix-sessions-being-started-as-the-wrong-type-on-autologin -#%patch 8 -p1 -b .fix-build -#%patch 9 -p1 -R -b .revert-prefer_wayland_sessions_over_X11_ones %build %cmake -d build @@ -115,16 +100,15 @@ fi %files %defattr(-,root,root) -%{_sysconfdir}/dbus-1/system.d/org.freedesktop.DisplayManager.conf %{_sysconfdir}/pam.d/sddm %{_sysconfdir}/pam.d/sddm-autologin %{_sysconfdir}/pam.d/sddm-greeter -#%config(noreplace) %{_sysconfdir}/sddm.conf +%{_bindir}/sddm +%{_bindir}/sddm-greeter %{_unitdir}/sddm.service %{_sysusersdir}/sddm.conf %{_tmpfilesdir}/sddm.conf -%{_bindir}/sddm -%{_bindir}/sddm-greeter +%{_datadir}/dbus-1/system.d/org.freedesktop.DisplayManager.conf %dir %{_prefix}/lib/sddm/sddm.conf.d %{_prefix}/lib/sddm/sddm.conf.d/default.conf %dir %{_libdir}/qt5/qml/SddmComponents @@ -137,19 +121,20 @@ fi %dir %{_datadir}/sddm/scripts %{_datadir}/sddm/scripts/* %dir %{_datadir}/sddm/themes -#%dir %{_datadir}/sddm/themes/circles -#%{_datadir}/sddm/themes/circles/* %dir %{_datadir}/sddm/themes/elarun %{_datadir}/sddm/themes/elarun/* %dir %{_datadir}/sddm/themes/maldives %{_datadir}/sddm/themes/maldives/* %dir %{_datadir}/sddm/themes/maya %{_datadir}/sddm/themes/maya/* -%{_datadir}/sddm/translations/*.qm +%{_datadir}/sddm/translations-qt5/*.qm %attr(-,sddm,sddm) %dir %{_localstatedir}/lib/sddm %doc LICENSE %changelog +* Wed Feb 28 2024 Automatic Build System 0.21.0-1mamba +- automatic version update by autodist + * Thu Aug 17 2023 Silvan Calarco 0.20.0-3mamba - fix sddm (normal logn) pam patch for openmamba