add systemd support
This adds basic systemd support, incl. socket activation. If systemd build is disabled, there won't be any sign of it neither during build nor after. If systemd build is enabled (default), but systemd is not available, no systemd stuff is installed, so there is no impact whatsoever.
This commit is contained in:
parent
29a2ed2f17
commit
62cdfc3d16
4 changed files with 34 additions and 0 deletions
|
@ -5,6 +5,7 @@ ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
|
|||
|
||||
OPTION(BUILD_LUA "build Lua plugin" ON)
|
||||
OPTION(BUILD_EXAMPLES "build examples" ON)
|
||||
OPTION(ENABLE_SYSTEMD "systemd support" ON)
|
||||
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
|
||||
SET(UBUS_UNIX_SOCKET "/var/run/ubus.sock")
|
||||
|
@ -38,3 +39,15 @@ INSTALL(TARGETS ubusd
|
|||
)
|
||||
|
||||
INSTALL(FILES ubusmsg.h ubus_common.h libubus.h DESTINATION include)
|
||||
|
||||
# FIXME: this works but certainly can be done better:
|
||||
SET(UBUSD_BINARY "${CMAKE_INSTALL_PREFIX}/sbin/ubusd")
|
||||
|
||||
# do this after the installs so we have the proper paths
|
||||
IF(ENABLE_SYSTEMD)
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(SYSTEMD systemd)
|
||||
IF(SYSTEMD_FOUND)
|
||||
ADD_SUBDIRECTORY(systemd)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
|
7
systemd/CMakeLists.txt
Normal file
7
systemd/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
CONFIGURE_FILE(ubus.socket.in ubus.socket)
|
||||
CONFIGURE_FILE(ubus.service.in ubus.service)
|
||||
|
||||
# Cmakes pkgconfig support is very limited, so for now just hardcode
|
||||
SET(SYSTEMD_SYSUNIT_DIR "${SYSTEMD_PREFIX}/lib/systemd/system")
|
||||
INSTALL(FILES ${CMAKE_BINARY_DIR}/systemd/ubus.socket ${CMAKE_BINARY_DIR}/systemd/ubus.service
|
||||
DESTINATION ${SYSTEMD_SYSUNIT_DIR})
|
6
systemd/ubus.service.in
Normal file
6
systemd/ubus.service.in
Normal file
|
@ -0,0 +1,6 @@
|
|||
[Unit]
|
||||
Description=OpenWrt micro bus
|
||||
Requires=ubus.socket
|
||||
|
||||
[Service]
|
||||
ExecStart=@UBUSD_BINARY@
|
8
systemd/ubus.socket.in
Normal file
8
systemd/ubus.socket.in
Normal file
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=OpenWrt micro bus socket
|
||||
|
||||
[Socket]
|
||||
ListenStream=@UBUS_UNIX_SOCKET@
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
Loading…
Reference in a new issue