git: 718687d3ee3e - main - x11/sddm: Update to 0.20.0

From: Gleb Popov <arrowd_at_FreeBSD.org>
Date: Fri, 14 Jul 2023 16:07:50 UTC
The branch main has been updated by arrowd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=718687d3ee3e9556cd440c0aa26a36c52937e620

commit 718687d3ee3e9556cd440c0aa26a36c52937e620
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2021-10-12 16:10:40 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2023-07-14 16:07:47 +0000

    x11/sddm: Update to 0.20.0
    
    Co-authored-by: Kenneth Raplee <kenrap@kennethraplee.com>
---
 x11/sddm/Makefile                                | 14 +++---
 x11/sddm/distinfo                                |  8 ++--
 x11/sddm/files/patch-data_scripts_Xsession       | 19 --------
 x11/sddm/files/patch-services_sddm-autologin.pam |  6 +--
 x11/sddm/files/patch-services_sddm.pam           | 40 ++++++++---------
 x11/sddm/files/patch-src_common_Configuration.h  |  6 +--
 x11/sddm/files/patch-src_daemon_DaemonApp.cpp    | 22 ----------
 x11/sddm/files/patch-src_daemon_Display.cpp      | 24 -----------
 x11/sddm/files/patch-src_helper_UserSession.cpp  | 55 ------------------------
 x11/sddm/pkg-plist                               |  5 +++
 10 files changed, 40 insertions(+), 159 deletions(-)

diff --git a/x11/sddm/Makefile b/x11/sddm/Makefile
index 94f46a1fc1c4..553e9c4288b5 100644
--- a/x11/sddm/Makefile
+++ b/x11/sddm/Makefile
@@ -1,12 +1,8 @@
 PORTNAME=	sddm
-PORTVERSION=	0.19.0
+PORTVERSION=	0.20.0
 DISTVERSIONPREFIX=	v
-PORTREVISION=	8
 CATEGORIES=	x11
 
-PATCH_SITES=	https://github.com/sddm/sddm/commit/
-PATCHFILES=	e93bf95c54ad8c2a1604f8d7be05339164b19308.patch:-p1
-
 MAINTAINER=	kde@FreeBSD.org
 COMMENT=	QML based login manager
 WWW=		https://github.com/sddm/sddm
@@ -30,8 +26,9 @@ CPE_VENDOR=	${PORTNAME}_project
 USE_GITHUB=	yes
 USE_KDE=	ecm:build
 USE_QT=		core declarative dbus gui network \
-		buildtools:build linguisttools:build qmake:build testlib:build
-USE_XORG=	xcb
+		buildtools:build linguisttools:build declarative-test:build \
+		qmake:build testlib:build
+USE_XORG=	xau xcb
 
 CONFLICTS_INSTALL=	lightdm
 
@@ -39,7 +36,8 @@ CMAKE_ON=	BUILD_MAN_PAGES
 CMAKE_ARGS=	-DUID_MIN=1000 \
 		-DUID_MAX=65000 \
 		-DCMAKE_INSTALL_SYSCONFDIR:PATH=${LOCALBASE}/etc \
-		-DRST2MAN_EXECUTABLE=${LOCALBASE}/bin/rst2man.py-${PYTHON_VER}
+		-DRST2MAN_EXECUTABLE=${LOCALBASE}/bin/rst2man.py-${PYTHON_VER} \
+		-DSDDM_INITIAL_VT=7
 
 USE_RC_SUBR=	sddm
 SUB_FILES=	xinitrc.desktop
