svn commit: r479245 - in head/x11: plasma5-plasma-workspace plasma5-plasma-workspace/files sddm sddm/files

Adriaan de Groot adridg at FreeBSD.org
Sat Sep 8 10:28:16 UTC 2018


Author: adridg
Date: Sat Sep  8 10:28:11 2018
New Revision: 479245
URL: https://svnweb.freebsd.org/changeset/ports/479245

Log:
  Update x11/sddm to 0.17.
  
  This is still one minor release behind, but a big update relative to
  the previous version. Thanks to tijl@ for the patches, dbn@ for
  initial testing.
  
  PR:		228116
  Submitted by:	tijl

Added:
  head/x11/sddm/files/patch-data_scripts_Xsession   (contents, props changed)
  head/x11/sddm/files/patch-services_sddm-autologin.pam   (contents, props changed)
  head/x11/sddm/files/patch-services_sddm-greeter.pam   (contents, props changed)
  head/x11/sddm/files/patch-services_sddm.pam   (contents, props changed)
  head/x11/sddm/files/patch-src_daemon_DaemonApp.cpp   (contents, props changed)
  head/x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp   (contents, props changed)
  head/x11/sddm/files/patch-src_daemon_SignalHandler.cpp   (contents, props changed)
  head/x11/sddm/files/patch-src_helper_HelperApp.cpp   (contents, props changed)
  head/x11/sddm/files/xinitrc.desktop.in   (contents, props changed)
Deleted:
  head/x11/plasma5-plasma-workspace/files/patch-plasma.desktop.cmake
  head/x11/sddm/files/patch-src_helper_backend_PasswdBackend.cpp
  head/x11/sddm/files/xinitrc.desktop
Modified:
  head/x11/plasma5-plasma-workspace/Makefile
  head/x11/sddm/Makefile
  head/x11/sddm/distinfo
  head/x11/sddm/files/patch-CMakeLists.txt
  head/x11/sddm/files/patch-src_common_Configuration.h
  head/x11/sddm/files/patch-src_daemon_CMakeLists.txt
  head/x11/sddm/files/patch-src_daemon_Display.cpp
  head/x11/sddm/files/patch-src_greeter_UserModel.cpp
  head/x11/sddm/files/patch-src_helper_UserSession.cpp
  head/x11/sddm/files/sddm.in
  head/x11/sddm/pkg-plist

Modified: head/x11/plasma5-plasma-workspace/Makefile
==============================================================================
--- head/x11/plasma5-plasma-workspace/Makefile	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/plasma5-plasma-workspace/Makefile	Sat Sep  8 10:28:11 2018	(r479245)
@@ -2,7 +2,7 @@
 
 PORTNAME=	plasma-workspace
 DISTVERSION=	${KDE_PLASMA_VERSION}
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	x11 kde kde-plasma
 
 MAINTAINER=	kde at FreeBSD.org

Modified: head/x11/sddm/Makefile
==============================================================================
--- head/x11/sddm/Makefile	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/Makefile	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,14 +1,16 @@
 # $FreeBSD$
 
 PORTNAME=	sddm
-PORTVERSION=	0.14.0
+PORTVERSION=	0.17.0
 DISTVERSIONPREFIX=	v
 CATEGORIES=	x11
 
 MAINTAINER=	kde at FreeBSD.org
 COMMENT=	QML based login manager
 
-USES=		cmake:outsource desktop-file-utils kde:5 qt:5
+RUN_DEPENDS=	dbus-run-session:devel/dbus
+
+USES=		cmake:outsource kde:5 qt:5
 USE_KDE=	ecm
 USE_QT=		concurrent core dbus gui linguisttools multimedia network \
 		printsupport qml quick script sql webkit widgets \
@@ -18,12 +20,9 @@ USE_XORG=	xcb
 CMAKE_ARGS=	-DUID_MIN=1000 \
 		-DUID_MAX=65000 \
 		-DCMAKE_INSTALL_SYSCONFDIR:PATH=${LOCALBASE}/etc
