summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--tdm/CMakeLists.txt6
-rw-r--r--tdm/ConfigureChecks.cmake78
-rw-r--r--tdm/tdm.service.cmake13
-rw-r--r--tdm/tdm.service.debian.cmake12
-rw-r--r--tdm/tdm.service.fedora-18.cmake13
-rw-r--r--tdm/tdm.service.fedora-19.cmake13
-rw-r--r--tdm/tdm.service.fedora.cmake13
-rw-r--r--tdm/tdm.service.rhel.cmake13
-rw-r--r--tdm/tdm.service.ubuntu.cmake12
10 files changed, 174 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 51dfa2cfe..30f5f2a60 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -165,6 +165,7 @@ option( BUILD_KDIALOG "Build kdialog" ${BUILD_ALL} )
option( BUILD_KREADCONFIG "Build kreadconfig" ${BUILD_ALL} )
option( BUILD_TDESU "Build tdesu" ${BUILD_ALL} )
option( BUILD_TDM "Build tdm" ${BUILD_ALL} )
+option( BUILD_TDM_SYSTEMD_UNIT_FILE "Build tdm service file for systemd" OFF )
option( BUILD_KSMSERVER "Build ksmserver" ${BUILD_ALL} )
option( BUILD_KSPLASHML "Build ksplashml" ${BUILD_ALL} )
option( BUILD_STARTTDE "Build starttde" ${BUILD_ALL} )
diff --git a/tdm/CMakeLists.txt b/tdm/CMakeLists.txt
index ce8a1f4ed..4d37df766 100644
--- a/tdm/CMakeLists.txt
+++ b/tdm/CMakeLists.txt
@@ -22,3 +22,9 @@ include( ConfigureChecks.cmake )
add_subdirectory( backend )
add_subdirectory( kfrontend )
add_subdirectory( cryptocardwatcher )
+
+# systemd
+if( BUILD_TDM_SYSTEMD_UNIT_FILE AND NOT "${SYSTEMDSYSTEMUNITDIR}" STREQUAL "" )
+ configure_file( "${TDM_SERVICE_FILE_TEMPLATE}" tdm.service @ONLY )
+ install( FILES "${CMAKE_CURRENT_BINARY_DIR}/tdm.service" DESTINATION ${SYSTEMDSYSTEMUNITDIR} )
+endif( )
diff --git a/tdm/ConfigureChecks.cmake b/tdm/ConfigureChecks.cmake
index cb5615243..335a37f63 100644
--- a/tdm/ConfigureChecks.cmake
+++ b/tdm/ConfigureChecks.cmake
@@ -128,3 +128,81 @@ elseif( WITH_SHADOW )
set( USESHADOW 1 CACHE INTERNAL "" FORCE )
endif( )
+
+
+# If a tdm.service file is wanted, find systemd, then work out which
+# distribution is running, select an appropriate template and create the file.
+# When it is not possible to identify the distribution or there is no specific
+# template is available, use the default of 'tde.service.cmake'. The template
+# can also be set from the command line.
+
+if( BUILD_TDM_SYSTEMD_UNIT_FILE )
+
+ if( NOT SYSTEMDSYSTEMUNITDIR )
+ pkg_search_module( SYSTEMD systemd )
+ if( SYSTEMD_FOUND )
+ execute_process(
+ COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd
+ OUTPUT_VARIABLE SYSTEMDSYSTEMUNITDIR
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif( )
+ endif( )
+
+ if( "${SYSTEMDSYSTEMUNITDIR}" STREQUAL "" )
+ set( SYSTEMDSYSTEMUNITDIR "/usr/lib/systemd/system" )
+ endif( )
+
+ if( NOT TDM_SERVICE_FILE_TEMPLATE )
+
+ find_program( LSB_RELEASE lsb_release HINTS ENV PATH )
+ unset( _DIST_ID_LIST )
+
+ if( EXISTS "/etc/os-release" )
+
+ file( READ "/etc/os-release" _OS_RELEASE )
+
+ if( "\n${_OS_RELEASE}" MATCHES "\nID=\"*([^\"\n]*)" )
+ set( _DISTRIBUTION "${CMAKE_MATCH_1}" )
+ endif( )
+ if( "\n${_OS_RELEASE}" MATCHES "\nVERSION_ID=\"*([^\\.\"\n]*)" )
+ set( _DIST_VERSION "${CMAKE_MATCH_1}" )
+ endif( )
+ if( "\n${_OS_RELEASE}" MATCHES "\nID_LIKE=\"*([^\\.\"\n]*)" )
+ string( REGEX REPLACE " " ";" _DIST_ID_LIST "${CMAKE_MATCH_1}" )
+ endif( )
+
+ if( _DISTRIBUTION )
+ message( STATUS "Running ${_DISTRIBUTION} distribution, version ${_DIST_VERSION}" )
+ string( TOLOWER "${_DISTRIBUTION}" _DISTRIBUTION )
+ list( INSERT _DIST_ID_LIST 0 "${_DISTRIBUTION}" )
+ endif( )
+
+ foreach( _DIST_ID IN LISTS _DIST_ID_LIST )
+ if( NOT TDM_SERVICE_FILE_TEMPLATE )
+ if( _DIST_VERSION AND
+ EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tdm.service.${_DIST_ID}-${_DIST_VERSION}.cmake" )
+ set( TDM_SERVICE_FILE_TEMPLATE "tdm.service.${_DIST_ID}-${_DIST_VERSION}.cmake" )
+ elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tdm.service.${_DIST_ID}.cmake" )
+ set( TDM_SERVICE_FILE_TEMPLATE "tdm.service.${_DIST_ID}.cmake" )
+ endif( )
+ endif( )
+ endforeach( )
+
+ else( )
+
+ message(STATUS "**WARNING** /etc/os-release was not found. The default template for tdm.service will be used.")
+
+ endif( )
+
+ if( NOT TDM_SERVICE_FILE_TEMPLATE )
+ set( TDM_SERVICE_FILE_TEMPLATE "tdm.service.cmake" )
+ endif( )
+
+ message( STATUS "tdm.service template file is ${TDM_SERVICE_FILE_TEMPLATE}" )
+
+ configure_file( "${TDM_SERVICE_FILE_TEMPLATE}" tdm.service @ONLY )
+
+ endif( )
+
+endif( )
diff --git a/tdm/tdm.service.cmake b/tdm/tdm.service.cmake
new file mode 100644
index 000000000..0918e9316
--- /dev/null
+++ b/tdm/tdm.service.cmake
@@ -0,0 +1,13 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
[email protected] plymouth-quit.service
+After=systemd-user-sessions.service [email protected] plymouth-quit.service
+
+[Service]
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always
+IgnoreSIGPIPE=no
+
+[Install]
+Alias=display-manager.service
diff --git a/tdm/tdm.service.debian.cmake b/tdm/tdm.service.debian.cmake
new file mode 100644
index 000000000..9222898c4
--- /dev/null
+++ b/tdm/tdm.service.debian.cmake
@@ -0,0 +1,12 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
[email protected] plymouth-quit.service
+After=systemd-user-sessions.service [email protected] plymouth-quit.service
+
+[Service]
+# temporary safety check until all DMs are converted to correct
+# display-manager.service symlink handling
+ExecStartPre=/bin/sh -c '[ "$(basename $(cat /etc/X11/default-display-manager 2>/dev/null))" = "tdm" ]'
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always
diff --git a/tdm/tdm.service.fedora-18.cmake b/tdm/tdm.service.fedora-18.cmake
new file mode 100644
index 000000000..47fb4756b
--- /dev/null
+++ b/tdm/tdm.service.fedora-18.cmake
@@ -0,0 +1,13 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
[email protected] plymouth-quit.service
+After=systemd-user-sessions.service [email protected] plymouth-quit.service livesys-late.service
+
+[Service]
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always
+IgnoreSIGPIPE=no
+
+[Install]
+Alias=display-manager.service
diff --git a/tdm/tdm.service.fedora-19.cmake b/tdm/tdm.service.fedora-19.cmake
new file mode 100644
index 000000000..f6de77607
--- /dev/null
+++ b/tdm/tdm.service.fedora-19.cmake
@@ -0,0 +1,13 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
[email protected] plymouth-quit.service
+After=systemd-user-sessions.service [email protected] plymouth-quit.service
+
+[Service]
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always
+IgnoreSIGPIPE=no
+
+[Install]
+Alias=display-manager.service
diff --git a/tdm/tdm.service.fedora.cmake b/tdm/tdm.service.fedora.cmake
new file mode 100644
index 000000000..23dc1b32b
--- /dev/null
+++ b/tdm/tdm.service.fedora.cmake
@@ -0,0 +1,13 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
+After=systemd-user-sessions.service [email protected] plymouth-quit.service
+
+[Service]
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always
+IgnoreSIGPIPE=no
+
+[Install]
+Alias=display-manager.service
diff --git a/tdm/tdm.service.rhel.cmake b/tdm/tdm.service.rhel.cmake
new file mode 100644
index 000000000..23dc1b32b
--- /dev/null
+++ b/tdm/tdm.service.rhel.cmake
@@ -0,0 +1,13 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
+After=systemd-user-sessions.service [email protected] plymouth-quit.service
+
+[Service]
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always
+IgnoreSIGPIPE=no
+
+[Install]
+Alias=display-manager.service
diff --git a/tdm/tdm.service.ubuntu.cmake b/tdm/tdm.service.ubuntu.cmake
new file mode 100644
index 000000000..9222898c4
--- /dev/null
+++ b/tdm/tdm.service.ubuntu.cmake
@@ -0,0 +1,12 @@
+[Unit]
+Description=Trinity Display Manager
+Documentation=man:tdm-trinity(1)
[email protected] plymouth-quit.service
+After=systemd-user-sessions.service [email protected] plymouth-quit.service
+
+[Service]
+# temporary safety check until all DMs are converted to correct
+# display-manager.service symlink handling
+ExecStartPre=/bin/sh -c '[ "$(basename $(cat /etc/X11/default-display-manager 2>/dev/null))" = "tdm" ]'
+ExecStart=@BIN_INSTALL_DIR@/tdm
+Restart=always