debian: traintastic-server now runs a service/daemon
Dieser Commit ist enthalten in:
Ursprung
0f259e77e1
Commit
3c4122c13d
12
.github/workflows/build.yml
vendored
12
.github/workflows/build.yml
vendored
@ -59,7 +59,7 @@ jobs:
|
|||||||
build_type: Release
|
build_type: Release
|
||||||
build_deb: true
|
build_deb: true
|
||||||
defines: ""
|
defines: ""
|
||||||
|
|
||||||
- name: "macos-11"
|
- name: "macos-11"
|
||||||
os: "macos-11"
|
os: "macos-11"
|
||||||
generator: "Unix Makefiles"
|
generator: "Unix Makefiles"
|
||||||
@ -79,7 +79,7 @@ jobs:
|
|||||||
build_type: Release
|
build_type: Release
|
||||||
build_deb: false
|
build_deb: false
|
||||||
defines: ""
|
defines: ""
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: FranzDiebold/github-env-vars-action@v2
|
- uses: FranzDiebold/github-env-vars-action@v2
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ jobs:
|
|||||||
jobs: 4
|
jobs: 4
|
||||||
build_type: Release
|
build_type: Release
|
||||||
build_deb: true
|
build_deb: true
|
||||||
defines: "-DENABLE_CLANG_TIDY=ON"
|
defines: "-DENABLE_CLANG_TIDY=ON -DINSTALL_SYSTEMD_SERVICE=ON"
|
||||||
ccov: false
|
ccov: false
|
||||||
|
|
||||||
- name: "ubuntu_22.04"
|
- name: "ubuntu_22.04"
|
||||||
@ -218,7 +218,7 @@ jobs:
|
|||||||
jobs: 4
|
jobs: 4
|
||||||
build_type: Release
|
build_type: Release
|
||||||
build_deb: true
|
build_deb: true
|
||||||
defines: "-DENABLE_CLANG_TIDY=ON"
|
defines: "-DENABLE_CLANG_TIDY=ON -DINSTALL_SYSTEMD_SERVICE=ON"
|
||||||
ccov: false
|
ccov: false
|
||||||
|
|
||||||
- name: "ubuntu_20.04 (debug+ccov)"
|
- name: "ubuntu_20.04 (debug+ccov)"
|
||||||
@ -242,7 +242,7 @@ jobs:
|
|||||||
jobs: 3
|
jobs: 3
|
||||||
build_type: Release
|
build_type: Release
|
||||||
build_deb: true
|
build_deb: true
|
||||||
defines: ""
|
defines: " -DINSTALL_SYSTEMD_SERVICE=ON"
|
||||||
ccov: false
|
ccov: false
|
||||||
|
|
||||||
- name: "raspberrypios_arm64"
|
- name: "raspberrypios_arm64"
|
||||||
@ -254,7 +254,7 @@ jobs:
|
|||||||
jobs: 3
|
jobs: 3
|
||||||
build_type: Release
|
build_type: Release
|
||||||
build_deb: true
|
build_deb: true
|
||||||
defines: ""
|
defines: "-DINSTALL_SYSTEMD_SERVICE=ON"
|
||||||
ccov: false
|
ccov: false
|
||||||
|
|
||||||
- name: "macos-11"
|
- name: "macos-11"
|
||||||
|
|||||||
@ -395,6 +395,10 @@ install(TARGETS traintastic-server
|
|||||||
RUNTIME DESTINATION "/opt/traintastic/bin/"
|
RUNTIME DESTINATION "/opt/traintastic/bin/"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(INSTALL_SYSTEMD_SERVICE)
|
||||||
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/debian/traintastic-server.service DESTINATION "/lib/systemd/system")
|
||||||
|
endif()
|
||||||
|
|
||||||
### TEST ###
|
### TEST ###
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
@ -430,5 +434,6 @@ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Reinder Feenstra")
|
|||||||
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://traintastic.org")
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://traintastic.org")
|
||||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "traintastic-data (>= ${CPACK_PACKAGE_VERSION})")
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "traintastic-data (>= ${CPACK_PACKAGE_VERSION})")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/debian/postinst")
|
||||||
|
|
||||||
include(CPack)
|
include(CPack)
|
||||||
|
|||||||
53
server/debian/postinst
Ausführbare Datei
53
server/debian/postinst
Ausführbare Datei
@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# create traintastic group if it doesn't exist:
|
||||||
|
if ! getent group traintastic >/dev/null; then
|
||||||
|
addgroup --system traintastic
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create traintastic user if it doesn't exist:
|
||||||
|
if ! getent passwd traintastic >/dev/null; then
|
||||||
|
adduser --system \
|
||||||
|
--ingroup traintastic \
|
||||||
|
--home /var/opt/traintastic \
|
||||||
|
--no-create-home \
|
||||||
|
--gecos "traintastic-server daemon" \
|
||||||
|
traintastic
|
||||||
|
usermod -a -G dialout,plugdev traintastic
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e /var/opt/traintastic ]; then
|
||||||
|
mkdir -p /var/opt/traintastic
|
||||||
|
chown traintastic:traintastic /var/opt/traintastic
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Based on output by dh_installsystemd/13.6ubuntu1 (not auto generated due to CPack being used)
|
||||||
|
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
|
||||||
|
# This will only remove masks created by d-s-h on package removal.
|
||||||
|
deb-systemd-helper unmask 'traintastic-server.service' >/dev/null || true
|
||||||
|
|
||||||
|
# was-enabled defaults to true, so new installations run enable.
|
||||||
|
if deb-systemd-helper --quiet was-enabled 'traintastic-server.service'; then
|
||||||
|
# Enables the unit on first installation, creates new
|
||||||
|
# symlinks on upgrades if the unit file has changed.
|
||||||
|
deb-systemd-helper enable 'traintastic-server.service' >/dev/null || true
|
||||||
|
else
|
||||||
|
# Update the statefile to add new symlinks (if any), which need to be
|
||||||
|
# cleaned up on purge. Also remove old symlinks.
|
||||||
|
deb-systemd-helper update-state 'traintastic-server.service' >/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
|
||||||
|
if [ -d /run/systemd/system ]; then
|
||||||
|
systemctl --system daemon-reload >/dev/null || true
|
||||||
|
if [ -n "$2" ]; then
|
||||||
|
_dh_action=restart
|
||||||
|
else
|
||||||
|
_dh_action=start
|
||||||
|
fi
|
||||||
|
deb-systemd-invoke $_dh_action 'traintastic-server.service' >/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
12
server/debian/traintastic-server.service
Normale Datei
12
server/debian/traintastic-server.service
Normale Datei
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description = Traintastic server daemon
|
||||||
|
After = network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type = forking
|
||||||
|
PIDFile = /run/traintastic-server.pid
|
||||||
|
ExecStart = /opt/traintastic/bin/traintastic-server -d -u traintastic -g traintastic -D /var/opt/traintastic -P
|
||||||
|
Restart = on-abort
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy = multi-user.target
|
||||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren