aboutsummaryrefslogtreecommitdiff
path: root/x11/sddm
diff options
context:
space:
mode:
authorAdriaan de Groot <adridg@FreeBSD.org>2018-09-08 10:28:11 +0000
committerAdriaan de Groot <adridg@FreeBSD.org>2018-09-08 10:28:11 +0000
commit2d4534668dae110d714b91d79e95b25f967cb65e (patch)
treeeea93dcfa114b277a88d7e83922f5625d71a6dd2 /x11/sddm
parent8070376c60b1f5f5595afe7db703a7085161ca10 (diff)
downloadports-2d4534668dae110d714b91d79e95b25f967cb65e.tar.gz
ports-2d4534668dae110d714b91d79e95b25f967cb65e.zip
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
Notes
Notes: svn path=/head/; revision=479245
Diffstat (limited to 'x11/sddm')
-rw-r--r--x11/sddm/Makefile25
-rw-r--r--x11/sddm/distinfo6
-rw-r--r--x11/sddm/files/patch-CMakeLists.txt14
-rw-r--r--x11/sddm/files/patch-data_scripts_Xsession23
-rw-r--r--x11/sddm/files/patch-services_sddm-autologin.pam23
-rw-r--r--x11/sddm/files/patch-services_sddm-greeter.pam19
-rw-r--r--x11/sddm/files/patch-services_sddm.pam27
-rw-r--r--x11/sddm/files/patch-src_common_Configuration.h58
-rw-r--r--x11/sddm/files/patch-src_daemon_CMakeLists.txt18
-rw-r--r--x11/sddm/files/patch-src_daemon_DaemonApp.cpp22
-rw-r--r--x11/sddm/files/patch-src_daemon_Display.cpp25
-rw-r--r--x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp13
-rw-r--r--x11/sddm/files/patch-src_daemon_SignalHandler.cpp45
-rw-r--r--x11/sddm/files/patch-src_greeter_UserModel.cpp8
-rw-r--r--x11/sddm/files/patch-src_helper_HelperApp.cpp48
-rw-r--r--x11/sddm/files/patch-src_helper_UserSession.cpp30
-rw-r--r--x11/sddm/files/patch-src_helper_backend_PasswdBackend.cpp46
-rw-r--r--x11/sddm/files/sddm.in29
-rw-r--r--x11/sddm/files/xinitrc.desktop7
-rw-r--r--x11/sddm/files/xinitrc.desktop.in6
-rw-r--r--x11/sddm/pkg-plist21
21 files changed, 352 insertions, 161 deletions
diff --git a/x11/sddm/Makefile b/x11/sddm/Makefile
index bff1b21d31f6..4afbef341268 100644
--- a/x11/sddm/Makefile
+++ b/x11/sddm/Makefile
@@ -1,14 +1,16 @@
# $FreeBSD$
PORTNAME= sddm
-PORTVERSION= 0.14.0
+PORTVERSION= 0.17.0
DISTVERSIONPREFIX= v
CATEGORIES= x11
MAINTAINER= kde@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>
diff --git a/x11/sddm/distinfo b/x11/sddm/distinfo
index ac69c1466563..ada4e075a116 100644
--- a/x11/sddm/distinfo
+++ b/x11/sddm/distinfo
@@ -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
diff --git a/x11/sddm/files/patch-CMakeLists.txt b/x11/sddm/files/patch-CMakeLists.txt
index 2a7e3aa57836..a4a034c7405d 100644
--- a/x11/sddm/files/patch-CMakeLists.txt
+++ b/x11/sddm/files/patch-CMakeLists.txt
@@ -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")
+
diff --git a/x11/sddm/files/patch-data_scripts_Xsession b/x11/sddm/files/patch-data_scripts_Xsession
new file mode 100644
index 000000000000..1bf7e32f6683
--- /dev/null
+++ b/x11/sddm/files/patch-data_scripts_Xsession
@@ -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
diff --git a/x11/sddm/files/patch-services_sddm-autologin.pam b/x11/sddm/files/patch-services_sddm-autologin.pam
new file mode 100644
index 000000000000..b021e4c67dd8
--- /dev/null
+++ b/x11/sddm/files/patch-services_sddm-autologin.pam
@@ -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
diff --git a/x11/sddm/files/patch-services_sddm-greeter.pam b/x11/sddm/files/patch-services_sddm-greeter.pam
new file mode 100644
index 000000000000..1c9cea7bc2a3
--- /dev/null
+++ b/x11/sddm/files/patch-services_sddm-greeter.pam
@@ -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
diff --git a/x11/sddm/files/patch-services_sddm.pam b/x11/sddm/files/patch-services_sddm.pam
new file mode 100644
index 000000000000..5b77e395a39f
--- /dev/null
+++ b/x11/sddm/files/patch-services_sddm.pam
@@ -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
diff --git a/x11/sddm/files/patch-src_common_Configuration.h b/x11/sddm/files/patch-src_common_Configuration.h
index b166b904512c..ee0ed81ca738 100644
--- a/x11/sddm/files/patch-src_common_Configuration.h
+++ b/x11/sddm/files/patch-src_common_Configuration.h
@@ -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 {
- );
-
- 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"));
+@@ -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(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"));
diff --git a/x11/sddm/files/patch-src_daemon_CMakeLists.txt b/x11/sddm/files/patch-src_daemon_CMakeLists.txt
index 6e4e688fe83c..b5f405b5e067 100644
--- a/x11/sddm/files/patch-src_daemon_CMakeLists.txt
+++ b/x11/sddm/files/patch-src_daemon_CMakeLists.txt
@@ -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
diff --git a/x11/sddm/files/patch-src_daemon_DaemonApp.cpp b/x11/sddm/files/patch-src_daemon_DaemonApp.cpp
new file mode 100644
index 000000000000..78c7f42763fd
--- /dev/null
+++ b/x11/sddm/files/patch-src_daemon_DaemonApp.cpp
@@ -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);
diff --git a/x11/sddm/files/patch-src_daemon_Display.cpp b/x11/sddm/files/patch-src_daemon_Display.cpp
index 548b57f5d031..a86909d8e4c8 100644
--- a/x11/sddm/files/patch-src_daemon_Display.cpp
+++ b/x11/sddm/files/patch-src_daemon_Display.cpp
@@ -2,7 +2,12 @@ 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.
---- 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();
diff --git a/x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp b/x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp
new file mode 100644
index 000000000000..4ced436b364e
--- /dev/null
+++ b/x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp
@@ -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;
diff --git a/x11/sddm/files/patch-src_daemon_SignalHandler.cpp b/x11/sddm/files/patch-src_daemon_SignalHandler.cpp
new file mode 100644
index 000000000000..663e08c15b81
--- /dev/null
+++ b/x11/sddm/files/patch-src_daemon_SignalHandler.cpp
@@ -0,0 +1,45 @@
+From 62d776518594f517dc59de3c87e53afdda339079 Mon Sep 17 00:00:00 2001
+From: Romain Labolle <ravomavain@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);
diff --git a/x11/sddm/files/patch-src_greeter_UserModel.cpp b/x11/sddm/files/patch-src_greeter_UserModel.cpp
index 421c946818f5..6ad28e9f28c8 100644
--- a/x11/sddm/files/patch-src_greeter_UserModel.cpp
+++ b/x11/sddm/files/patch-src_greeter_UserModel.cpp
@@ -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
diff --git a/x11/sddm/files/patch-src_helper_HelperApp.cpp b/x11/sddm/files/patch-src_helper_HelperApp.cpp
new file mode 100644
index 000000000000..525e727bebb4
--- /dev/null
+++ b/x11/sddm/files/patch-src_helper_HelperApp.cpp
@@ -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
+ }
+ }
+
diff --git a/x11/sddm/files/patch-src_helper_UserSession.cpp b/x11/sddm/files/patch-src_helper_UserSession.cpp
index b89fbd121a76..a3c7e82fa0d2 100644
--- a/x11/sddm/files/patch-src_helper_UserSession.cpp
+++ b/x11/sddm/files/patch-src_helper_UserSession.cpp
@@ -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")) {
diff --git a/x11/sddm/files/patch-src_helper_backend_PasswdBackend.cpp b/x11/sddm/files/patch-src_helper_backend_PasswdBackend.cpp
deleted file mode 100644
index f356b30c74ba..000000000000
--- a/x11/sddm/files/patch-src_helper_backend_PasswdBackend.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-Implement password authentication on FreeBSD.
-This needs review :)
-
---- src/helper/backend/PasswdBackend.cpp.orig 2016-07-06 14:00:10 UTC
-+++ src/helper/backend/PasswdBackend.cpp
-@@ -27,8 +27,13 @@
-
- #include <sys/types.h>
- #include <pwd.h>
-+#if defined(Q_OS_LINUX)
- #include <shadow.h>
- #include <crypt.h>
-+#endif
-+#if defined(Q_OS_FREEBSD)
-+#include <unistd.h>
-+#endif
-
- namespace SDDM {
- PasswdBackend::PasswdBackend(HelperApp *parent)
-@@ -72,6 +77,17 @@ namespace SDDM {
- return false;
- }
-
-+#if defined(Q_OS_FREEBSD)
-+ if (!*pw->pw_passwd)
-+ {
-+ //empty password
-+ return true;
-+ }
-+ char *crypted = crypt(qPrintable(password), pw->pw_passwd);
-+ if (0 == strcmp(crypted, pw->pw_passwd)) {
-+ return true;
-+ }
-+#else
- struct spwd *spw = getspnam(pw->pw_name);
- if (!spw) {
- qWarning() << "[Passwd] Could get passwd but not shadow";
-@@ -85,7 +101,7 @@ namespace SDDM {
- if (0 == strcmp(crypted, spw->sp_pwdp)) {
- return true;
- }
--
-+#endif
- m_app->error(QStringLiteral("Wrong user/password combination"), Auth::ERROR_AUTHENTICATION);
- return false;
- }
diff --git a/x11/sddm/files/sddm.in b/x11/sddm/files/sddm.in
index df9133005595..cd7d278492e3 100644
--- a/x11/sddm/files/sddm.in
+++ b/x11/sddm/files/sddm.in
@@ -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,13 +37,13 @@ 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
@@ -64,13 +52,4 @@ sddm_start()
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"
diff --git a/x11/sddm/files/xinitrc.desktop b/x11/sddm/files/xinitrc.desktop
deleted file mode 100644
index 72c266b4260f..000000000000
--- a/x11/sddm/files/xinitrc.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Type=XSession
-Exec=/usr/local/share/sddm/scripts/xinit-session
-TryExec=/usr/local/share/sddm/scripts/xinit-session
-DesktopNames=User Session
-Name=User Session
diff --git a/x11/sddm/files/xinitrc.desktop.in b/x11/sddm/files/xinitrc.desktop.in
new file mode 100644
index 000000000000..72a05c1045c0
--- /dev/null
+++ b/x11/sddm/files/xinitrc.desktop.in
@@ -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
diff --git a/x11/sddm/pkg-plist b/x11/sddm/pkg-plist
index f9c9ac03a60f..5e38017dec94 100644
--- a/x11/sddm/pkg-plist
+++ b/x11/sddm/pkg-plist
@@ -4,7 +4,7 @@ etc/dbus-1/system.d/org.freedesktop.DisplayManager.conf
etc/pam.d/sddm
etc/pam.d/sddm-autologin
etc/pam.d/sddm-greeter
-etc/sddm.conf
+@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@ijekavian.qm
%%DATADIR%%/translations/sr@ijekavianlatin.qm
%%DATADIR%%/translations/sr@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