diff --git a/x11/sddm/distinfo b/x11/sddm/distinfo
index bf6877f2adcf..22293e126b67 100644
--- a/x11/sddm/distinfo
+++ b/x11/sddm/distinfo
@@ -1,5 +1,3 @@
-TIMESTAMP = 1640593130
-SHA256 (sddm-sddm-v0.19.0_GH0.tar.gz) = e76da1f13d5ad5e0179e3fec57543126044339405ef19c397e105e0807bd4e41
-SIZE (sddm-sddm-v0.19.0_GH0.tar.gz) = 3532945
-SHA256 (e93bf95c54ad8c2a1604f8d7be05339164b19308.patch) = 4878cbadf98d0219e268ba2dd73adda917fccf1bd99113652e626082f2bdfc72
-SIZE (e93bf95c54ad8c2a1604f8d7be05339164b19308.patch) = 865
+TIMESTAMP = 1689196955
+SHA256 (sddm-sddm-v0.20.0_GH0.tar.gz) = 467c8bd91e0d4f76d4bc4e57ab334f1f48a33478482ba9476d93b0b3d7ace9fb
+SIZE (sddm-sddm-v0.20.0_GH0.tar.gz) = 3552722
diff --git a/x11/sddm/files/patch-data_scripts_Xsession b/x11/sddm/files/patch-data_scripts_Xsession
deleted file mode 100644
index 1cde066065fb..000000000000
--- a/x11/sddm/files/patch-data_scripts_Xsession
+++ /dev/null
@@ -1,19 +0,0 @@
-Fix use of "$@" (see sh(1)).
-
-There's no systemd on FreeBSD so start the session using $STARTUP which is
-defined in 90-consolekit if ConsoleKit2 is installed.  By default this allows
-local users to shutdown/reboot the machine and access devices like USB keys.
-
-Also use dbus-run-session so libdbus doesn't have to autolauch the session bus
-daemon on first use.  Autolaunched dbus daemons tend to linger and may only
-exit if the X server exits.
-
---- data/scripts/Xsession.orig	2019-03-13 09:22:35 UTC
-+++ data/scripts/Xsession
-@@ -98,5 +98,5 @@ fi
- if [ -z "$*" ]; then
-     exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session."
- else
--    exec $@
-+    exec $STARTUP /usr/bin/dbus-run-session --dbus-daemon=/usr/bin/dbus-daemon -- "$@"
- fi
diff --git a/x11/sddm/files/patch-services_sddm-autologin.pam b/x11/sddm/files/patch-services_sddm-autologin.pam
index 4117b6d709ff..6bbe10335f32 100644
--- a/x11/sddm/files/patch-services_sddm-autologin.pam
+++ b/x11/sddm/files/patch-services_sddm-autologin.pam
@@ -1,9 +1,9 @@
---- services/sddm-autologin.pam.orig	2020-11-03 09:55:31 UTC
+--- services/sddm-autologin.pam.orig	2021-10-03 13:28:23 UTC
 +++ services/sddm-autologin.pam
-@@ -1,13 +1,9 @@
+@@ -1,13 +1,10 @@
  #%PAM-1.0
 -auth        required    pam_env.so
--auth        required    pam_tally2.so file=/var/log/tallylog onerr=succeed
+ auth        required    pam_faillock.so preauth
 -auth        required    pam_shells.so
 -auth        required    pam_nologin.so
  auth        required    pam_permit.so
diff --git a/x11/sddm/files/patch-services_sddm.pam b/x11/sddm/files/patch-services_sddm.pam
index 5b77e395a39f..58d80d965b2d 100644
--- a/x11/sddm/files/patch-services_sddm.pam
+++ b/x11/sddm/files/patch-services_sddm.pam
@@ -1,27 +1,27 @@
---- services/sddm.pam.orig	2017-12-05 16:00:16 UTC
+--- services/sddm.pam.orig	2023-02-08 07:12:21 UTC
 +++ services/sddm.pam
 @@ -1,15 +1,14 @@
  #%PAM-1.0
  
--auth		include		system-login
---auth		optional	pam_gnome_keyring.so
---auth   optional  pam_kwallet5.so
-+auth		include		login
-+#auth		optional	pam_gnome_keyring.so
-+#auth		optional	pam_kwallet5.so
+-auth        include     system-login
+--auth       optional    pam_gnome_keyring.so
+--auth       optional    pam_kwallet5.so
++auth        include     login
++#auth       optional    pam_gnome_keyring.so
++#auth       optional    pam_kwallet5.so
  
--account		include		system-login
-+account		include		login
+-account     include     system-login
++account     include     login
  
--password	include		system-login
---password	optional	pam_gnome_keyring.so use_authtok
-+password	include		login
-+#password	optional	pam_gnome_keyring.so use_authtok
+-password    include     system-login
+--password   optional    pam_gnome_keyring.so    use_authtok
++password    include     login
++#password   optional    pam_gnome_keyring.so    use_authtok
  
--session		optional	pam_keyinit.so force revoke
--session		include		system-login
---session		optional	pam_gnome_keyring.so auto_start
---session  optional  pam_kwallet5.so auto_start
-+session 	include		login
-+#session 	optional	pam_gnome_keyring.so auto_start
-+#session 	optional	pam_kwallet5.so auto_start
+-session     optional    pam_keyinit.so          force revoke
+-session     include     system-login
+--session    optional    pam_gnome_keyring.so    auto_start
+--session    optional    pam_kwallet5.so         auto_start
++session     include     login
++#session    optional    pam_gnome_keyring.so    auto_start
++#session    optional    pam_kwallet5.so         auto_start
diff --git a/x11/sddm/files/patch-src_common_Configuration.h b/x11/sddm/files/patch-src_common_Configuration.h
index decb680a3c0d..cb15eb236b8a 100644
--- a/x11/sddm/files/patch-src_common_Configuration.h
+++ b/x11/sddm/files/patch-src_common_Configuration.h
@@ -6,9 +6,9 @@ Set the default theme and cursor theme to breeze, because sddm is most likely
 used together with Plasma.  If they aren't available sddm falls back to a
 compiled-in theme.
 
---- src/common/Configuration.h.orig	2020-11-03 09:55:31 UTC
+--- src/common/Configuration.h.orig	2021-10-12 20:26:16 UTC
 +++ src/common/Configuration.h
-@@ -47,10 +47,10 @@ namespace SDDM {
+@@ -51,10 +51,10 @@ 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"));
@@ -18,6 +18,6 @@ compiled-in theme.
                                                                                                     "The files should be named <username>.face.icon"));
 -            Entry(CursorTheme,         QString,     QString(),                                  _S("Cursor theme used in the greeter"));
 +            Entry(CursorTheme,         QString,     _S("breeze_cursors"),                       _S("Cursor theme used in the greeter"));
+             Entry(CursorSize,          QString,     QString(),                                  _S("Cursor size used in the greeter"));
              Entry(Font,                QString,     QString(),                                  _S("Font used in the greeter"));
              Entry(EnableAvatars,       bool,        true,                                       _S("Enable display of custom user avatars"));
