mirror of
https://github.com/FeralInteractive/gamemode.git
synced 2025-06-06 07:37:21 +02:00
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:
parent
e90bd98d64
commit
7f26122c62
10
data/gamemoded.service.in
Normal file
10
data/gamemoded.service.in
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=gamemoded
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=dbus
|
||||||
|
BusName=com.feralinteractive.GameMode
|
||||||
|
ExecStart=@BINDIR@/gamemoded -l
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
@ -2,15 +2,25 @@ data_conf = configuration_data()
|
|||||||
data_conf.set('BINDIR', path_bindir)
|
data_conf.set('BINDIR', path_bindir)
|
||||||
data_conf.set('LIBEXECDIR', path_libexecdir)
|
data_conf.set('LIBEXECDIR', path_libexecdir)
|
||||||
|
|
||||||
# Install the D-BUS service file
|
if with_systemd == true
|
||||||
configure_file(
|
# Install systemd user unit
|
||||||
input: 'com.feralinteractive.GameMode.service.in',
|
configure_file(
|
||||||
output: 'com.feralinteractive.GameMode.service',
|
input: 'gamemoded.service.in',
|
||||||
configuration: data_conf,
|
output: 'gamemoded.service',
|
||||||
install_dir: path_dbus_service_dir,
|
configuration: data_conf,
|
||||||
)
|
install_dir: path_systemd_unit_dir,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
# Install the D-BUS service file
|
||||||
|
configure_file(
|
||||||
|
input: 'com.feralinteractive.GameMode.service.in',
|
||||||
|
output: 'com.feralinteractive.GameMode.service',
|
||||||
|
configuration: data_conf,
|
||||||
|
install_dir: path_dbus_service_dir,
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
# Install the Polkit action file
|
# Install the Polkit action file in all cases
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'com.feralinteractive.GameMode.policy.in',
|
input: 'com.feralinteractive.GameMode.policy.in',
|
||||||
output: 'com.feralinteractive.GameMode.policy',
|
output: 'com.feralinteractive.GameMode.policy',
|
||||||
|
33
meson.build
33
meson.build
@ -44,10 +44,21 @@ dep_threads = dependency('threads')
|
|||||||
# On non glibc systems this might be a stub, i.e. for musl
|
# On non glibc systems this might be a stub, i.e. for musl
|
||||||
libdl = cc.find_library('dl', required: false)
|
libdl = cc.find_library('dl', required: false)
|
||||||
|
|
||||||
# Set the dbus path as appropriate.
|
with_systemd = get_option('with-systemd')
|
||||||
path_dbus_service_dir = get_option('with-dbus-service-dir')
|
if with_systemd == true
|
||||||
if path_dbus_service_dir == ''
|
# If the path isn't explicitly set, ask systemd for the systemd user unit directory
|
||||||
path_dbus_service_dir = join_paths(path_datadir, 'dbus-1', 'services')
|
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
|
endif
|
||||||
|
|
||||||
path_polkit_action_dir = join_paths(path_datadir, 'polkit-1', 'actions')
|
path_polkit_action_dir = join_paths(path_datadir, 'polkit-1', 'actions')
|
||||||
@ -92,7 +103,20 @@ report = [
|
|||||||
' libdir: @0@'.format(path_libdir),
|
' libdir: @0@'.format(path_libdir),
|
||||||
' libexecdir: @0@'.format(path_libexecdir),
|
' libexecdir: @0@'.format(path_libexecdir),
|
||||||
' includedir: @0@'.format(path_includedir),
|
' 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),
|
' D-BUS service directory: @0@'.format(path_dbus_service_dir),
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
report += [
|
||||||
|
|
||||||
' PolKit Action Directory: @0@'.format(path_polkit_action_dir),
|
' PolKit Action Directory: @0@'.format(path_polkit_action_dir),
|
||||||
'',
|
'',
|
||||||
' Options:',
|
' Options:',
|
||||||
@ -100,6 +124,7 @@ report = [
|
|||||||
'',
|
'',
|
||||||
' daemon: @0@'.format(with_daemon),
|
' daemon: @0@'.format(with_daemon),
|
||||||
' examples: @0@'.format(with_examples),
|
' examples: @0@'.format(with_examples),
|
||||||
|
' systemd: @0@'.format(with_systemd),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Output some stuff to validate the build config
|
# Output some stuff to validate the build config
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
option('with-systemd', type: 'boolean', description: 'Use systemd support (unit, etc)', value: 'true')
|
||||||
|
|
||||||
|
# systemd specific
|
||||||
|
option('with-systemd-user-unit-dir', type: 'string', description: 'Explicitly set the systemd user unit directory')
|
||||||
|
|
||||||
|
# Not using systemd
|
||||||
option('with-dbus-service-dir', type: 'string', description: 'Explicitly set the D-BUS session directory')
|
option('with-dbus-service-dir', type: 'string', description: 'Explicitly set the D-BUS session directory')
|
||||||
|
|
||||||
|
# General options
|
||||||
option('with-examples', type: 'boolean', description: 'Build sample programs', value: 'true')
|
option('with-examples', type: 'boolean', description: 'Build sample programs', value: 'true')
|
||||||
option('with-daemon', type: 'boolean', description: 'Build the daemon', value: 'true')
|
option('with-daemon', type: 'boolean', description: 'Build the daemon', value: 'true')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user