-# We need to disable PAM at the moment and use the passwd-based backend;
-# the two backend are mutually exclusive, and we have to investigate how
-# to make it compatible with OpenPAM.
-CMAKE_ARGS+=	-DENABLE_PAM:BOOL=FALSE
 
 USE_RC_SUBR=	sddm
+SUB_FILES=	xinitrc.desktop
 
 USERS=		sddm
 GROUPS=		sddm
@@ -31,16 +30,18 @@ GROUPS=		sddm
 USE_GITHUB=	yes
 
 post-patch:
-# Patch in the correct location for X11 startup files, and make the session start
-# script of sddm use the value of ${STARTUP} defined by 90-consolekit
-	${REINPLACE_CMD} -e 's#/etc/X11#${LOCALBASE}/etc/X11#g' \
-			 -e '/exec.*session/s#exec#exec $${STARTUP}#g' \
-		${PATCH_WRKSRC}/data/scripts/Xsession
+	@${REINPLACE_CMD} -e 's#/etc/X11#${LOCALBASE}/etc/X11#' \
+		-e 's#/usr/bin/#${LOCALBASE}/bin/#g' \
+		-e 's#/usr/share/#${LOCALBASE}/share/#' \
+		${WRKSRC}/data/scripts/Xsession \
+		${WRKSRC}/src/common/Configuration.h
 
 post-install:
+	${MV} ${STAGEDIR}${PREFIX}/etc/sddm.conf \
+		${STAGEDIR}${PREFIX}/etc/sddm.conf.sample
 # Install xsession.desktop to launch .xinitrc via sddm.
 	${MKDIR} ${STAGEDIR}${PREFIX}/share/xsessions
-	${INSTALL_DATA} ${FILESDIR}/xinitrc.desktop ${STAGEDIR}${PREFIX}/share/xsessions
+	${INSTALL_DATA} ${WRKDIR}/xinitrc.desktop ${STAGEDIR}${PREFIX}/share/xsessions
 	${INSTALL_SCRIPT} ${FILESDIR}/xinit-session ${STAGEDIR}${PREFIX}/share/sddm/scripts
 
 .include <bsd.port.mk>

Modified: head/x11/sddm/distinfo
==============================================================================
--- head/x11/sddm/distinfo	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/distinfo	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1488014449
-SHA256 (sddm-sddm-v0.14.0_GH0.tar.gz) = a551551a6ba324e9c384c89bc63e871de65fea3740eadbea2d63df86045f8205
-SIZE (sddm-sddm-v0.14.0_GH0.tar.gz) = 3367582
+TIMESTAMP = 1525019041
+SHA256 (sddm-sddm-v0.17.0_GH0.tar.gz) = c6da2862688d21a091f1568b78a5f5900cd2e02a83dd42c016f0c5867e69a92d
+SIZE (sddm-sddm-v0.17.0_GH0.tar.gz) = 3524362

Modified: head/x11/sddm/files/patch-CMakeLists.txt
==============================================================================
--- head/x11/sddm/files/patch-CMakeLists.txt	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/patch-CMakeLists.txt	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,16 +1,16 @@
 1) On FreeBSD X is normally started on VT9.
 2) The shutdown command uses '-p' and not '-P' on FreeBSD.
 
---- CMakeLists.txt.orig	2016-08-28 11:54:03 UTC
+--- CMakeLists.txt.orig	2017-12-05 16:00:16 UTC
 +++ CMakeLists.txt
-@@ -143,8 +143,8 @@ if(SYSTEMD_FOUND)
-     set(REBOOT_COMMAND "/usr/bin/systemctl reboot")
- else()
-     set(SYSTEMD_FOUND 0)
+@@ -168,8 +168,8 @@ add_feature_info("elogind" ELOGIND_FOUND "elogind supp
+ 
+ # Default behaviour if neither systemd nor elogind is used
+ if (NOT ELOGIND_FOUND AND NOT SYSTEMD_FOUND)
 -    set(MINIMUM_VT 7)
 -    set(HALT_COMMAND "/sbin/shutdown -h -P now")
 +    set(MINIMUM_VT 9)
-+    set(HALT_COMMAND "/sbin/shutdown -h -p now")
++    set(HALT_COMMAND "/sbin/shutdown -p now")
      set(REBOOT_COMMAND "/sbin/shutdown -r now")
  endif()
- add_feature_info("systemd" SYSTEMD_FOUND "systemd support")
+ 

Added: head/x11/sddm/files/patch-data_scripts_Xsession
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-data_scripts_Xsession	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,23 @@
+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	2017-12-05 16:00:16 UTC
++++ data/scripts/Xsession
+@@ -94,8 +94,8 @@ if [ -f "$USERXSESSION" ]; then
+   . "$USERXSESSION"
+ fi
+ 
+-if [ -z "$@" ]; then
++if [ -z "$1" ]; 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

Added: head/x11/sddm/files/patch-services_sddm-autologin.pam
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-services_sddm-autologin.pam	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,23 @@
+--- services/sddm-autologin.pam.orig	2017-12-05 16:00:16 UTC
++++ services/sddm-autologin.pam
+@@ -1,13 +1,9 @@
+ #%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
+--auth       optional    pam_gnome_keyring.so
+--auth       optional    pam_kwallet5.so
+-account     include     system-local-login
+-password    include     system-local-login
+-session     include     system-local-login
+--session    optional    pam_gnome_keyring.so auto_start
+--session    optional    pam_kwallet5.so auto_start
++#auth       optional    pam_gnome_keyring.so
++#auth       optional    pam_kwallet5.so
++account     include     login
++password    required    pam_deny.so
++session     include     login
++#session    optional    pam_gnome_keyring.so auto_start
++#session    optional    pam_kwallet5.so auto_start

Added: head/x11/sddm/files/patch-services_sddm-greeter.pam
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-services_sddm-greeter.pam	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,19 @@
+--- services/sddm-greeter.pam.orig	2017-12-05 16:00:16 UTC
++++ services/sddm-greeter.pam
+@@ -1,8 +1,5 @@
+ #%PAM-1.0
+ 
+-# Load environment from /etc/environment and ~/.pam_environment
+-auth		required pam_env.so
+-
+ # Always let the greeter start without authentication
+ auth		required pam_permit.so
+ 
+@@ -13,6 +10,4 @@ account		required pam_permit.so
+ password	required pam_deny.so
+ 
+ # Setup session
+-session		required pam_unix.so
+--session		optional pam_systemd.so
+--session		optional pam_elogind.so
++session		required pam_permit.so

Added: head/x11/sddm/files/patch-services_sddm.pam
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-services_sddm.pam	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,27 @@
+--- services/sddm.pam.orig	2017-12-05 16:00:16 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
+ 
+-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
+ 
+-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

Modified: head/x11/sddm/files/patch-src_common_Configuration.h
==============================================================================
--- head/x11/sddm/files/patch-src_common_Configuration.h	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/patch-src_common_Configuration.h	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,38 +1,36 @@
-Modify the default configuration to fit in to FreeBSD. That is replace '/usr/bin'
-with '/usr/local/bin' and so on.
-The setting of '$PATH' I find a bit dumb... this should respect the values of the
-users profile...
+Leave InputMethod empty by default since qtvirtualkeyboard does not appear to
+be supported by the included themes.  The keyboard is drawn on top of the
+login screen and has to be clicked away (button lower-right).
 
---- src/common/Configuration.h.orig	2016-08-28 11:54:03 UTC
+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	2017-12-05 16:00:16 UTC
 +++ src/common/Configuration.h
-@@ -58,11 +58,11 @@ namespace SDDM {
- 
-         // TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal
-         Section(X11,
--            Entry(ServerPath,          QString,     _S("/usr/bin/X"),                           _S("Path to X server binary"));
-+            Entry(ServerPath,          QString,     _S("/usr/local/bin/X"),                           _S("Path to X server binary"));
-             Entry(ServerArguments,     QString,     _S("-nolisten tcp"),                        _S("Arguments passed to the X server invocation"));
--            Entry(XephyrPath,          QString,     _S("/usr/bin/Xephyr"),                      _S("Path to Xephyr binary"));
--            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"));
-+            Entry(XephyrPath,          QString,     _S("/usr/local/bin/Xephyr"),                      _S("Path to Xephyr binary"));
-+            Entry(XauthPath,           QString,     _S("/usr/local/bin/xauth"),                       _S("Path to xauth binary"));
-+            Entry(SessionDir,          QString,     _S("/usr/local/share/xsessions"),                 _S("Directory 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(UserAuthFile,        QString,     _S(".Xauthority"),                          _S("Path to the Xauthority file"));
-@@ -72,13 +72,13 @@ namespace SDDM {
+@@ -42,14 +42,14 @@ namespace SDDM {
+         Entry(Numlock,             NumState,    NUM_NONE,                                       _S("Initial NumLock state. Can be on, off or none.\n"
+                                                                                                    "If property is set to none, numlock won't be changed\n"
+                                                                                                    "NOTE: Currently ignored if autologin is enabled."));
+-        Entry(InputMethod,         QString,     QStringLiteral("qtvirtualkeyboard"),                   _S("Input method module"));
++        Entry(InputMethod,         QString,     QString(),                                      _S("Input method module"));
+         //  Name   Entries (but it's a regular class again)
+         Section(Theme,
+             Entry(ThemeDir,            QString,     _S(DATA_INSTALL_DIR "/themes"),             _S("Theme directory path"));
+-            Entry(Current,             QString,     _S(""),                                     _S("Current theme name"));
++            Entry(Current,             QString,     _S("breeze"),                               _S("Current theme name"));
+             Entry(FacesDir,            QString,     _S(DATA_INSTALL_DIR "/faces"),              _S("Global directory for user avatars\n"
+                                                                                                    "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(EnableAvatars,       bool,        true,                                       _S("Enable display of custom user avatars"));
+             Entry(DisableAvatarsThreshold,int,      7,                                          _S("Number of users to use as threshold\n"
+                                                                                                    "above which avatars are disabled\n"
+@@ -80,7 +80,7 @@ namespace SDDM {
          );
  
-         Section(Wayland,
--            Entry(SessionDir,          QString,     _S("/usr/share/wayland-sessions"),          _S("Directory containing available Wayland sessions"));
-+            Entry(SessionDir,          QString,     _S("/usr/local/share/wayland-sessions"),          _S("Directory 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"));
-         );
- 
          Section(Users,
--            Entry(DefaultPath,         QString,     _S("/bin:/usr/bin:/usr/local/bin"),         _S("Default $PATH for logged in users"));
+-            Entry(DefaultPath,         QString,     _S("/usr/local/bin:/usr/bin:/bin"),         _S("Default $PATH for logged in users"));
 +            Entry(DefaultPath,         QString,     _S("/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"),         _S("Default $PATH for logged in users"));
              Entry(MinimumUid,          int,         UID_MIN,                                    _S("Minimum user id for displayed users"));
              Entry(MaximumUid,          int,         UID_MAX,                                    _S("Maximum user id for displayed users"));

Modified: head/x11/sddm/files/patch-src_daemon_CMakeLists.txt
==============================================================================
--- head/x11/sddm/files/patch-src_daemon_CMakeLists.txt	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/patch-src_daemon_CMakeLists.txt	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,19 +1,9 @@
-This patch does two things:
-1) Add the include directories for 'libxcb' to the compiler search directories,
-2) Remove VirtualTerminal.cpp from the sources that need to be built.
-   see also 'patch-src_daemon_Display.cpp'
+Remove VirtualTerminal.cpp from the sources that need to be built.
+See also 'patch-src_daemon_Display.cpp'.
 
---- src/daemon/CMakeLists.txt.orig	2016-08-28 11:54:03 UTC
+--- src/daemon/CMakeLists.txt.orig	2017-12-05 16:00:16 UTC
 +++ src/daemon/CMakeLists.txt
-@@ -3,6 +3,7 @@ include_directories(
-     "${CMAKE_SOURCE_DIR}/src/auth"
- )
- include_directories("${CMAKE_BINARY_DIR}/src/common")
-+include_directories("${LIBXCB_INCLUDE_DIR}")
- 
- set(DAEMON_SOURCES
-     ${CMAKE_SOURCE_DIR}/src/common/Configuration.cpp
-@@ -26,7 +27,6 @@ set(DAEMON_SOURCES
+@@ -29,7 +29,6 @@ set(DAEMON_SOURCES
      SeatManager.cpp
      SignalHandler.cpp
      SocketServer.cpp

Added: head/x11/sddm/files/patch-src_daemon_DaemonApp.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-src_daemon_DaemonApp.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,22 @@
+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);

Modified: head/x11/sddm/files/patch-src_daemon_Display.cpp
==============================================================================
--- head/x11/sddm/files/patch-src_daemon_Display.cpp	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/patch-src_daemon_Display.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -2,7 +2,12 @@ VirtualTerminal for Wayland is only present on Linux a
 As we are only interested in an X11 session at the moment, we therefore
 can hide it behind a Q_OS_LINUX.
 
---- src/daemon/Display.cpp.orig	2016-08-28 11:54:03 UTC
+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	2017-12-05 16:00:16 UTC
 +++ src/daemon/Display.cpp
 @@ -30,7 +30,9 @@
  #include "Greeter.h"
@@ -14,7 +19,7 @@ can hide it behind a Q_OS_LINUX.
  
  #include <QDebug>
  #include <QFile>
-@@ -280,8 +282,10 @@ namespace SDDM {
+@@ -310,8 +312,10 @@ namespace SDDM {
  
          // create new VT for Wayland sessions otherwise use greeter vt
          int vt = terminalId();
@@ -25,7 +30,21 @@ can hide it behind a Q_OS_LINUX.
          m_lastSession.setVt(vt);
  
          QProcessEnvironment env;
-@@ -321,9 +325,11 @@ namespace SDDM {
+@@ -321,11 +325,13 @@ 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());
+         if (seat()->name() == QLatin1String("seat0")) {
+             env.insert(QStringLiteral("XDG_VTNR"), QString::number(vt));
+@@ -366,9 +372,11 @@ namespace SDDM {
                  stateConfig.Last.Session.setDefault();
              stateConfig.save();
  

Added: head/x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,13 @@
+Disable ConsoleKit seat management for now.  It is mistakenly assumed to have
+the same D-Bus interface as logind.
+
+--- src/daemon/LogindDBusTypes.cpp.orig	2017-12-05 16:00:16 UTC
++++ src/daemon/LogindDBusTypes.cpp
+@@ -58,6 +58,7 @@ LogindPathInternal::LogindPathInternal()
+         return;
+     }
+ 
++    if (0)
+     if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"))) {
+         qDebug() << "Console kit interface found";
+         available = true;

Added: head/x11/sddm/files/patch-src_daemon_SignalHandler.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-src_daemon_SignalHandler.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,45 @@
+From 62d776518594f517dc59de3c87e53afdda339079 Mon Sep 17 00:00:00 2001
+From: Romain Labolle <ravomavain at gmail.com>
+Date: Sat, 3 Mar 2018 22:09:30 +0100
+Subject: [PATCH] Add SOCK_CLOEXEC to signal handling sockets
+
+SDDM is currennty leaking 8 sockets file descriptors to the user session.
+Adding the CLOEXEC flag to the fd to avoid thoses leaks.
+---
+ src/daemon/SignalHandler.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/daemon/SignalHandler.cpp b/src/daemon/SignalHandler.cpp
+index 5c536603..3054e635 100644
+--- src/daemon/SignalHandler.cpp.orig	2017-12-05 16:00:16 UTC
++++ src/daemon/SignalHandler.cpp
+@@ -34,25 +34,25 @@ namespace SDDM {
+     int sigusr1Fd[2];
+ 
+     SignalHandler::SignalHandler(QObject *parent) : QObject(parent) {
+-        if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sighupFd))
++        if (::socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, sighupFd))
+             qCritical() << "Failed to create socket pair for SIGHUP handling.";
+ 
+         snhup = new QSocketNotifier(sighupFd[1], QSocketNotifier::Read, this);
+         connect(snhup, SIGNAL(activated(int)), this, SLOT(handleSighup()));
+ 
+-        if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigintFd))
++        if (::socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, sigintFd))
+             qCritical() << "Failed to create socket pair for SIGINT handling.";
+ 
+         snint = new QSocketNotifier(sigintFd[1], QSocketNotifier::Read, this);
+         connect(snint, SIGNAL(activated(int)), this, SLOT(handleSigint()));
+ 
+-        if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigtermFd))
++        if (::socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, sigtermFd))
+             qCritical() << "Failed to create socket pair for SIGTERM handling.";
+ 
+         snterm = new QSocketNotifier(sigtermFd[1], QSocketNotifier::Read, this);
+         connect(snterm, SIGNAL(activated(int)), this, SLOT(handleSigterm()));
+ 
+-        if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigusr1Fd))
++        if (::socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, sigusr1Fd))
+             qCritical() << "Failed to create socket pair for SIGUSR1 handling.";
+ 
+         snusr1 = new QSocketNotifier(sigusr1Fd[1], QSocketNotifier::Read, this);

Modified: head/x11/sddm/files/patch-src_greeter_UserModel.cpp
==============================================================================
--- head/x11/sddm/files/patch-src_greeter_UserModel.cpp	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/patch-src_greeter_UserModel.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,12 +1,12 @@
 Call 'setpwent' to rewind to the beginning of the passwd database.
 
---- src/greeter/UserModel.cpp.orig	2016-07-10 21:26:13 UTC
+--- src/greeter/UserModel.cpp.orig	2017-12-05 16:00:16 UTC
 +++ src/greeter/UserModel.cpp
 @@ -55,6 +55,7 @@ namespace SDDM {
-         const QString defaultFace = QStringLiteral("%1/.face.icon").arg(facesDir);
-
+         const QString defaultFace = QStringLiteral("file://%1/.face.icon").arg(facesDir);
+ 
          struct passwd *current_pw;
 +        setpwent();
          while ((current_pw = getpwent()) != nullptr) {
-
+ 
              // skip entries with uids smaller than minimum uid

Added: head/x11/sddm/files/patch-src_helper_HelperApp.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/patch-src_helper_HelperApp.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,48 @@
+--- src/helper/HelperApp.cpp.orig	2017-12-05 16:00:16 UTC
++++ src/helper/HelperApp.cpp
+@@ -33,8 +33,11 @@
+ #include <iostream>
+ #include <unistd.h>
+ #include <sys/socket.h>
++#include <sys/time.h>
+ 
++#if defined(Q_OS_LINUX)
+ #include <utmp.h>
++#endif
+ #include <utmpx.h>
+ #include <QByteArray>
+ 
+@@ -301,12 +304,20 @@ namespace SDDM {
+ 
+         // append to failed login database btmp
+         if (!authSuccessful) {
++#if defined(Q_OS_FREEBSD)
++            pututxline(&entry);
++#else
+             updwtmpx("/var/log/btmp", &entry);
++#endif
+         }
+ 
+         // append to wtmp
+         else {
++#if defined(Q_OS_FREEBSD)
++            pututxline(&entry);
++#else
+             updwtmpx("/var/log/wtmp", &entry);
++#endif
+         }
+     }
+ 
+@@ -342,8 +353,12 @@ namespace SDDM {
+             qWarning() << "Failed to write utmpx: " << strerror(errno);
+         endutxent();
+ 
++#if defined(Q_OS_FREEBSD)
++        pututxline(&entry);
++#else
+         // append to wtmp
+         updwtmpx("/var/log/wtmp", &entry);
++#endif
+     }
+ }
+ 

Modified: head/x11/sddm/files/patch-src_helper_UserSession.cpp
==============================================================================
--- head/x11/sddm/files/patch-src_helper_UserSession.cpp	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/patch-src_helper_UserSession.cpp	Sat Sep  8 10:28:11 2018	(r479245)
@@ -1,12 +1,24 @@
-Include '<errno.h>' as 'errno' is used.
+Run sddm-greeter via the session command (Xsession script) so it also gets X
+resources and a ConsoleKit and D-Bus session.  The ConsoleKit session has its
+session-class set to "user" instead of "greeter" because ck-launch-session
+doesn't provide a way to change this.  ConsoleKit doesn't do anything with
+this value though so it is believed to be harmless.  The XDG_SESSION_CLASS
+environment variable does have the value "greeter".
 
---- src/helper/UserSession.cpp.orig	2016-07-06 14:00:10 UTC
+Remove double quotes because we fixed the use of "$@" in the script.
+
+--- src/helper/UserSession.cpp.orig	2017-12-05 16:00:16 UTC
 +++ src/helper/UserSession.cpp
-@@ -25,6 +25,7 @@
+@@ -45,10 +45,8 @@ namespace SDDM {
+     bool UserSession::start() {
+         QProcessEnvironment env = qobject_cast<HelperApp*>(parent())->session()->processEnvironment();
  
- #include <sys/types.h>
- #include <sys/ioctl.h>
-+#include <errno.h>
- #include <unistd.h>
- #include <pwd.h>
- #include <grp.h>
+-        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")) {

Modified: head/x11/sddm/files/sddm.in
==============================================================================
--- head/x11/sddm/files/sddm.in	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/files/sddm.in	Sat Sep  8 10:28:11 2018	(r479245)
@@ -19,28 +19,16 @@ load_rc_config ${name}
 : ${sddm_lang="en_US"} # .UTF-8 suffix will be added later to comply with locale format
 : ${sddm_enable="NO"}
 
-command="/usr/local/bin/sddm"
-pidfile="/var/run/sddm.pid"
+command="%%PREFIX%%/bin/sddm"
 start_cmd="sddm_start"
-stop_cmd="sddm_stop"
 
-# Creates /etc/sddm.conf after `sddm --example-config` if it's not there already.
-sddm_genconf()
-{
-	if [ ! -r /etc/sddm.conf ]; then
-		echo "Generating SDDM configuration."
-		${command} --example-config > /etc/sddm.conf
-	fi
-}
-
 sddm_start()
 {
 	echo "Starting ${name}."
 	local iter
-	sddm_genconf
 
 	( iter=0
-	while ! ps -axoargs | grep "^/usr/libexec/getty" | grep -qv grep > /dev/null 2>&1; do
+	while ! pgrep -f "^/usr/libexec/getty " > /dev/null; do
 		if [ ${iter} -eq 60 ]; then
 			break
 		fi
@@ -49,28 +37,19 @@ sddm_start()
 	done
 
 	if checkyesno hald_enable; then
-		if [ ! -x /usr/local/sbin/hald ]; then
+		if [ ! -x %%LOCALBASE%%/sbin/hald ]; then
 			err 1 "Hald does not seem to be installed."
 		fi
 
 		iter=0
 		while [ ${iter} -lt 60 ] &&
-			!pgrep -f "^/usr/local/sbin/hald" > /dev/null 2>&1; do
+			! pgrep -f "^%%LOCALBASE%%/sbin/hald" > /dev/null; do
 			sleep 1
 			iter=$((${iter} + 1))
 		done
 	fi
 
 	LANG=${sddm_lang}.UTF-8 ${command} ${sddm_flags} ) &
-}
-
-# Only takes the user back to the sddm screen when run from X
-sddm_stop()
-{
-	echo "Stopping ${name}."
-	/bin/kill -9 $(/bin/cat "${pidfile}")
-	pkill -9 -U ${name}
-	pkill -9 X
 }
 
 run_rc_command "$1"

Added: head/x11/sddm/files/xinitrc.desktop.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/sddm/files/xinitrc.desktop.in	Sat Sep  8 10:28:11 2018	(r479245)
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=XSession
+Exec=%%PREFIX%%/share/sddm/scripts/xinit-session
+TryExec=%%PREFIX%%/share/sddm/scripts/xinit-session
+Name=User Session

Modified: head/x11/sddm/pkg-plist
==============================================================================
--- head/x11/sddm/pkg-plist	Sat Sep  8 10:04:17 2018	(r479244)
+++ head/x11/sddm/pkg-plist	Sat Sep  8 10:28:11 2018	(r479245)
@@ -4,7 +4,7 @@ etc/dbus-1/system.d/org.freedesktop.DisplayManager.con
 etc/pam.d/sddm
 etc/pam.d/sddm-autologin
 etc/pam.d/sddm-greeter
-etc/sddm.conf
+ at sample etc/sddm.conf.sample
 %%QT_QMLDIR%%/SddmComponents/Background.qml
 %%QT_QMLDIR%%/SddmComponents/Button.qml
 %%QT_QMLDIR%%/SddmComponents/Clock.qml
@@ -132,33 +132,52 @@ libexec/sddm-helper
 %%DATADIR%%/themes/maldives/metadata.desktop
 %%DATADIR%%/themes/maldives/rectangle.png
 %%DATADIR%%/themes/maldives/theme.conf
+%%DATADIR%%/themes/maya/LICENSE
+%%DATADIR%%/themes/maya/Main.qml
+%%DATADIR%%/themes/maya/README
+%%DATADIR%%/themes/maya/components/SpButton.qml
+%%DATADIR%%/themes/maya/components/SpClock.qml
+%%DATADIR%%/themes/maya/fonts/OpenSans_CondLight.ttf
+%%DATADIR%%/themes/maya/images/ic_arrow_drop_down_white_24px.svg
+%%DATADIR%%/themes/maya/images/ic_power_settings_new_white_24px.svg
+%%DATADIR%%/themes/maya/images/ic_refresh_white_24px.svg
+%%DATADIR%%/themes/maya/images/ic_warning_white_24px.svg
+%%DATADIR%%/themes/maya/metadata.desktop
+%%DATADIR%%/themes/maya/screenshots/hi_IN.png
+%%DATADIR%%/themes/maya/theme.conf
 %%DATADIR%%/translations/ar.qm
 %%DATADIR%%/translations/ca.qm
 %%DATADIR%%/translations/cs.qm
+%%DATADIR%%/translations/da.qm
 %%DATADIR%%/translations/de.qm
 %%DATADIR%%/translations/es.qm
 %%DATADIR%%/translations/et.qm
 %%DATADIR%%/translations/fi.qm
 %%DATADIR%%/translations/fr.qm
+%%DATADIR%%/translations/hi_IN.qm
 %%DATADIR%%/translations/hu.qm
 %%DATADIR%%/translations/it.qm
 %%DATADIR%%/translations/ja.qm
+%%DATADIR%%/translations/kk.qm
 %%DATADIR%%/translations/ko.qm
 %%DATADIR%%/translations/lt.qm
 %%DATADIR%%/translations/lv.qm
 %%DATADIR%%/translations/nb.qm
+%%DATADIR%%/translations/nl.qm
 %%DATADIR%%/translations/nn.qm
 %%DATADIR%%/translations/pl.qm
 %%DATADIR%%/translations/pt_BR.qm
 %%DATADIR%%/translations/pt_PT.qm
 %%DATADIR%%/translations/ro.qm
 %%DATADIR%%/translations/ru.qm
+%%DATADIR%%/translations/sk.qm
 %%DATADIR%%/translations/sr.qm
 %%DATADIR%%/translations/sr at ijekavian.qm
 %%DATADIR%%/translations/sr at ijekavianlatin.qm
 %%DATADIR%%/translations/sr at latin.qm
 %%DATADIR%%/translations/sv.qm
 %%DATADIR%%/translations/tr.qm
+%%DATADIR%%/translations/uk.qm
 %%DATADIR%%/translations/zh_CN.qm
 %%DATADIR%%/translations/zh_TW.qm
 share/xsessions/xinitrc.desktop


More information about the svn-ports-head mailing list