-             Entry(DisableAvatarsThreshold,int,      7,                                          _S("Number of users to use as threshold\n"
diff --git a/x11/sddm/files/patch-src_daemon_DaemonApp.cpp b/x11/sddm/files/patch-src_daemon_DaemonApp.cpp
deleted file mode 100644
index 78c7f42763fd..000000000000
--- a/x11/sddm/files/patch-src_daemon_DaemonApp.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-On FreeBSD console-kit-daemon isn't started by the init system, so try to
-start it from sddm.
-
---- src/daemon/DaemonApp.cpp.orig	2017-12-05 16:00:16 UTC
-+++ src/daemon/DaemonApp.cpp
-@@ -28,6 +28,7 @@
- 
- #include "MessageHandler.h"
- 
-+#include <QDBusConnectionInterface>
- #include <QDebug>
- #include <QHostInfo>
- #include <QTimer>
-@@ -48,6 +49,8 @@ namespace SDDM {
- 
-         // set testing parameter
-         m_testing = (arguments().indexOf(QStringLiteral("--test-mode")) != -1);
-+
-+        QDBusConnection::systemBus().interface()->startService(QStringLiteral("org.freedesktop.ConsoleKit"));
- 
-         // create display manager
-         m_displayManager = new DisplayManager(this);
diff --git a/x11/sddm/files/patch-src_daemon_Display.cpp b/x11/sddm/files/patch-src_daemon_Display.cpp
deleted file mode 100644
index d4e583a60caf..000000000000
--- a/x11/sddm/files/patch-src_daemon_Display.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-VirtualTerminal for Wayland is only present on Linux at the moment.
-As we are only interested in an X11 session at the moment, we therefore
-can hide it behind a Q_OS_LINUX.
-
-Only set XDG_CURRENT_DESKTOP and XDG_SESSION_DESKTOP if the xsession .desktop
-file defines DesktopNames.  Our xinitrc.desktop does not set it because that
-may confuse the desktop session started from ~/.xinitrc.  These environment
-variables are used for OnlyShowIn and NotShowIn in .desktop files.
-
---- src/daemon/Display.cpp.orig	2020-11-03 09:55:31 UTC
-+++ src/daemon/Display.cpp
-@@ -320,10 +320,12 @@ namespace SDDM {
-         env.insert(QStringLiteral("XDG_SEAT_PATH"), daemonApp->displayManager()->seatPath(seat()->name()));
-         env.insert(QStringLiteral("XDG_SESSION_PATH"), daemonApp->displayManager()->sessionPath(QStringLiteral("Session%1").arg(daemonApp->newSessionId())));
-         env.insert(QStringLiteral("DESKTOP_SESSION"), session.desktopSession());
-+        if (!session.desktopNames().isEmpty())
-         env.insert(QStringLiteral("XDG_CURRENT_DESKTOP"), session.desktopNames());
-         env.insert(QStringLiteral("XDG_SESSION_CLASS"), QStringLiteral("user"));
-         env.insert(QStringLiteral("XDG_SESSION_TYPE"), session.xdgSessionType());
-         env.insert(QStringLiteral("XDG_SEAT"), seat()->name());
-+        if (!session.desktopNames().isEmpty())
-         env.insert(QStringLiteral("XDG_SESSION_DESKTOP"), session.desktopNames());
- 
-         m_auth->insertEnvironment(env);
diff --git a/x11/sddm/files/patch-src_helper_UserSession.cpp b/x11/sddm/files/patch-src_helper_UserSession.cpp
deleted file mode 100644
index efe28218dfa0..000000000000
--- a/x11/sddm/files/patch-src_helper_UserSession.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
---- src/helper/UserSession.cpp.orig	2019-03-13 09:22:35 UTC
-+++ src/helper/UserSession.cpp
-@@ -33,6 +33,9 @@
- #include <unistd.h>
- #include <fcntl.h>
- #include <sched.h>
-+#if defined(Q_OS_FREEBSD)
-+#include <login_cap.h>
-+#endif /* defined(Q_OS_FREEBSD) */
- 
- namespace SDDM {
-     UserSession::UserSession(HelperApp *parent)
-@@ -46,10 +49,8 @@ namespace SDDM {
-     bool UserSession::start() {
-         QProcessEnvironment env = qobject_cast<HelperApp*>(parent())->session()->processEnvironment();
- 
--        if (env.value(QStringLiteral("XDG_SESSION_CLASS")) == QLatin1String("greeter")) {
--            QProcess::start(m_path);
--        } else if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QLatin1String("x11")) {
--            const QString cmd = QStringLiteral("%1 \"%2\"").arg(mainConfig.X11.SessionCommand.get()).arg(m_path);
-+        if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QLatin1String("x11")) {
-+            const QString cmd = QStringLiteral("%1 %2").arg(mainConfig.X11.SessionCommand.get()).arg(m_path);
-             qInfo() << "Starting:" << cmd;
-             QProcess::start(cmd);
-         } else if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QLatin1String("wayland")) {
-@@ -130,6 +131,21 @@ namespace SDDM {
- 
-         // switch user
-         const QByteArray username = qobject_cast<HelperApp*>(parent())->user().toLocal8Bit();
-+#if defined(Q_OS_FREEBSD)
-+	struct passwd *pw = getpwnam(username.constData());
-+	/* execve() uses the environment prepared in Backend::openSession(),
-+	   therefore environment variables which are set here are ignored. */
-+	if (setusercontext(NULL, pw, pw->pw_uid, LOGIN_SETALL) != 0) {
-+	    qCritical() << "setusercontext(NULL, *, " << pw->pw_uid << ", LOGIN_SETALL) failed for user: " << username;
-+	    exit(Auth::HELPER_OTHER_ERROR);
-+	}
-+        if (chdir(pw->pw_dir) != 0) {
-+            qCritical() << "chdir(" << pw->pw_dir << ") failed for user: " << username;
-+            qCritical() << "verify directory exist and has sufficient permissions";
-+            exit(Auth::HELPER_OTHER_ERROR);
-+        }
-+        const QString homeDir = QString::fromLocal8Bit(pw->pw_dir);
-+#else /* defined(Q_OS_FREEBSD) */
-         struct passwd pw;
-         struct passwd *rpw;
-         long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
-@@ -221,6 +237,7 @@ namespace SDDM {
-             exit(Auth::HELPER_OTHER_ERROR);
-         }
-         const QString homeDir = QString::fromLocal8Bit(pw.pw_dir);
-+#endif /* defined(Q_OS_FREEBSD) */
- 
-         //we cannot use setStandardError file as this code is run in the child process
-         //we want to redirect after we setuid so that the log file is owned by the user
diff --git a/x11/sddm/pkg-plist b/x11/sddm/pkg-plist
index 35988b33a4ad..bc24fd18f449 100644
--- a/x11/sddm/pkg-plist
+++ b/x11/sddm/pkg-plist
@@ -18,6 +18,8 @@ etc/dbus-1/system.d/org.freedesktop.DisplayManager.conf
 %%QT_QMLDIR%%/SddmComponents/qmldir
 %%QT_QMLDIR%%/SddmComponents/warning.png
 libexec/sddm-helper
+libexec/sddm-helper-start-wayland
+libexec/sddm-helper-start-x11user
 share/man/man1/sddm-greeter.1.gz
 share/man/man1/sddm.1.gz
 share/man/man5/sddm-state.conf.5.gz
@@ -29,6 +31,7 @@ share/man/man5/sddm.conf.5.gz
 %%DATADIR%%/flags/ar.png
 %%DATADIR%%/flags/at.png
 %%DATADIR%%/flags/az.png
+%%DATADIR%%/flags/bd.png
 %%DATADIR%%/flags/be.png
 %%DATADIR%%/flags/bg.png
 %%DATADIR%%/flags/bh.png
@@ -159,6 +162,7 @@ share/man/man5/sddm.conf.5.gz
 %%DATADIR%%/translations/eu.qm
 %%DATADIR%%/translations/fi.qm
 %%DATADIR%%/translations/fr.qm
+%%DATADIR%%/translations/gl.qm
 %%DATADIR%%/translations/he.qm
 %%DATADIR%%/translations/hi_IN.qm
 %%DATADIR%%/translations/hu.qm
@@ -166,6 +170,7 @@ share/man/man5/sddm.conf.5.gz
 %%DATADIR%%/translations/is.qm
 %%DATADIR%%/translations/it.qm
 %%DATADIR%%/translations/ja.qm
+%%DATADIR%%/translations/ka.qm
 %%DATADIR%%/translations/kk.qm
 %%DATADIR%%/translations/ko.qm
 %%DATADIR%%/translations/lt.qm