diff options
author | aneejit1 <aneejit1@gmail.com> | 2020-08-04 00:14:39 +0000 |
---|---|---|
committer | aneejit1 <aneejit1@gmail.com> | 2021-01-17 17:08:00 +0000 |
commit | 5f47d4f48195c6b74fb450ffed6ac15e8ab462d6 (patch) | |
tree | 444ae49e5821813f0e0783bc1355d52ece714bf0 /tdm/ConfigureChecks.cmake | |
parent | d73dbfb4f128ae28ee7c0936ee1c7de4996e4764 (diff) | |
download | tdebase-5f47d4f48195c6b74fb450ffed6ac15e8ab462d6.tar.gz tdebase-5f47d4f48195c6b74fb450ffed6ac15e8ab462d6.zip |
Create a systemd service file for tdm
Signed-off-by: aneejit1 <aneejit1@gmail.com>
Diffstat (limited to 'tdm/ConfigureChecks.cmake')
-rw-r--r-- | tdm/ConfigureChecks.cmake | 78 |
1 files changed, 78 insertions, 0 deletions
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( ) |