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
This commit is contained in:
parent
8070376c60
commit
2d4534668d
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=479245
23 changed files with 353 additions and 172 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
PORTNAME= plasma-workspace
|
||||
DISTVERSION= ${KDE_PLASMA_VERSION}
|
||||
PORTREVISION= 3
|
||||
PORTREVISION= 4
|
||||
CATEGORIES= x11 kde kde-plasma
|
||||
|
||||
MAINTAINER= kde@FreeBSD.org
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
--- plasma.desktop.cmake.orig 2018-05-05 17:27:16 UTC
|
||||
+++ plasma.desktop.cmake
|
||||
@@ -1,6 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Type=XSession
|
||||
-Exec=${CMAKE_INSTALL_FULL_BINDIR}/startkde
|
||||
+Exec=ck-launch-session ${CMAKE_INSTALL_FULL_BINDIR}/startkde
|
||||
TryExec=${CMAKE_INSTALL_FULL_BINDIR}/startkde
|
||||
DesktopNames=KDE
|
||||
Name=Plasma
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
23
x11/sddm/files/patch-data_scripts_Xsession
Normal file
23
x11/sddm/files/patch-data_scripts_Xsession
Normal file
|
@ -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
|
23
x11/sddm/files/patch-services_sddm-autologin.pam
Normal file
23
x11/sddm/files/patch-services_sddm-autologin.pam
Normal file
|
@ -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
|
19
x11/sddm/files/patch-services_sddm-greeter.pam
Normal file
19
x11/sddm/files/patch-services_sddm-greeter.pam
Normal file
|
@ -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
|
27
x11/sddm/files/patch-services_sddm.pam
Normal file
27
x11/sddm/files/patch-services_sddm.pam
Normal file
|
@ -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
|
|
@ -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"));
|
||||
|
|
|
@ -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
|
||||
|
|
22
x11/sddm/files/patch-src_daemon_DaemonApp.cpp
Normal file
22
x11/sddm/files/patch-src_daemon_DaemonApp.cpp
Normal file
|
@ -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);
|
|
@ -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();
|
||||
|
||||
|
|
13
x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp
Normal file
13
x11/sddm/files/patch-src_daemon_LogindDBusTypes.cpp
Normal file
|
@ -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;
|
45
x11/sddm/files/patch-src_daemon_SignalHandler.cpp
Normal file
45
x11/sddm/files/patch-src_daemon_SignalHandler.cpp
Normal file
|
@ -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);
|
|
@ -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
|
||||
|
|
48
x11/sddm/files/patch-src_helper_HelperApp.cpp
Normal file
48
x11/sddm/files/patch-src_helper_HelperApp.cpp
Normal file
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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")) {
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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"
|
||||
|
|
|
@ -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
|
6
x11/sddm/files/xinitrc.desktop.in
Normal file
6
x11/sddm/files/xinitrc.desktop.in
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue