commit:     34ed989923e6cf1c509d2f2fc113ce23e9c2e314
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Mar  8 23:57:41 2024 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Mar  9 00:03:06 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=34ed9899

x11-misc/sddm: move 0.18.1 patches into patchset tarball

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 x11-misc/sddm/Manifest                             |   3 +-
 x11-misc/sddm/files/pam-1.4-substack.patch         |  31 ----
 x11-misc/sddm/files/sddm-0.18.0-sddmconfdir.patch  |  32 ----
 .../sddm/files/sddm-0.18.1-cve-2020-28049.patch    |  94 -----------
 .../files/sddm-0.18.1-drop-wayland-suffix.patch    |  28 ----
 .../sddm/files/sddm-0.18.1-fix-qt-5.15.7.patch     |  33 ----
 ...m-0.18.1-honor-PAM-supplemental-groups-v2.patch | 182 ---------------------
 .../sddm-0.18.1-nvidia-glitches-vt-switch.patch    |  46 ------
 .../sddm-0.18.1-only-reuse-online-sessions.patch   |  27 ---
 x11-misc/sddm/files/sddm-0.18.1-qt-5.15.2.patch    |  23 ---
 .../files/sddm-0.18.1-respect-user-flags.patch     |  25 ---
 ...18.1-revert-honor-PAM-supplemental-groups.patch |  87 ----------
 x11-misc/sddm/files/sddm.tmpfiles                  |   1 -
 x11-misc/sddm/sddm-0.18.1-r8.ebuild                |  32 ++--
 14 files changed, 19 insertions(+), 625 deletions(-)

diff --git a/x11-misc/sddm/Manifest b/x11-misc/sddm/Manifest
index 57ed50b91404..1a53a302692c 100644
--- a/x11-misc/sddm/Manifest
+++ b/x11-misc/sddm/Manifest
@@ -1,4 +1,5 @@
+DIST sddm-0.18.1-patchset.tar.xz 7860 BLAKE2B 
b79738c58f19ebac24dd790ba7613d85ae78bc0c5161d35249e13ddbac3acefff2753b8d92fa47a73a607b3105310ea5d05e1a5a170068030fe28420ffee88b1
 SHA512 
30ca961f065188d570b1498f9eea5aeafb31ab53b7e9ce41e98e26cba12f8c16a245fffb25ea4d84c6fb9037a24523cd41acc9a8b140a1420282435c9497d9b4
 DIST sddm-0.18.1.tar.xz 3402972 BLAKE2B 
99ab43d374e9a3d318f692a6d496d8a6d68927af3c8e8fc2208d7355ec90649a14758b39f5733dd32f942ed569de88085576d4f5f8666f4f97079e0fb6dcb99e
 SHA512 
ff0637600cda2f4da1f643f047f8ee822bd9651ae4ccbb614b9804175c97360ada7af93e07a7b63832f014ef6e7d1b5380ab2b8959f8024ea520fa5ff17efd60
 DIST sddm-0.20.0.tar.gz 3552722 BLAKE2B 
8086c9555d5ce1598db3279353de077d51adbcc5222a929750e8558a1bcdad395a411f90608bffdc6e1ca7e7ac2b8325e25cf04cbf8476698d787ce7e60c2105
 SHA512 
0f64b405f1451873a01a2210530feb6f4cbbdea17be9d039c105088963a48322968db7b60c0d20ac5d97c8ec2a19e5130f0a74c0f9de58c61453d8ce8bb6272a
-DIST sddm-0.21.0.tar.gz 3557266 BLAKE2B 
849cb8b06b9510e5366ea28ef322c242db7d5a77d94c0a5a727f468209880a717055ad8b0c2f5a857852202a4d6bc1f68281fe0e0ab3c6a32327b5a4219af3a0
 SHA512 
2e8e460e7f318f20a406dcbb1a9fa1dc78b6a5b8d888bfbbaae22b9c642dbc49cf2ac682b4ea9ed847bbafa9bdc361ba08795e59cad970088b370caaaa70f458
 DIST sddm-0.21.0-pam.tar.xz 676 BLAKE2B 
06a79f74a5833eca9877df4be8639311382d13061b21aa3627e6c4b07725878ded62221fca943440bacc143f6be2a23b2e0a2124012ff2c9fac82e1eded11144
 SHA512 
6d91eef2434346f7707122454522cf19f104994ac95d562417f6060a92b4e6c9792bebcccabac8290479200b4ba02fc4d92c6098c435c7ceda796d619d8913c2
+DIST sddm-0.21.0.tar.gz 3557266 BLAKE2B 
849cb8b06b9510e5366ea28ef322c242db7d5a77d94c0a5a727f468209880a717055ad8b0c2f5a857852202a4d6bc1f68281fe0e0ab3c6a32327b5a4219af3a0
 SHA512 
2e8e460e7f318f20a406dcbb1a9fa1dc78b6a5b8d888bfbbaae22b9c642dbc49cf2ac682b4ea9ed847bbafa9bdc361ba08795e59cad970088b370caaaa70f458

diff --git a/x11-misc/sddm/files/pam-1.4-substack.patch 
b/x11-misc/sddm/files/pam-1.4-substack.patch
deleted file mode 100644
index b0467b268228..000000000000
--- a/x11-misc/sddm/files/pam-1.4-substack.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- sddm-0.18.1/services/sddm-autologin.pam.bak        2020-06-19 
22:27:57.305580696 +0200
-+++ sddm-0.18.1/services/sddm-autologin.pam    2020-06-19 22:30:50.513583973 
+0200
-@@ -1,6 +1,5 @@
- #%PAM-1.0
- auth        required    pam_env.so
--auth        required    pam_tally.so file=/var/log/faillog onerr=succeed
- auth        required    pam_shells.so
- auth        required    pam_nologin.so
- auth        required    pam_permit.so
---- sddm-0.18.1/services/sddm.pam.bak  2020-06-19 22:27:26.721580117 +0200
-+++ sddm-0.18.1/services/sddm.pam      2020-06-19 22:27:48.729580533 +0200
-@@ -1,15 +1,15 @@
- #%PAM-1.0
- 
--auth          include         system-login
-+auth          substack                system-login
- -auth         optional        pam_gnome_keyring.so
- -auth   optional  pam_kwallet5.so
- 
--account               include         system-login
-+account               substack                system-login
- 
--password      include         system-login
-+password      substack                system-login
- -password     optional        pam_gnome_keyring.so use_authtok
- 
- session               optional        pam_keyinit.so force revoke
--session               include         system-login
-+session               substack                system-login
- -session              optional        pam_gnome_keyring.so auto_start
- -session  optional  pam_kwallet5.so auto_start
\ No newline at end of file

