Allow controlling whether systemd is used or not

Currently this will switch the build system between using a plain D-BUS
service file, or a user controllable systemd unit that can be actively
stopped/started.

In most cases it is more desirable to use the systemd unit approach,
as plain D-BUS services cannot be controlled and are more difficult
to introspect via the log.

For fallback cases we'll have the plain D-BUS unit, and in future we
can use this to allow untying from systemd specifics.

Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This commit is contained in:
Ikey Doherty
2018-01-16 17:26:45 +00:00
committed by Marc Di Luzio
parent e90bd98d64
commit 7f26122c62
4 changed files with 65 additions and 12 deletions

View File

@@ -44,10 +44,21 @@ dep_threads = dependency('threads')
# On non glibc systems this might be a stub, i.e. for musl
libdl = cc.find_library('dl', required: false)
# Set the dbus path as appropriate.
path_dbus_service_dir = get_option('with-dbus-service-dir')
if path_dbus_service_dir == ''
path_dbus_service_dir = join_paths(path_datadir, 'dbus-1', 'services')
with_systemd = get_option('with-systemd')
if with_systemd == true
# If the path isn't explicitly set, ask systemd for the systemd user unit directory
path_systemd_unit_dir = get_option('with-systemd-user-unit-dir')
if path_systemd_unit_dir == ''
message('Asking pkg-config for systemd\'s directories')
pkgconfig_systemd = dependency('systemd')
path_systemd_unit_dir = pkgconfig_systemd.get_pkgconfig_variable('systemduserunitdir')
endif
else
# Set the dbus path as appropriate.
path_dbus_service_dir = get_option('with-dbus-service-dir')
if path_dbus_service_dir == ''
path_dbus_service_dir = join_paths(path_datadir, 'dbus-1', 'services')
endif
endif
path_polkit_action_dir = join_paths(path_datadir, 'polkit-1', 'actions')
@@ -92,7 +103,20 @@ report = [
' libdir: @0@'.format(path_libdir),
' libexecdir: @0@'.format(path_libexecdir),
' includedir: @0@'.format(path_includedir),
]
if with_systemd == true
report += [
' systemd user unit directory: @0@'.format(path_systemd_unit_dir),
]
else
report += [
' D-BUS service directory: @0@'.format(path_dbus_service_dir),
]
endif
report += [
' PolKit Action Directory: @0@'.format(path_polkit_action_dir),
'',
' Options:',
@@ -100,6 +124,7 @@ report = [
'',
' daemon: @0@'.format(with_daemon),
' examples: @0@'.format(with_examples),
' systemd: @0@'.format(with_systemd),
]
# Output some stuff to validate the build config