summaryrefslogtreecommitdiff
path: root/kde-base/kdm/files
diff options
context:
space:
mode:
Diffstat (limited to 'kde-base/kdm/files')
-rw-r--r--kde-base/kdm/files/kde-workspace-4.10.2-kdm-logind-multiseat.patch331
-rw-r--r--kde-base/kdm/files/kde-workspace-4.10.90-kdm-logind-multiseat.patch405
-rw-r--r--kde-base/kdm/files/kde-workspace-4.8.0-bug796969.patch37
-rw-r--r--kde-base/kdm/files/kdebase-workspace-4.4.92-kdm_plymouth081.patch165
-rw-r--r--kde-base/kdm/files/kdm-4-gentoo-xinitrc.d.patch19
-rw-r--r--kde-base/kdm/files/kdm-logrotate8
-rw-r--r--kde-base/kdm/files/kdm.service9
7 files changed, 0 insertions, 974 deletions
diff --git a/kde-base/kdm/files/kde-workspace-4.10.2-kdm-logind-multiseat.patch b/kde-base/kdm/files/kde-workspace-4.10.2-kdm-logind-multiseat.patch
deleted file mode 100644
index e4b33d5c..00000000
--- a/kde-base/kdm/files/kde-workspace-4.10.2-kdm-logind-multiseat.patch
+++ /dev/null
@@ -1,331 +0,0 @@
---- kde-workspace-4.10.2/CMakeLists.txt.kdm_logind 2013-03-29 09:35:09.542235739 +0100
-+++ kde-workspace-4.10.2/CMakeLists.txt 2013-04-10 15:17:35.941332970 +0200
-@@ -76,6 +76,9 @@ if(Q_WS_X11)
- endif(NOT X11_Xcursor_FOUND)
- endif(Q_WS_X11)
-
-+macro_optional_find_package(Systemd)
-+macro_log_feature(SYSTEMD_FOUND "systemd" "Init and service manager for Linux" "http://www.freedesktop.org/wiki/Software/systemd" FALSE "" "Provides automatic multi-seat, session and power management features")
-+
- macro_optional_find_package(GLIB2)
- macro_log_feature(GLIB2_FOUND "glib2" "Low-level core library for data structure handling, portability wrappers, etc." "http://www.gtk.org" FALSE "2.x" "Needed to build the kxkb keyboard map control program and provide XMMS support in the Now Playing Plasma data engine")
-
---- kde-workspace-4.10.2/cmake/modules/CMakeLists.txt.kdm_logind 2013-03-01 07:32:23.652864293 +0100
-+++ kde-workspace-4.10.2/cmake/modules/CMakeLists.txt 2013-04-10 15:17:35.941332970 +0200
-@@ -9,6 +9,7 @@ set(cmakeFiles FindCkConnector.cmake
- FindOpenGLES.cmake
- FindPAM.cmake
- FindSensors.cmake
-+ FindSystemd.cmake
- PkgConfigGetVar.cmake
- UnixAuth.cmake )
-
---- kde-workspace-4.10.2/cmake/modules/FindSystemd.cmake.kdm_logind 2013-04-10 15:17:35.941332970 +0200
-+++ kde-workspace-4.10.2/cmake/modules/FindSystemd.cmake 2013-04-10 16:20:41.270790058 +0200
-@@ -0,0 +1,39 @@
-+# Finds systemd and its libraries
-+# Not a huge module but sufficient for now
-+# Uses the same semantics as pkg_check_modules, i.e. ${LIB}{_FOUND,_INCLUDE_DIR,_LIBRARIES}
-+# where ${LIB} can be one of the following:
-+# LIBSYSTEMD_JOURNAL, SYSTEMD, LIBSYSTEMD_DAEMON, LIBSYSTEMD_LOGIN, LIBSYSTEMD_ID128
-+#
-+# Copyright: Red Hat, Inc. 2013
-+# Author: Martin Briza <mbriza@redhat.com>
-+#
-+# Distributed under the BSD license. See COPYING-CMAKE-SCRIPTS for details.
-+
-+#defining any of these disables systemd support
-+if (NOT LIBSYSTEMD_JOURNAL_FOUND AND
-+ NOT SYSTEMD_FOUND AND
-+ NOT LIBSYSTEMD_DAEMON_FOUND AND
-+ NOT LIBSYSTEMD_LOGIN_FOUND AND
-+ NOT LIBSYSTEMD_ID128_FOUND)
-+find_package(PkgConfig)
-+if (PKG_CONFIG_FOUND)
-+ pkg_check_modules(LIBSYSTEMD_JOURNAL QUIET "libsystemd-journal")
-+ pkg_check_modules(SYSTEMD QUIET "systemd")
-+ pkg_check_modules(LIBSYSTEMD_DAEMON QUIET "libsystemd-daemon")
-+ pkg_check_modules(LIBSYSTEMD_LOGIN QUIET "libsystemd-login")
-+ pkg_check_modules(LIBSYSTEMD_ID128 QUIET "libsystemd-id128")
-+endif (PKG_CONFIG_FOUND)
-+
-+if (SYSTEMD_FOUND)
-+ message(STATUS "Found systemd")
-+endif(SYSTEMD_FOUND)
-+
-+mark_as_advanced(LIBSYSTEMD_JOURNAL_FOUND SYSTEMD_FOUND LIBSYSTEMD_DAEMON_FOUND LIBSYSTEMD_LOGIN_FOUND LIBSYSTEMD_ID128_FOUND)
-+mark_as_advanced(LIBSYSTEMD_JOURNAL_INCLUDE_DIR SYSTEMD_INCLUDE_DIR LIBSYSTEMD_DAEMON_INCLUDE_DIR LIBSYSTEMD_LOGIN_INCLUDE_DIR LIBSYSTEMD_ID128_INCLUDE_DIR)
-+mark_as_advanced(LIBSYSTEMD_JOURNAL_LIBRARIES SYSTEMD_LIBRARIES LIBSYSTEMD_DAEMON_LIBRARIES LIBSYSTEMD_LOGIN_LIBRARIES LIBSYSTEMD_ID128_LIBRARIES)
-+
-+endif (NOT LIBSYSTEMD_JOURNAL_FOUND AND
-+ NOT SYSTEMD_FOUND AND
-+ NOT LIBSYSTEMD_DAEMON_FOUND AND
-+ NOT LIBSYSTEMD_LOGIN_FOUND AND
-+ NOT LIBSYSTEMD_ID128_FOUND)
---- kde-workspace-4.10.2/kdm/backend/dm.c.kdm_logind 2013-04-10 15:17:35.916333005 +0200
-+++ kde-workspace-4.10.2/kdm/backend/dm.c 2013-04-10 15:17:35.942332969 +0200
-@@ -50,6 +50,23 @@ from the copyright holder.
- # include <sys/vt.h>
- #endif
-
-+#ifdef WITH_SYSTEMD
-+# include <systemd/sd-login.h>
-+# include <systemd/sd-daemon.h>
-+
-+#define SYSTEMD_FAILURE_LIMIT 25
-+
-+ static int systemdMonitorInit(void);
-+ static void systemdMonitorDeinit();
-+ static int systemdStartDisplay(char *);
-+ static void systemdCheckAdded(char **);
-+ static void systemdCheckRemoved(char **);
-+ static void systemdHandleChange();
-+
-+ sd_login_monitor *systemd_monitor = NULL;
-+ int systemd_monitor_fd = -1;
-+#endif
-+
- static void sigHandler(int n);
- static int scanConfigs(int force);
- static void startDisplay(struct display *d);
-@@ -308,7 +325,16 @@ main(int argc, char **argv)
- #ifdef XDMCP
- updateListenSockets();
- #endif
-+
-+#ifdef WITH_SYSTEMD
-+ if (systemdMonitorInit())
-+ systemdHandleChange();
-+#endif
-+
- mainLoop();
-+#ifdef WITH_SYSTEMD
-+ systemdMonitorDeinit();
-+#endif
- closeCtrl(0);
- if (sdRec.how) {
- int pid;
-@@ -1280,6 +1306,14 @@ mainLoop(void)
- }
- continue;
- }
-+ logError("STARTING");
-+#ifdef WITH_SYSTEMD
-+ if (systemd_monitor_fd >= 0 && FD_ISSET(systemd_monitor_fd, &reads)) {
-+ systemdHandleChange();
-+ sd_login_monitor_flush(systemd_monitor);
-+ continue;
-+ }
-+#endif
- #ifdef XDMCP
- if (processListenSockets(&reads))
- continue;
-@@ -1304,6 +1338,151 @@ mainLoop(void)
- }
- }
-
-+#ifdef WITH_SYSTEMD
-+static int
-+systemdMonitorInit(void)
-+{
-+ if (access("/run/systemd/seats/", F_OK) < 0) {
-+ logError("Doesn't use logind, automatic multiseat won't be enabled\n");
-+ return False;
-+ }
-+
-+ int check = sd_login_monitor_new("seat", &systemd_monitor);
-+ if (check < 0) {
-+ logError("Can't get systemd monitor: %d, automatic multiseat won't be enabled\n", check);
-+ return False;
-+ }
-+
-+ systemd_monitor_fd = sd_login_monitor_get_fd(systemd_monitor);
-+ if (systemd_monitor_fd < 0) {
-+ logError("Can't retrieve file descriptor from the systemd monitor: %d, automatic multiseat won't be enabled\n", systemd_monitor_fd);
-+ sd_login_monitor_unref(systemd_monitor);
-+ systemd_monitor_fd = -1;
-+ return False;
-+ }
-+
-+ registerInput(systemd_monitor_fd);
-+ return True;
-+}
-+
-+static void
-+systemdMonitorDeinit(void)
-+{
-+ if (systemd_monitor) {
-+ sd_login_monitor_unref(systemd_monitor);
-+ }
-+ systemd_monitor_fd = -1;
-+}
-+
-+static int
-+systemdStartDisplay(char *seat)
-+{
-+ struct display *link = NULL;
-+ for (link = displays; link; link = link-> next) {
-+ if (link->status == reserve)
-+ break;
-+ }
-+ if (!link) {
-+ logError("There's not enough reserve displays for all your seats/sessions");
-+ return False;
-+ }
-+ if (!strDup((&link->systemd_seat), seat)) {
-+ return False;
-+ }
-+#ifdef HAVE_VTS
-+ link->serverVT = 0;
-+#endif
-+ link->status = notRunning;
-+ link->stillThere = True;
-+ link->authorize = True;
-+ link->displayType = dLocal | dPermanent;
-+ link->reqSrvVT = -1;
-+ link->serverPid = -1;
-+ return True;
-+}
-+
-+static void
-+systemdCheckAdded(char **seat_names)
-+{
-+ char **iter_name;
-+ struct display *link;
-+ for (iter_name = seat_names; *iter_name; iter_name++) {
-+ if (strcmp(*iter_name, "seat0") == 0)
-+ continue; /* ignore the main seat */
-+ int can_graphical = sd_seat_can_graphical(*iter_name);
-+ for (link = displays; link; link = link->next) {
-+ if (!link->systemd_seat)
-+ continue;
-+ /* see if the can_graphical property didn't change */
-+ if (strcmp(*iter_name, link->systemd_seat)) {
-+ if (!can_graphical) {
-+ free(link->systemd_seat);
-+ link->systemd_seat = NULL;
-+ rStopDisplay(link, DS_RESERVE);
-+ }
-+ break;
-+ }
-+ }
-+ /* the display wasn't found */
-+ if (!link) {
-+ if (can_graphical) {
-+ /* if starting the display failed, skip this round until the next change */
-+ if (!systemdStartDisplay(*iter_name))
-+ break;
-+ }
-+ }
-+ }
-+}
-+
-+static void
-+systemdCheckRemoved(char **seat_names)
-+{
-+ char **iter_name;
-+ struct display *link;
-+ for (link = displays; link; link = link->next) {
-+ for (iter_name = seat_names; *iter_name; iter_name++) {
-+ if (strcmp(*iter_name, "seat0") == 0)
-+ continue; /* ignore the main seat */
-+ if (link->systemd_seat && strcmp(*iter_name, link->systemd_seat) == 0)
-+ break;
-+ }
-+ if (!(*iter_name) && link->systemd_seat) { /* was not found, stop this one */
-+ free(link->systemd_seat);
-+ link->systemd_seat = NULL;
-+ rStopDisplay(link, DS_RESERVE);
-+ }
-+ }
-+}
-+
-+static void
-+systemdHandleChange(void)
-+{
-+ static int failures = 0;
-+ char **seat_names;
-+ char **iter_name;
-+ int check;
-+ if ((check = sd_get_seats(&seat_names)) < 0) {
-+ logError("Can't obtain systemd seats, error %d\n", -check);
-+ failures++;
-+ if (failures >= SYSTEMD_FAILURE_LIMIT) {
-+ logError("%u failed calls to sd_get_seats, disabling systemd multi-seat support\n", SYSTEMD_FAILURE_LIMIT);
-+ systemdMonitorDeinit();
-+ }
-+ return;
-+ }
-+
-+ if (!check)
-+ return;
-+
-+ systemdCheckAdded(seat_names);
-+ systemdCheckRemoved(seat_names);
-+
-+ for (iter_name = seat_names; *iter_name; iter_name++)
-+ free(*iter_name);
-+ free(seat_names);
-+}
-+#endif
-+
- static void
- checkDisplayStatus(struct display *d)
- {
---- kde-workspace-4.10.2/kdm/backend/dm.h.kdm_logind 2013-04-10 15:17:35.917333004 +0200
-+++ kde-workspace-4.10.2/kdm/backend/dm.h 2013-04-10 15:17:35.942332969 +0200
-@@ -306,6 +306,9 @@ struct display {
- char *greeterAuthFile; /* file to store authorization for greeter in */
-
- int plymouth_is_running; /* Plymouth's status */
-+#ifdef WITH_SYSTEMD
-+ char *systemd_seat;
-+#endif
- };
-
- #define d_location 1
---- kde-workspace-4.10.2/kdm/backend/CMakeLists.txt.kdm_logind 2013-03-01 07:32:24.152858104 +0100
-+++ kde-workspace-4.10.2/kdm/backend/CMakeLists.txt 2013-04-10 15:17:35.942332969 +0200
-@@ -45,6 +45,10 @@ if (SECURE_RPC)
- rpcauth.c
- )
- endif (SECURE_RPC)
-+if(LIBSYSTEMD_LOGIN_FOUND AND LIBSYSTEMD_DAEMON_FOUND)
-+ add_definitions( -DWITH_SYSTEMD=1 )
-+ set(KDM_SYSTEMD_LIBRARIES ${LIBSYSTEMD_DAEMON_LIBRARIES} ${LIBSYSTEMD_LOGIN_LIBRARIES} )
-+endif(LIBSYSTEMD_LOGIN_FOUND AND LIBSYSTEMD_DAEMON_FOUND)
- macro_add_file_dependencies(dm.h ${confci})
- macro_add_file_dependencies(error.c ${CMAKE_CURRENT_SOURCE_DIR}/printf.c)
- kde4_add_executable(kdm NOGUI ${kdm_SRCS})
-@@ -60,6 +64,7 @@ target_link_libraries( kdm
- ${NSL_LIBRARIES}
- ${RESOLV_LIBRARIES}
- ${SOCKET_LIBRARIES}
-+ ${KDM_SYSTEMD_LIBRARIES}
- )
- if (CKCONNECTOR_FOUND)
- include_directories(${CKCONNECTOR_INCLUDE_DIR} ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
---- kde-workspace-4.10.2/kdm/backend/server.c.kdm_logind 2013-04-10 15:17:35.917333004 +0200
-+++ kde-workspace-4.10.2/kdm/backend/server.c 2013-04-10 15:17:35.942332969 +0200
-@@ -70,6 +70,21 @@ prepareServerArgv(struct display *d, con
- if (!changeUser(d->serverUID, d->authFile))
- exit(47);
-
-+#ifdef WITH_SYSTEMD
-+ if (d->systemd_seat) {
-+ if (!(argv = parseArgs(argv, "-seat")))
-+ exit(47);
-+ if (!(argv = parseArgs(argv, d->systemd_seat)))
-+ exit(47);
-+ }
-+ else {
-+ if (!(argv = parseArgs(argv, "-seat")))
-+ exit(47);
-+ if (!(argv = parseArgs(argv, "seat0")))
-+ exit(47);
-+ }
-+#endif
-+
- return argv;
- }
-
diff --git a/kde-base/kdm/files/kde-workspace-4.10.90-kdm-logind-multiseat.patch b/kde-base/kdm/files/kde-workspace-4.10.90-kdm-logind-multiseat.patch
deleted file mode 100644
index 10ae2560..00000000
--- a/kde-base/kdm/files/kde-workspace-4.10.90-kdm-logind-multiseat.patch
+++ /dev/null
@@ -1,405 +0,0 @@
-diff -up kde-workspace-4.10.90/CMakeLists.txt.kdm_logind kde-workspace-4.10.90/CMakeLists.txt
---- kde-workspace-4.10.90/CMakeLists.txt.kdm_logind 2013-06-27 16:27:30.199895076 -0500
-+++ kde-workspace-4.10.90/CMakeLists.txt 2013-06-27 16:30:25.167008304 -0500
-@@ -128,6 +128,13 @@ if(Q_WS_X11)
- endif()
- endif(Q_WS_X11)
-
-+macro_optional_find_package(Systemd)
-+set_package_properties(Systemd PROPERTIES DESCRIPTION "Init and service manager for Linux"
-+ URL "http://www.freedesktop.org/wiki/Software/systemd"
-+ TYPE OPTIONAL
-+ PURPOSE "Provides automatic multi-seat, session and power management features"
-+ )
-+
- macro_optional_find_package(GLIB2 2.0)
- set_package_properties(GLIB2 PROPERTIES DESCRIPTION "Low-level core library for data structure handling, portability wrappers, etc."
- URL "http://www.gtk.org"
-diff -up kde-workspace-4.10.90/cmake/modules/CMakeLists.txt.kdm_logind kde-workspace-4.10.90/cmake/modules/CMakeLists.txt
---- kde-workspace-4.10.90/cmake/modules/CMakeLists.txt.kdm_logind 2013-06-10 13:51:11.000000000 -0500
-+++ kde-workspace-4.10.90/cmake/modules/CMakeLists.txt 2013-06-27 16:27:30.199895076 -0500
-@@ -8,6 +8,7 @@ set(cmakeFiles FindCkConnector.cmake
- FindOpenGLES.cmake
- FindPAM.cmake
- FindSensors.cmake
-+ FindSystemd.cmake
- PkgConfigGetVar.cmake
- UnixAuth.cmake )
-
-diff -up kde-workspace-4.10.90/cmake/modules/FindSystemd.cmake.kdm_logind kde-workspace-4.10.90/cmake/modules/FindSystemd.cmake
---- kde-workspace-4.10.90/cmake/modules/FindSystemd.cmake.kdm_logind 2013-06-27 16:27:30.200895065 -0500
-+++ kde-workspace-4.10.90/cmake/modules/FindSystemd.cmake 2013-06-27 16:27:30.200895065 -0500
-@@ -0,0 +1,39 @@
-+# Finds systemd and its libraries
-+# Not a huge module but sufficient for now
-+# Uses the same semantics as pkg_check_modules, i.e. ${LIB}{_FOUND,_INCLUDE_DIR,_LIBRARIES}
-+# where ${LIB} can be one of the following:
-+# LIBSYSTEMD_JOURNAL, SYSTEMD, LIBSYSTEMD_DAEMON, LIBSYSTEMD_LOGIN, LIBSYSTEMD_ID128
-+#
-+# Copyright: Red Hat, Inc. 2013
-+# Author: Martin Briza <mbriza@redhat.com>
-+#
-+# Distributed under the BSD license. See COPYING-CMAKE-SCRIPTS for details.
-+
-+#defining any of these disables systemd support
-+if (NOT LIBSYSTEMD_JOURNAL_FOUND AND
-+ NOT SYSTEMD_FOUND AND
-+ NOT LIBSYSTEMD_DAEMON_FOUND AND
-+ NOT LIBSYSTEMD_LOGIN_FOUND AND
-+ NOT LIBSYSTEMD_ID128_FOUND)
-+find_package(PkgConfig)
-+if (PKG_CONFIG_FOUND)
-+ pkg_check_modules(LIBSYSTEMD_JOURNAL QUIET "libsystemd-journal")
-+ pkg_check_modules(SYSTEMD QUIET "systemd")
-+ pkg_check_modules(LIBSYSTEMD_DAEMON QUIET "libsystemd-daemon")
-+ pkg_check_modules(LIBSYSTEMD_LOGIN QUIET "libsystemd-login")
-+ pkg_check_modules(LIBSYSTEMD_ID128 QUIET "libsystemd-id128")
-+endif (PKG_CONFIG_FOUND)
-+
-+if (SYSTEMD_FOUND)
-+ message(STATUS "Found systemd")
-+endif(SYSTEMD_FOUND)
-+
-+mark_as_advanced(LIBSYSTEMD_JOURNAL_FOUND SYSTEMD_FOUND LIBSYSTEMD_DAEMON_FOUND LIBSYSTEMD_LOGIN_FOUND LIBSYSTEMD_ID128_FOUND)
-+mark_as_advanced(LIBSYSTEMD_JOURNAL_INCLUDE_DIR SYSTEMD_INCLUDE_DIR LIBSYSTEMD_DAEMON_INCLUDE_DIR LIBSYSTEMD_LOGIN_INCLUDE_DIR LIBSYSTEMD_ID128_INCLUDE_DIR)
-+mark_as_advanced(LIBSYSTEMD_JOURNAL_LIBRARIES SYSTEMD_LIBRARIES LIBSYSTEMD_DAEMON_LIBRARIES LIBSYSTEMD_LOGIN_LIBRARIES LIBSYSTEMD_ID128_LIBRARIES)
-+
-+endif (NOT LIBSYSTEMD_JOURNAL_FOUND AND
-+ NOT SYSTEMD_FOUND AND
-+ NOT LIBSYSTEMD_DAEMON_FOUND AND
-+ NOT LIBSYSTEMD_LOGIN_FOUND AND
-+ NOT LIBSYSTEMD_ID128_FOUND)
-diff -up kde-workspace-4.10.90/kdm/backend/CMakeLists.txt.kdm_logind kde-workspace-4.10.90/kdm/backend/CMakeLists.txt
---- kde-workspace-4.10.90/kdm/backend/CMakeLists.txt.kdm_logind 2013-05-28 13:38:21.000000000 -0500
-+++ kde-workspace-4.10.90/kdm/backend/CMakeLists.txt 2013-06-27 16:27:30.201895054 -0500
-@@ -45,6 +45,10 @@ if (SECURE_RPC)
- rpcauth.c
- )
- endif (SECURE_RPC)
-+if(LIBSYSTEMD_LOGIN_FOUND AND LIBSYSTEMD_DAEMON_FOUND)
-+ add_definitions( -DWITH_SYSTEMD=1 )
-+ set(KDM_SYSTEMD_LIBRARIES ${LIBSYSTEMD_DAEMON_LIBRARIES} ${LIBSYSTEMD_LOGIN_LIBRARIES} )
-+endif(LIBSYSTEMD_LOGIN_FOUND AND LIBSYSTEMD_DAEMON_FOUND)
- macro_add_file_dependencies(dm.h ${confci})
- macro_add_file_dependencies(error.c ${CMAKE_CURRENT_SOURCE_DIR}/printf.c)
- kde4_add_executable(kdm NOGUI ${kdm_SRCS})
-@@ -60,6 +64,7 @@ target_link_libraries( kdm
- ${NSL_LIBRARIES}
- ${RESOLV_LIBRARIES}
- ${SOCKET_LIBRARIES}
-+ ${KDM_SYSTEMD_LIBRARIES}
- )
- if (CKCONNECTOR_FOUND)
- include_directories(${CKCONNECTOR_INCLUDE_DIR} ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
-diff -up kde-workspace-4.10.90/kdm/backend/dm.c.kdm_logind kde-workspace-4.10.90/kdm/backend/dm.c
---- kde-workspace-4.10.90/kdm/backend/dm.c.kdm_logind 2013-06-27 16:27:30.184895241 -0500
-+++ kde-workspace-4.10.90/kdm/backend/dm.c 2013-06-27 16:27:30.201895054 -0500
-@@ -50,6 +50,23 @@ from the copyright holder.
- # include <sys/vt.h>
- #endif
-
-+#ifdef WITH_SYSTEMD
-+# include <systemd/sd-login.h>
-+# include <systemd/sd-daemon.h>
-+
-+#define SYSTEMD_FAILURE_LIMIT 25
-+
-+ static int systemdMonitorInit(void);
-+ static void systemdMonitorDeinit();
-+ static int systemdStartDisplay(char *);
-+ static void systemdCheckAdded(char **);
-+ static void systemdCheckRemoved(char **);
-+ static void systemdHandleChange();
-+
-+ sd_login_monitor *systemd_monitor = NULL;
-+ int systemd_monitor_fd = -1;
-+#endif
-+
- static void sigHandler(int n);
- static int scanConfigs(int force);
- static void startDisplay(struct display *d);
-@@ -308,7 +325,16 @@ main(int argc, char **argv)
- #ifdef XDMCP
- updateListenSockets();
- #endif
-+
-+#ifdef WITH_SYSTEMD
-+ if (systemdMonitorInit())
-+ systemdHandleChange();
-+#endif
-+
- mainLoop();
-+#ifdef WITH_SYSTEMD
-+ systemdMonitorDeinit();
-+#endif
- closeCtrl(0);
- if (sdRec.how) {
- int pid;
-@@ -1280,6 +1306,14 @@ mainLoop(void)
- }
- continue;
- }
-+ logError("STARTING");
-+#ifdef WITH_SYSTEMD
-+ if (systemd_monitor_fd >= 0 && FD_ISSET(systemd_monitor_fd, &reads)) {
-+ systemdHandleChange();
-+ sd_login_monitor_flush(systemd_monitor);
-+ continue;
-+ }
-+#endif
- #ifdef XDMCP
- if (processListenSockets(&reads))
- continue;
-@@ -1304,6 +1338,151 @@ mainLoop(void)
- }
- }
-
-+#ifdef WITH_SYSTEMD
-+static int
-+systemdMonitorInit(void)
-+{
-+ if (access("/run/systemd/seats/", F_OK) < 0) {
-+ logError("Didn't boot with systemd, automatic multiseat won't be enabled\n");
-+ return False;
-+ }
-+
-+ int check = sd_login_monitor_new("seat", &systemd_monitor);
-+ if (check < 0) {
-+ logError("Can't get systemd monitor: %d, automatic multiseat won't be enabled\n", check);
-+ return False;
-+ }
-+
-+ systemd_monitor_fd = sd_login_monitor_get_fd(systemd_monitor);
-+ if (systemd_monitor_fd < 0) {
-+ logError("Can't retrieve file descriptor from the systemd monitor: %d, automatic multiseat won't be enabled\n", systemd_monitor_fd);
-+ sd_login_monitor_unref(systemd_monitor);
-+ systemd_monitor_fd = -1;
-+ return False;
-+ }
-+
-+ registerInput(systemd_monitor_fd);
-+ return True;
-+}
-+
-+static void
-+systemdMonitorDeinit(void)
-+{
-+ if (systemd_monitor) {
-+ sd_login_monitor_unref(systemd_monitor);
-+ }
-+ systemd_monitor_fd = -1;
-+}
-+
-+static int
-+systemdStartDisplay(char *seat)
-+{
-+ struct display *link = NULL;
-+ for (link = displays; link; link = link-> next) {
-+ if (link->status == reserve)
-+ break;
-+ }
-+ if (!link) {
-+ logError("There's not enough reserve displays for all your seats/sessions");
-+ return False;
-+ }
-+ if (!strDup((&link->systemd_seat), seat)) {
-+ return False;
-+ }
-+#ifdef HAVE_VTS
-+ link->serverVT = 0;
-+#endif
-+ link->status = notRunning;
-+ link->stillThere = True;
-+ link->authorize = True;
-+ link->displayType = dLocal | dPermanent;
-+ link->reqSrvVT = -1;
-+ link->serverPid = -1;
-+ return True;
-+}
-+
-+static void
-+systemdCheckAdded(char **seat_names)
-+{
-+ char **iter_name;
-+ struct display *link;
-+ for (iter_name = seat_names; *iter_name; iter_name++) {
-+ if (strcmp(*iter_name, "seat0") == 0)
-+ continue; /* ignore the main seat */
-+ int can_graphical = sd_seat_can_graphical(*iter_name);
-+ for (link = displays; link; link = link->next) {
-+ if (!link->systemd_seat)
-+ continue;
-+ /* see if the can_graphical property didn't change */
-+ if (strcmp(*iter_name, link->systemd_seat) == 0) {
-+ if (!can_graphical) {
-+ free(link->systemd_seat);
-+ link->systemd_seat = NULL;
-+ rStopDisplay(link, DS_RESERVE);
-+ }
-+ break;
-+ }
-+ }
-+ /* the display wasn't found */
-+ if (!link) {
-+ if (can_graphical) {
-+ /* if starting the display failed, skip this round until the next change */
-+ if (!systemdStartDisplay(*iter_name))
-+ break;
-+ }
-+ }
-+ }
-+}
-+
-+static void
-+systemdCheckRemoved(char **seat_names)
-+{
-+ char **iter_name;
-+ struct display *link;
-+ for (link = displays; link; link = link->next) {
-+ for (iter_name = seat_names; *iter_name; iter_name++) {
-+ if (strcmp(*iter_name, "seat0") == 0)
-+ continue; /* ignore the main seat */
-+ if (link->systemd_seat && strcmp(*iter_name, link->systemd_seat) == 0)
-+ break;
-+ }
-+ if (!(*iter_name) && link->systemd_seat) { /* was not found, stop this one */
-+ free(link->systemd_seat);
-+ link->systemd_seat = NULL;
-+ rStopDisplay(link, DS_RESERVE);
-+ }
-+ }
-+}
-+
-+static void
-+systemdHandleChange(void)
-+{
-+ static int failures = 0;
-+ char **seat_names;
-+ char **iter_name;
-+ int check;
-+ if ((check = sd_get_seats(&seat_names)) < 0) {
-+ logError("Can't obtain systemd seats, error %d\n", -check);
-+ failures++;
-+ if (failures >= SYSTEMD_FAILURE_LIMIT) {
-+ logError("%u failed calls to sd_get_seats, disabling systemd multi-seat support\n", SYSTEMD_FAILURE_LIMIT);
-+ systemdMonitorDeinit();
-+ }
-+ return;
-+ }
-+
-+ if (!check)
-+ return;
-+
-+ systemdCheckAdded(seat_names);
-+ systemdCheckRemoved(seat_names);
-+
-+ for (iter_name = seat_names; *iter_name; iter_name++)
-+ free(*iter_name);
-+ free(seat_names);
-+}
-+#endif
-+
- static void
- checkDisplayStatus(struct display *d)
- {
-diff -up kde-workspace-4.10.90/kdm/backend/dm.h.kdm_logind kde-workspace-4.10.90/kdm/backend/dm.h
---- kde-workspace-4.10.90/kdm/backend/dm.h.kdm_logind 2013-06-27 16:27:30.184895241 -0500
-+++ kde-workspace-4.10.90/kdm/backend/dm.h 2013-06-27 16:27:30.201895054 -0500
-@@ -306,6 +306,9 @@ struct display {
- char *greeterAuthFile; /* file to store authorization for greeter in */
-
- int plymouth_is_running; /* Plymouth's status */
-+#ifdef WITH_SYSTEMD
-+ char *systemd_seat;
-+#endif
- };
-
- #define d_location 1
-diff -up kde-workspace-4.10.90/kdm/backend/server.c.kdm_logind kde-workspace-4.10.90/kdm/backend/server.c
---- kde-workspace-4.10.90/kdm/backend/server.c.kdm_logind 2013-06-27 16:27:30.184895241 -0500
-+++ kde-workspace-4.10.90/kdm/backend/server.c 2013-06-27 16:27:30.201895054 -0500
-@@ -43,6 +43,7 @@ from the copyright holder.
- #include <stdio.h>
- #include <signal.h>
-
-+#define SYSTEMD_X_WRAPPER "/lib/systemd/systemd-multi-seat-x"
-
- struct display *startingServer;
- time_t serverTimeout = TO_INF;
-@@ -55,9 +56,18 @@ prepareServerArgv(struct display *d, con
- char vtstr[8];
- #endif
-
-- if (!(argv = parseArgs(0, d->serverCmd)) ||
-- !(argv = addStrArr(argv, d->name, -1)))
-+#if WITH_SYSTEMD
-+ FILE *tmpFile = NULL;
-+ if ((tmpFile = fopen(SYSTEMD_X_WRAPPER, "rb")) != NULL && fclose(tmpFile) == 0) {
-+ if (!(argv = parseArgs(0, SYSTEMD_X_WRAPPER)) || !(argv = addStrArr(argv, d->name, -1))) {
-+ exit(47);
-+ }
-+ }
-+ else
-+#endif
-+ if (!(argv = parseArgs(0, d->serverCmd)) || !(argv = addStrArr(argv, d->name, -1))) {
- exit(47);
-+ }
- #ifdef HAVE_VTS
- if (d->serverVT &&
- !(argv = addStrArr(argv, vtstr,
-@@ -70,6 +80,25 @@ prepareServerArgv(struct display *d, con
- if (!changeUser(d->serverUID, d->authFile))
- exit(47);
-
-+#ifdef WITH_SYSTEMD
-+ if (d->systemd_seat) {
-+ if (!(argv = parseArgs(argv, "-seat")))
-+ exit(47);
-+ if (!(argv = parseArgs(argv, d->systemd_seat)))
-+ exit(47);
-+ if (!(argv = parseArgs(argv, "-layout")))
-+ exit(47);
-+ if (!(argv = parseArgs(argv, d->systemd_seat)))
-+ exit(47);
-+ }
-+ else {
-+ if (!(argv = parseArgs(argv, "-seat")))
-+ exit(47);
-+ if (!(argv = parseArgs(argv, "seat0")))
-+ exit(47);
-+ }
-+#endif
-+
- return argv;
- }
-
---- kde-workspace-4.10.2/kdm/backend/client.c.kdm_logind
-+++ kde-workspace-4.10.2/kdm/backend/client.c
-@@ -1461,6 +1461,14 @@ startClient(volatile int *pid)
- #endif
- userEnviron = inheritEnv(env, envvars);
- env = systemEnv(0, curuser);
-+#ifdef WITH_SYSTEMD
-+ if (td->systemd_seat) {
-+ char *envbuf;
-+ ASPrintf(&envbuf, "XDG_SEAT=%s", td->systemd_seat);
-+ pam_putenv(pamh, envbuf);
-+ env = setEnv(env, "XDG_SEAT", td->systemd_seat);
-+ }
-+#endif
- systemEnviron = setEnv(env, "HOME", p->pw_dir);
- debug("user environment:\n%[|''>'\n's"
- "system environment:\n%[|''>'\n's"
---- kde-workspace-4.10.2/kdm/backend/session.c.kdm_logind
-+++ kde-workspace-4.10.2/kdm/backend/session.c
-@@ -437,6 +437,10 @@ openGreeter()
-
- grttalk.pipe = &grtproc.pipe;
- env = systemEnv(dupEnv(), 0);
-+#ifdef WITH_SYSTEMD
-+ if (td->systemd_seat)
-+ env = setEnv(env, "XDG_SEAT", td->systemd_seat);
-+#endif
- if (gOpen(&grtproc, (char **)0, "_greet", env, name,
- greeterUID, td->greeterAuthFile, &td->gpipe))
- sessionExit(EX_UNMANAGE_DPY);
diff --git a/kde-base/kdm/files/kde-workspace-4.8.0-bug796969.patch b/kde-base/kdm/files/kde-workspace-4.8.0-bug796969.patch
deleted file mode 100644
index 16e29388..00000000
--- a/kde-base/kdm/files/kde-workspace-4.8.0-bug796969.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-per https://bugzilla.redhat.com/show_bug.cgi?id=796969#c23
-The process that executes kdm/backend/session.c:manageSession() is the leader
-process of the logind session.
-
-manageSession() calls:
-
- blockTerm();
- clientExited();
- unblockTerm();
-
-where clientExited() ends the PAM session.
-With the current systemd-logind, ending the PAM session will cause the leader
-process to be delivered SIGHUP and SIGTERM. The process will die and the
-remainder of manageSession() will not be executed.
-
-Interestingly, at the end of the function there's a call to sessionExit(),
-which calls clientExited() again.
-
-Removing the three lines quoted above makes reboot from KDE work again. I
-haven't noticed any bad effects.
-
-diff -up kde-workspace-4.8.0/kdm/backend/session.c.bz796969 kde-workspace-4.8.0/kdm/backend/session.c
---- kde-workspace-4.8.0/kdm/backend/session.c.bz796969 2012-01-18 14:08:40.000000000 -0600
-+++ kde-workspace-4.8.0/kdm/backend/session.c 2012-02-28 07:17:16.270219932 -0600
-@@ -662,9 +662,9 @@ manageSession(void)
- sessionExit(EX_AL_RESERVER_DPY);
- }
-
-- blockTerm();
-- clientExited();
-- unblockTerm();
-+ /* blockTerm(); */
-+ /* clientExited(); */
-+ /* unblockTerm(); */
-
- gSet(&mstrtalk);
- gSendInt(D_UnUser);
diff --git a/kde-base/kdm/files/kdebase-workspace-4.4.92-kdm_plymouth081.patch b/kde-base/kdm/files/kdebase-workspace-4.4.92-kdm_plymouth081.patch
deleted file mode 100644
index 2c49ccd4..00000000
--- a/kde-base/kdm/files/kdebase-workspace-4.4.92-kdm_plymouth081.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-diff -up kdebase-workspace-4.4.92/kdm/backend/dm.c.kdm_plymouth kdebase-workspace-4.4.92/kdm/backend/dm.c
---- kdebase-workspace-4.4.92/kdm/backend/dm.c.kdm_plymouth 2010-07-06 01:54:30.000000000 -0500
-+++ kdebase-workspace-4.4.92/kdm/backend/dm.c 2010-07-07 13:55:48.425171749 -0500
-@@ -1329,6 +1329,81 @@ getBusyVTs(void)
- return activeVTs;
- }
-
-+static int
-+get_active_vt (void)
-+{
-+ int console_fd;
-+ struct vt_stat console_state = { 0 };
-+ console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY);
-+ if (console_fd < 0) {
-+ goto out;
-+ }
-+ if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) {
-+ goto out;
-+ }
-+out:
-+ if (console_fd >= 0) {
-+ close (console_fd);
-+ }
-+ return console_state.v_active;
-+}
-+
-+static int
-+plymouth_is_running (void)
-+{
-+ int status;
-+ status = system ("/bin/plymouth --ping");
-+
-+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
-+}
-+
-+static int
-+plymouth_has_active_vt (void)
-+{
-+ int status;
-+ status = system ("/bin/plymouth --has-active-vt");
-+
-+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
-+}
-+
-+static int
-+plymouth_prepare_for_transition (void)
-+{
-+ int status;
-+ status = system ("/bin/plymouth deactivate");
-+
-+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
-+}
-+
-+int
-+plymouth_quit_with_transition (void)
-+{
-+ int status;
-+ status = system ("/bin/plymouth quit --retain-splash");
-+
-+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
-+}
-+
-+static int
-+plymouth_quit_without_transition (void)
-+{
-+ int status;
-+ status = system ("/bin/plymouth quit");
-+
-+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
-+}
-+
-+static int
-+triggered_to_force_display_on_active_vt (void)
-+{
-+ int should_force_display_on_active_vt;
-+ should_force_display_on_active_vt=open("/var/spool/gdm/force-display-on-active-vt", O_RDONLY);
-+ if ( should_force_display_on_active_vt >= 0 )
-+ close(should_force_display_on_active_vt);
-+ unlink("/var/spool/gdm/force-display-on-active-vt");
-+ return should_force_display_on_active_vt;
-+}
-+
- static void
- allocateVT(struct display *d)
- {
-@@ -1338,6 +1413,43 @@ allocateVT(struct display *d)
- if ((d->displayType & d_location) == dLocal &&
- d->status == notRunning && !d->serverVT && d->reqSrvVT >= 0)
- {
-+ /* check for plymouth using newer methods */
-+ d->plymouth_is_running = plymouth_is_running ();
-+ if (d->plymouth_is_running) {
-+ /* call plymouth deactivate */
-+ plymouth_prepare_for_transition ();
-+ if (plymouth_has_active_vt ()) {
-+ /* plymouth was displaying a splash screen and has
-+ * terminated leaving it on screen
-+ */
-+ int vt;
-+ vt = get_active_vt ();
-+ if (vt > 0) {
-+ /* start the X server on the active vt */
-+ d->serverVT = vt;
-+ return;
-+ }
-+ }
-+ else {
-+ /* plymouth might have been running but did not display
-+ * a splash screen.
-+ */
-+
-+ /* call plymouth quit and start the X server as usual */
-+ d->plymouth_is_running = !plymouth_quit_without_transition ();
-+ }
-+
-+ /* fallback to old/deprecated method */
-+ } else if ( triggered_to_force_display_on_active_vt() >= 0 ) {
-+ int vt;
-+ vt = get_active_vt();
-+ if (vt > 0) {
-+ d->serverVT = vt;
-+ return;
-+ }
-+ }
-+
-+
- if (d->reqSrvVT && d->reqSrvVT < 16) {
- d->serverVT = d->reqSrvVT;
- } else {
-diff -up kdebase-workspace-4.4.92/kdm/backend/dm.h.kdm_plymouth kdebase-workspace-4.4.92/kdm/backend/dm.h
---- kdebase-workspace-4.4.92/kdm/backend/dm.h.kdm_plymouth 2010-07-06 01:54:30.000000000 -0500
-+++ kdebase-workspace-4.4.92/kdm/backend/dm.h 2010-07-07 13:48:11.874921158 -0500
-@@ -292,6 +292,8 @@ struct display {
- int authNum; /* number of authorizations */
- char *authFile; /* file to store authorization in */
- char *greeterAuthFile; /* file to store authorization for greeter in */
-+
-+ int plymouth_is_running; /* Plymouth's status */
- };
-
- #define d_location 1
-@@ -404,6 +406,8 @@ int anyDisplaysLeft(void);
- void forEachDisplay(void (*f)(struct display *));
- #ifdef HAVE_VTS
- void forEachDisplayRev(void (*f)(struct display *));
-+/* function for plymouth */
-+int plymouth_quit_with_transition (void);
- #endif
- void removeDisplay(struct display *old);
- struct display
-diff -up kdebase-workspace-4.4.92/kdm/backend/server.c.kdm_plymouth kdebase-workspace-4.4.92/kdm/backend/server.c
---- kdebase-workspace-4.4.92/kdm/backend/server.c.kdm_plymouth 2010-07-06 01:54:30.000000000 -0500
-+++ kdebase-workspace-4.4.92/kdm/backend/server.c 2010-07-07 13:56:46.960921366 -0500
-@@ -137,6 +137,11 @@ startServerSuccess()
- struct display *d = startingServer;
- d->serverStatus = ignore;
- serverTimeout = TO_INF;
-+ if (d->plymouth_is_running) {
-+ debug( "Quitting Plymouth with transition\n" );
-+ d->plymouth_is_running = !plymouth_quit_with_transition ();
-+ debug ("Is Plymouth still running? %s\n", d->plymouth_is_running ? "yes" : "no");
-+ }
- debug("X server ready, starting session\n");
- startDisplayP2(d);
- }
diff --git a/kde-base/kdm/files/kdm-4-gentoo-xinitrc.d.patch b/kde-base/kdm/files/kdm-4-gentoo-xinitrc.d.patch
deleted file mode 100644
index 538363af..00000000
--- a/kde-base/kdm/files/kdm-4-gentoo-xinitrc.d.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -Nurp kdm-4.3.1.orig/kdm/kfrontend/genkdmconf.c kdm-4.3.1/kdm/kfrontend/genkdmconf.c
---- kdm-4.3.1.orig/kdm/kfrontend/genkdmconf.c 2009-09-20 07:57:19.746730568 +0200
-+++ kdm-4.3.1/kdm/kfrontend/genkdmconf.c 2009-09-20 08:01:17.767496412 +0200
-@@ -687,6 +687,15 @@ static const char def_session2[] =
- "[ -f /etc/xprofile ] && . /etc/xprofile\n"
- "[ -f $HOME/.xprofile ] && . $HOME/.xprofile\n"
- "\n"
-+"# run all system xinitrc shell scripts.\n"
-+"if [ -d /etc/X11/xinit/xinitrc.d ]; then\n"
-+" for i in /etc/X11/xinit/xinitrc.d/* ; do\n"
-+" if [ -x \"$i\" ]; then\n"
-+" . \"$i\"\n"
-+" fi\n"
-+" done\n"
-+"fi\n"
-+"\n"
- "case $session in\n"
- " \"\")\n"
- " exec xmessage -center -buttons OK:0 -default OK \"Sorry, $DESKTOP_SESSION is no valid session.\"\n"
diff --git a/kde-base/kdm/files/kdm-logrotate b/kde-base/kdm/files/kdm-logrotate
deleted file mode 100644
index 4bce1a03..00000000
--- a/kde-base/kdm/files/kdm-logrotate
+++ /dev/null
@@ -1,8 +0,0 @@
-/var/log/kdm.log {
- maxage 365
- size=+1024k
- notifempty
- missingok
- compress
- copytruncate
-}
diff --git a/kde-base/kdm/files/kdm.service b/kde-base/kdm/files/kdm.service
deleted file mode 100644
index e9132882..00000000
--- a/kde-base/kdm/files/kdm.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=KDM Display Manager
-After=systemd-user-sessions.service
-
-[Service]
-ExecStart=/usr/bin/kdm -nodaemon
-
-[Install]
-Alias=display-manager.service