diff --git a/x11-misc/sddm/files/sddm-0.18.0-sddmconfdir.patch 
b/x11-misc/sddm/files/sddm-0.18.0-sddmconfdir.patch
deleted file mode 100644
index 9d8f2b545a1e..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.0-sddmconfdir.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 300078995ae82495cf09a0646a07e0214f0ae030 Mon Sep 17 00:00:00 2001
-From: Andreas Sturmlechner <andreas.sturmlech...@gmail.com>
-Date: Sat, 21 Jul 2018 22:41:29 +0200
-Subject: [PATCH] Change location of sddm.conf.d to DATAROOTDIR
-
-/usr/lib is not a location that should be hardcoded - depending on
-distribution and architecture this can be different. So far, SDDM
-does not use this path unless the above conditions happen to make
-it coincide with the install location of its Qml modules.
-
-DATAROOTDIR is defined as: Read-only architecture-independent data.
-This seems to be a better fit for a system SDDM default config dir.
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8500c65..5150b7d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -184,7 +184,7 @@ set(WAYLAND_SESSION_COMMAND     
"${DATA_INSTALL_DIR}/scripts/wayland-session"
- 
- set(CONFIG_FILE                 "${CMAKE_INSTALL_FULL_SYSCONFDIR}/sddm.conf"  
      CACHE PATH      "Path of the sddm config file")
- set(CONFIG_DIR                  
"${CMAKE_INSTALL_FULL_SYSCONFDIR}/sddm.conf.d"      CACHE PATH      "Path of 
the sddm config directory")
--set(SYSTEM_CONFIG_DIR           
"${CMAKE_INSTALL_PREFIX}/lib/sddm/sddm.conf.d"      CACHE PATH      "Path of 
the system sddm config directory")
-+set(SYSTEM_CONFIG_DIR           
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/sddm/sddm.conf.d" CACHE PATH      "Path of 
the system sddm config directory")
- set(LOG_FILE                    
"${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/sddm.log"  CACHE PATH      "Path of 
the sddm log file")
- set(DBUS_CONFIG_FILENAME        "org.freedesktop.DisplayManager.conf"         
      CACHE STRING    "Name of the sddm config file")
- set(COMPONENTS_TRANSLATION_DIR  "${DATA_INSTALL_DIR}/translations"            
      CACHE PATH      "Components translations directory")
--- 
-2.18.0
-

diff --git a/x11-misc/sddm/files/sddm-0.18.1-cve-2020-28049.patch 
b/x11-misc/sddm/files/sddm-0.18.1-cve-2020-28049.patch
deleted file mode 100644
index 8209c0739dc6..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-cve-2020-28049.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From be202f533ab98a684c6a007e8d5b4357846bc222 Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fab...@ritter-vogt.de>
-Date: Tue, 6 Oct 2020 21:21:38 +0200
-Subject: [PATCH] Fix X not having access control on startup
-
-If the auth file is empty, X allows any local application (= any user on the
-system) to connect. This is currently the case until X wrote the display
-number to sddm and sddm used that to write the entry into the file.
-To work around this chicken-and-egg problem, make use of the fact that X
-doesn't actually look at the display number in the passed auth file and just
-use :0 unconditionally. Also make sure that writing the entry was actually
-successful.
-
-CVE-2020-28049
----
- src/daemon/XorgDisplayServer.cpp | 25 ++++++++++++++++++++-----
- src/daemon/XorgDisplayServer.h   |  2 +-
- 2 files changed, 21 insertions(+), 6 deletions(-)
-
-diff --git a/src/daemon/XorgDisplayServer.cpp 
b/src/daemon/XorgDisplayServer.cpp
-index d04f6344..df685b2d 100644
---- a/src/daemon/XorgDisplayServer.cpp
-+++ b/src/daemon/XorgDisplayServer.cpp
-@@ -88,7 +88,7 @@ namespace SDDM {
-         return m_cookie;
-     }
- 
--    void XorgDisplayServer::addCookie(const QString &file) {
-+    bool XorgDisplayServer::addCookie(const QString &file) {
-         // log message
-         qDebug() << "Adding cookie to" << file;
- 
-@@ -104,13 +104,13 @@ namespace SDDM {
- 
-         // check file
-         if (!fp)
--            return;
-+            return false;
-         fprintf(fp, "remove %s\n", qPrintable(m_display));
-         fprintf(fp, "add %s . %s\n", qPrintable(m_display), 
qPrintable(m_cookie));
-         fprintf(fp, "exit\n");
- 
-         // close pipe
--        pclose(fp);
-+        return pclose(fp) == 0;
-     }
- 
-     bool XorgDisplayServer::start() {
-@@ -127,6 +127,15 @@ namespace SDDM {
-         // log message
-         qDebug() << "Display server starting...";
- 
-+        // generate auth file.
-+        // For the X server's copy, the display number doesn't matter.
-+        // An empty file would result in no access control!
-+        m_display = QStringLiteral(":0");
-+        if(!addCookie(m_authPath)) {
-+            qCritical() << "Failed to write xauth file";
-+            return false;
-+        }
-+
-         if (daemonApp->testing()) {
-             QStringList args;
-             QDir x11socketDir(QStringLiteral("/tmp/.X11-unix"));
-@@ -217,8 +226,14 @@ namespace SDDM {
-             emit started();
-         }
- 
--        // generate auth file
--        addCookie(m_authPath);
-+        // 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")) {
-+            if(!addCookie(m_authPath)) {
-+                qCritical() << "Failed to write xauth file";
-+                return false;
-+            }
-+        }
-         changeOwner(m_authPath);
- 
-         // set flag
-diff --git a/src/daemon/XorgDisplayServer.h b/src/daemon/XorgDisplayServer.h
-index d2bdf6d4..e97a0b53 100644
---- a/src/daemon/XorgDisplayServer.h
-+++ b/src/daemon/XorgDisplayServer.h
-@@ -40,7 +40,7 @@ namespace SDDM {
- 
-         const QString &cookie() const;
- 
--        void addCookie(const QString &file);
-+        bool addCookie(const QString &file);
- 
-     public slots:
-         bool start();

diff --git a/x11-misc/sddm/files/sddm-0.18.1-drop-wayland-suffix.patch 
b/x11-misc/sddm/files/sddm-0.18.1-drop-wayland-suffix.patch
deleted file mode 100644
index 70efa284803f..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-drop-wayland-suffix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 9a440ba5917ff93c6a78726380c6267d91c13f19 Mon Sep 17 00:00:00 2001
-From: Alex <alex.shaw...@gmail.com>
-Date: Mon, 30 Sep 2019 16:50:16 -0400
-Subject: [PATCH] Prevent duplicate session name.
-
-Several desktop sessions (e.g. KDE Plasma) already include the string " 
(Wayland)" in the session name. When this happens, the session name displayed 
to the user is "Plasma (Wayland) (Wayland)". This change makes it so that only 
"Plasma (Wayland)" will be displayed.
-
-(cherry picked from commit f9a0648ff3f841b68a07c139c3540b9e75bfd279)
----
- 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 aa4dad3..923ecd4 100644
---- a/src/common/Session.cpp
-+++ b/src/common/Session.cpp
-@@ -169,7 +169,7 @@ namespace SDDM {
- 
-             if (line.startsWith(QLatin1String("Name="))) {
-                 if (type == WaylandSession)
--                    m_displayName = QObject::tr("%1 
(Wayland)").arg(line.mid(5));
-+                    m_displayName = QObject::tr("%1").arg(line.mid(5));
-                 else
-                     m_displayName = line.mid(5);
-             }
--- 
-2.38.1
-

diff --git a/x11-misc/sddm/files/sddm-0.18.1-fix-qt-5.15.7.patch 
b/x11-misc/sddm/files/sddm-0.18.1-fix-qt-5.15.7.patch
deleted file mode 100644
index 65e9b8573356..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-fix-qt-5.15.7.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5fe712d0e73c6263647bf306f40fbac94a52f4a6 Mon Sep 17 00:00:00 2001
-From: Harald Sitter <sit...@kde.org>
-Date: Mon, 24 Oct 2022 13:15:48 +0200
-Subject: disable automatic portal launching
-
-in Qt6 (and the KDE patch collection for Qt 5) genericunixservices will
-internally attempt to probe the portal tech early on in the app life
-cycle. this causes the protal system to launch app and then crash
-because we aren't actually providing a fully functional session. instead
-opt out of this altogether
-
-(cherry picked from commit fc24321541f6f65b7d1aac89cd82336ffd53e1a0)
----
- src/greeter/GreeterApp.cpp | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/greeter/GreeterApp.cpp b/src/greeter/GreeterApp.cpp
-index 4e117a7..a491f4d 100644
---- a/src/greeter/GreeterApp.cpp
-+++ b/src/greeter/GreeterApp.cpp
-@@ -318,6 +318,9 @@ int main(int argc, char **argv)
-         QSurfaceFormat::setDefaultFormat(format);
-     }
- 
-+    // Qt internally may load the xdg portal system early on, prevent this, 
we do not have a functional session running.
-+    qputenv("QT_NO_XDG_DESKTOP_PORTAL", "1");
-+
-     QGuiApplication app(argc, argv);
- 
-     QCommandLineParser parser;
--- 
-2.38.1
-

diff --git 
a/x11-misc/sddm/files/sddm-0.18.1-honor-PAM-supplemental-groups-v2.patch 
b/x11-misc/sddm/files/sddm-0.18.1-honor-PAM-supplemental-groups-v2.patch
deleted file mode 100644
index f4ce7ae7ad73..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-honor-PAM-supplemental-groups-v2.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 75e6e00d9e1ecf25e3a9c8332530a1e40d737cdb Mon Sep 17 00:00:00 2001
-From: "J. Konrad Tegtmeier-Rottach" <j...@0x16.de>
-Date: Thu, 9 May 2019 03:06:48 +0200
-Subject: [PATCH] Honor PAM's supplemental groups (v2) (#834, #1159)
-
-This moves the supplemental group initialization step from
-UserSession.cpp to the Backend system, so that the Pam Backend can
-inject additional supplemental groups via modules like pam_group.so.
-
-pam_setcred(3) assumes that it operates on an already initialized
-supplemental group list. However, PamBackend calls
-pam_setcred(PAM_ESTABLISH_CRED) earlier, at the start
-PamBackend::openSession, so a pam_setcred(PAM_REINITIALIZE_CRED) call
-must be issued to repeat the injection of PAM's supplemental groups.
----
- src/helper/Backend.cpp            |  5 +++++
- src/helper/Backend.h              |  3 +++
- src/helper/HelperApp.cpp          |  4 ++++
- src/helper/HelperApp.h            |  1 +
- src/helper/UserSession.cpp        | 13 ++++++++-----
- src/helper/backend/PamBackend.cpp | 18 ++++++++++++++++++
- src/helper/backend/PamBackend.h   |  2 ++
- 7 files changed, 41 insertions(+), 5 deletions(-)
-
-diff --git a/src/helper/Backend.cpp b/src/helper/Backend.cpp
-index d6bb4d0a..35ae2bdf 100644
---- a/src/helper/Backend.cpp
-+++ b/src/helper/Backend.cpp
-@@ -29,6 +29,7 @@
- #include <QtCore/QProcessEnvironment>
- 
- #include <pwd.h>
-+#include <grp.h>
- 
- namespace SDDM {
-     Backend::Backend(HelperApp* parent)
-@@ -79,4 +80,8 @@ namespace SDDM {
-     bool Backend::closeSession() {
-         return true;
-     }
-+
-+    bool Backend::setupSupplementalGroups(struct passwd *pw) {
-+        return !initgroups(pw->pw_name, pw->pw_gid);
-+    }
- }
-diff --git a/src/helper/Backend.h b/src/helper/Backend.h
-index b790e001..3caf1592 100644
---- a/src/helper/Backend.h
-+++ b/src/helper/Backend.h
-@@ -22,6 +22,7 @@
- #define BACKEND_H
- 
- #include <QtCore/QObject>
-+#include <pwd.h>
- 
- namespace SDDM {
-     class HelperApp;
-@@ -38,6 +39,8 @@ namespace SDDM {
-         void setAutologin(bool on = true);
-         void setGreeter(bool on = true);
- 
-+        virtual bool setupSupplementalGroups(struct passwd *pw);
-+
-     public slots:
-         virtual bool start(const QString &user = QString()) = 0;
-         virtual bool authenticate() = 0;
-diff --git a/src/helper/HelperApp.cpp b/src/helper/HelperApp.cpp
-index cad93bd8..d0891d75 100644
---- a/src/helper/HelperApp.cpp
-+++ b/src/helper/HelperApp.cpp
-@@ -253,6 +253,10 @@ namespace SDDM {
-         return m_session;
-     }
- 
-+    Backend *HelperApp::backend() {
-+        return m_backend;
-+    }
-+
-     const QString& HelperApp::user() const {
-         return m_user;
-     }
-diff --git a/src/helper/HelperApp.h b/src/helper/HelperApp.h
-index 3742df12..cb5959a7 100644
---- a/src/helper/HelperApp.h
-+++ b/src/helper/HelperApp.h
-@@ -39,6 +39,7 @@ namespace SDDM {
-         virtual ~HelperApp();
- 
-         UserSession *session();
-+        Backend *backend();
-         const QString &user() const;
-         const QString &cookie() const;
- 
-diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
-index f71fd358..62fd4d70 100644
---- a/src/helper/UserSession.cpp
-+++ b/src/helper/UserSession.cpp
-@@ -19,6 +19,7 @@
-  *
-  */
- 
-+#include "Backend.h"
- #include "Configuration.h"
- #include "UserSession.h"
- #include "HelperApp.h"
-@@ -129,7 +130,8 @@ namespace SDDM {
- #endif
- 
-         // switch user
--        const QByteArray username = 
qobject_cast<HelperApp*>(parent())->user().toLocal8Bit();
-+        HelperApp* app = qobject_cast<HelperApp*>(parent());
-+        const QByteArray username = app->user().toLocal8Bit();
-         struct passwd pw;
-         struct passwd *rpw;
-         long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
-@@ -146,12 +148,13 @@ namespace SDDM {
-                 qCritical() << "getpwnam_r(" << username << ") failed with 
error: " << strerror(err);
-             exit(Auth::HELPER_OTHER_ERROR);
-         }
--        if (setgid(pw.pw_gid) != 0) {
--            qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << 
username;
-+
-+        if (!app->backend()->setupSupplementalGroups(&pw)) {
-+            qCritical() << "failed to set up supplemental groups for user: " 
<< username;
-             exit(Auth::HELPER_OTHER_ERROR);
-         }
--        if (initgroups(pw.pw_name, pw.pw_gid) != 0) {
--            qCritical() << "initgroups(" << pw.pw_name << ", " << pw.pw_gid 
<< ") failed for user: " << username;
-+        if (setgid(pw.pw_gid) != 0) {
-+            qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << 
username;
-             exit(Auth::HELPER_OTHER_ERROR);
-         }
-         if (setuid(pw.pw_uid) != 0) {
-diff --git a/src/helper/backend/PamBackend.cpp 
b/src/helper/backend/PamBackend.cpp
-index f86d77d6..cccfa258 100644
---- a/src/helper/backend/PamBackend.cpp
-+++ b/src/helper/backend/PamBackend.cpp
-@@ -289,6 +289,24 @@ namespace SDDM {
-         return QString::fromLocal8Bit((const char*) m_pam->getItem(PAM_USER));
-     }
- 
-+    bool PamBackend::setupSupplementalGroups(struct passwd *pw) {
-+        if (!Backend::setupSupplementalGroups(pw))
-+            return false;
-+
-+        // pam_setcred(3) may inject additional groups into the user's
-+        // list of supplemental groups, and assumes that the user's
-+        // supplemental groups have already been initialized before
-+        // its invocation. Since pam_setcred was already called at the
-+        // start of openSession, we need to repeat this step here as
-+        // the user's groups have only just now been initialized.
-+
-+        if (!m_pam->setCred(PAM_REINITIALIZE_CRED)) {
-+            m_app->error(m_pam->errorString(), Auth::ERROR_AUTHENTICATION);
-+            return false;
-+        }
-+        return true;
-+    }
-+
-     int PamBackend::converse(int n, const struct pam_message **msg, struct 
pam_response **resp) {
-         qDebug() << "[PAM] Conversation with" << n << "messages";
- 
-diff --git a/src/helper/backend/PamBackend.h b/src/helper/backend/PamBackend.h
-index 4c8b4b35..5b079099 100644
---- a/src/helper/backend/PamBackend.h
-+++ b/src/helper/backend/PamBackend.h
-@@ -28,6 +28,7 @@
- #include <QtCore/QObject>
- 
- #include <security/pam_appl.h>
-+#include <pwd.h>
- 
- namespace SDDM {
-     class PamHandle;
-@@ -61,6 +62,7 @@ namespace SDDM {
-         explicit PamBackend(HelperApp *parent);
-         virtual ~PamBackend();
-         int converse(int n, const struct pam_message **msg, struct 
pam_response **resp);
-+        virtual bool setupSupplementalGroups(struct passwd *pw);
- 
-     public slots:
-         virtual bool start(const QString &user = QString());

diff --git a/x11-misc/sddm/files/sddm-0.18.1-nvidia-glitches-vt-switch.patch 
b/x11-misc/sddm/files/sddm-0.18.1-nvidia-glitches-vt-switch.patch
deleted file mode 100644
index ab2fc18cbcbf..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-nvidia-glitches-vt-switch.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 76c11653522453efcf86f6f2f53bca1a497ea350 Mon Sep 17 00:00:00 2001
-From: David Edmundson <k...@davidedmundson.co.uk>
-Date: Thu, 28 Mar 2019 11:43:37 +0000
-Subject: Enable QSurfaceFormat::ResetNotification on new Qt
-
-This fixes graphical glitches on nvidia after VT switching.
-
-It's opt-in as it requires code paths to handle glGetError differently.
-The version comparison is because my early implementations missed a code
-path. This was fixed in 5.12.2, but we may as well play safe
-
-(cherry picked from commit cd4e1fa21e1ab7178fa5d2ef858f3271575fd315)
----
- src/greeter/GreeterApp.cpp | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/src/greeter/GreeterApp.cpp b/src/greeter/GreeterApp.cpp
-index d47998e..4e117a7 100644
---- a/src/greeter/GreeterApp.cpp
-+++ b/src/greeter/GreeterApp.cpp
-@@ -40,6 +40,9 @@
- #include <QDebug>
- #include <QTimer>
- #include <QTranslator>
-+#include <QLibraryInfo>
-+#include <QVersionNumber>
-+#include <QSurfaceFormat>
- 
- #include <iostream>
- 
-@@ -309,6 +312,12 @@ int main(int argc, char **argv)
-         qDebug() << "High-DPI autoscaling not Enabled";
-     }
- 
-+    if (QLibraryInfo::version() >= QVersionNumber(5, 13, 0)) {
-+        auto format(QSurfaceFormat::defaultFormat());
-+        format.setOption(QSurfaceFormat::ResetNotification);
-+        QSurfaceFormat::setDefaultFormat(format);
-+    }
-+
-     QGuiApplication app(argc, argv);
- 
-     QCommandLineParser parser;
--- 
-2.38.1
-

diff --git a/x11-misc/sddm/files/sddm-0.18.1-only-reuse-online-sessions.patch 
b/x11-misc/sddm/files/sddm-0.18.1-only-reuse-online-sessions.patch
deleted file mode 100644
index b3ea90ff768c..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-only-reuse-online-sessions.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From f131270ff3ae6e6b4e2dc965cd05b46e194b48c1 Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fab...@ritter-vogt.de>
-Date: Tue, 31 Jul 2018 16:51:13 +0200
-Subject: [PATCH] Session reuse: Only consider "online" sessions
-
-Otherwise it might switch to already dead sessions ("closing" or "lingering").
----
- src/daemon/Display.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
-index 86e597e..ec442b0 100644
---- a/src/daemon/Display.cpp
-+++ b/src/daemon/Display.cpp
-@@ -290,8 +290,8 @@ namespace SDDM {
-             foreach(const SessionInfo &s, reply.value()) {
-                 if (s.userName == user) {
-                     OrgFreedesktopLogin1SessionInterface 
session(Logind::serviceName(), s.sessionPath.path(), 
QDBusConnection::systemBus());
--                    if (session.service() == QLatin1String("sddm")) {
--                        m_reuseSessionId =  s.sessionId;
-+                    if (session.service() == QLatin1String("sddm") && 
session.state() == QLatin1String("online")) {
-+                        m_reuseSessionId = s.sessionId;
-                         break;
-                     }
-                 }
--- 
-2.18.0

diff --git a/x11-misc/sddm/files/sddm-0.18.1-qt-5.15.2.patch 
b/x11-misc/sddm/files/sddm-0.18.1-qt-5.15.2.patch
deleted file mode 100644
index 7179d14e4c1e..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-qt-5.15.2.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From e93bf95c54ad8c2a1604f8d7be05339164b19308 Mon Sep 17 00:00:00 2001
-From: "aa...@kde.org" <aa...@kde.org>
-Date: Thu, 12 Nov 2020 23:42:48 +0100
-Subject: [PATCH] Fix compilation once QTBUG-88431 gets fixed
-
-And also comes closes to Qt6 compatibility
----
- src/daemon/XorgDisplayServer.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/daemon/XorgDisplayServer.cpp 
b/src/daemon/XorgDisplayServer.cpp
-index 5f93a1b3..d5f29a94 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/x11-misc/sddm/files/sddm-0.18.1-respect-user-flags.patch 
b/x11-misc/sddm/files/sddm-0.18.1-respect-user-flags.patch
deleted file mode 100644
index 6801fa799ead..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-respect-user-flags.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- a/CMakeLists.txt   2020-10-12 13:03:39.000000000 +0200
-+++ b/CMakeLists.txt   2020-10-12 23:40:04.480687143 +0200
-@@ -41,22 +41,6 @@
- # Definitions
- add_definitions(-Wall -std=c++11 -DQT_NO_CAST_FROM_ASCII 
-DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_FOREACH)
- 
--# Default build type
--if(NOT CMAKE_BUILD_TYPE)
--    set(CMAKE_BUILD_TYPE Release)
--endif()
--
--# Handle build type
--if(CMAKE_BUILD_TYPE MATCHES [Dd]ebug)
--    message(STATUS "Debug build")
--    add_definitions(-DDEBUG)
--    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
--else()
--    message(STATUS "Release build")
--    add_definitions(-DNDEBUG)
--    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
--endif()
--
- # Default absolute paths
- if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
-     set(CMAKE_INSTALL_SYSCONFDIR "/etc")

diff --git 
a/x11-misc/sddm/files/sddm-0.18.1-revert-honor-PAM-supplemental-groups.patch 
b/x11-misc/sddm/files/sddm-0.18.1-revert-honor-PAM-supplemental-groups.patch
deleted file mode 100644
index f14ff7670c88..000000000000
--- a/x11-misc/sddm/files/sddm-0.18.1-revert-honor-PAM-supplemental-groups.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From d3953e88a94ec25a87d3c5136517b3d1009cb1fd Mon Sep 17 00:00:00 2001
-From: "J. Konrad Tegtmeier-Rottach" <j...@0x16.de>
-Date: Wed, 8 May 2019 18:58:53 +0200
-Subject: [PATCH] Revert "Honor PAM's ambient supplemental groups. (#834)"
-
-This reverts commit 1bc813d08b8130e458a6550ec47fb2bfbe6de080, which
-misuses PAM and leads to pulling in all of root's supplemental groups
-during session initialization instead of only adding PAM's extra
-groups. The problem was masked due to the root user not having any
-supplemental groups in some common contexts, like running sddm from a
-systemd unit.
----
- src/helper/UserSession.cpp | 57 --------------------------------------
- 1 file changed, 57 deletions(-)
-
-diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
-index b3aec356..f71fd358 100644
---- a/src/helper/UserSession.cpp
-+++ b/src/helper/UserSession.cpp
-@@ -150,67 +150,10 @@ 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/x11-misc/sddm/files/sddm.tmpfiles 
b/x11-misc/sddm/files/sddm.tmpfiles
deleted file mode 100644
index 300d646138c1..000000000000
--- a/x11-misc/sddm/files/sddm.tmpfiles
+++ /dev/null
@@ -1 +0,0 @@
-d /var/lib/sddm 0755 sddm sddm

diff --git a/x11-misc/sddm/sddm-0.18.1-r8.ebuild 
b/x11-misc/sddm/sddm-0.18.1-r8.ebuild
index 6464035cf707..0f35ab30d4eb 100644
--- a/x11-misc/sddm/sddm-0.18.1-r8.ebuild
+++ b/x11-misc/sddm/sddm-0.18.1-r8.ebuild
@@ -1,13 +1,15 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
 
+PATCHSET="${P}-patchset"
 inherit cmake linux-info systemd tmpfiles
 
 DESCRIPTION="Simple Desktop Display Manager"
 HOMEPAGE="https://github.com/sddm/sddm";
-SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz";
+SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz
+       https://dev.gentoo.org/~asturm/distfiles/${PATCHSET}.tar.xz";
 
 LICENSE="GPL-2+ MIT CC-BY-3.0 CC-BY-SA-3.0 public-domain"
 SLOT="0"
@@ -47,22 +49,22 @@ BDEPEND="
 "
 
 PATCHES=(
-       "${FILESDIR}/${P}-respect-user-flags.patch"
-       "${FILESDIR}/${P}-Xsession.patch" # bug 611210
-       "${FILESDIR}/${PN}-0.18.0-sddmconfdir.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-respect-user-flags.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-Xsession.patch" # bug 611210
+       "${WORKDIR}/${PATCHSET}/${PN}-0.18.0-sddmconfdir.patch"
        # fix for groups: https://github.com/sddm/sddm/issues/1159
-       "${FILESDIR}/${P}-revert-honor-PAM-supplemental-groups.patch"
-       "${FILESDIR}/${P}-honor-PAM-supplemental-groups-v2.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-revert-honor-PAM-supplemental-groups.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-honor-PAM-supplemental-groups-v2.patch"
        # fix for ReuseSession=true
-       "${FILESDIR}/${P}-only-reuse-online-sessions.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-only-reuse-online-sessions.patch"
        # TODO: fix properly
-       "${FILESDIR}/pam-1.4-substack.patch"
+       "${WORKDIR}/${PATCHSET}/pam-1.4-substack.patch"
        # upstream git develop branch:
-       "${FILESDIR}/${P}-qt-5.15.2.patch"
-       "${FILESDIR}/${P}-cve-2020-28049.patch" # bug 753104
-       "${FILESDIR}/${P}-nvidia-glitches-vt-switch.patch"
-       "${FILESDIR}/${P}-drop-wayland-suffix.patch"
-       "${FILESDIR}/${P}-fix-qt-5.15.7.patch" # KDE-bug 458865
+       "${WORKDIR}/${PATCHSET}/${P}-qt-5.15.2.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-cve-2020-28049.patch" # bug 753104
+       "${WORKDIR}/${PATCHSET}/${P}-nvidia-glitches-vt-switch.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-drop-wayland-suffix.patch"
+       "${WORKDIR}/${PATCHSET}/${P}-fix-qt-5.15.7.patch" # KDE-bug 458865
 )
 
 pkg_setup() {
@@ -93,7 +95,7 @@ src_configure() {
 src_install() {
        cmake_src_install
 
-       newtmpfiles "${FILESDIR}/${PN}.tmpfiles" "${PN}.conf"
+       newtmpfiles "${WORKDIR}/${PATCHSET}/${PN}.tmpfiles" "${PN}.conf"
 
        # Create a default.conf as upstream dropped /etc/sddm.conf w/o 
replacement
        local confd="/usr/share/sddm/sddm.conf.d"

Reply via email to