diff --git a/CMakeLists.txt b/CMakeLists.txt index dcbf023..2abda0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ message(STATUS "Project description: ${PROJECT_DESCRIPTION}") # Settings # ---------------------------------------------------------------------------------------------------------------------- set(INSTALL_AS_ROOT ON CACHE BOOL "Install as root") +set(USE_SYSTEMD ON CACHE BOOL "Use systemd") set(WITH_POSTGRESQL OFF CACHE BOOL "Build with PostgreSQL") set(WITH_SSL ON CACHE BOOL "Build with SSL") set(WITH_SQLITE3 OFF CACHE BOOL "Build with Sqlite3") @@ -303,6 +304,11 @@ install(FILES conf/bitcoin.conf DESTINATION ${INSTALL_PATH}/conf) install(FILES conf/default.conf DESTINATION ${INSTALL_PATH} RENAME ${PROJECT_NAME}.conf) if (INSTALL_AS_ROOT) - install(FILES auto/daemon DESTINATION /etc/init.d RENAME ${PROJECT_NAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - install(CODE "execute_process(COMMAND update-rc.d ${PROJECT_NAME} defaults)") + if (USE_SYSTEMD) + install(FILES auto/unit.service DESTINATION /etc/systemd/system RENAME ${PROJECT_NAME}.service PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) + install(CODE "execute_process(COMMAND systemctl enable ${PROJECT_NAME}.service)") + else() + install(FILES auto/daemon DESTINATION /etc/init.d RENAME ${PROJECT_NAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(CODE "execute_process(COMMAND update-rc.d ${PROJECT_NAME} defaults)") + endif() endif() diff --git a/auto/unit.service b/auto/unit.service new file mode 100644 index 0000000..72285d8 --- /dev/null +++ b/auto/unit.service @@ -0,0 +1,21 @@ +[Unit] +Description=Deal Module +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=forking +PIDFile=/run/dm.pid +# dm will fail to start if /run/dm.pid already exists but has the wrong +# SELinux context. This might happen when running `dm -t` from the cmdline. +# https://bugzilla.redhat.com/show_bug.cgi?id=1268621 +ExecStartPre=/usr/bin/rm -f /run/dm.pid +ExecStartPre=/usr/sbin/dm -t +ExecStart=/usr/sbin/dm +ExecReload=/bin/kill -s HUP $MAINPID +KillSignal=SIGQUIT +TimeoutStopSec=5 +KillMode=mixed +PrivateTmp=true + +[Install] +WantedBy=multi-user.target