From 5ff368087e819cd051d96de15a2c1dc48e1daf04 Mon Sep 17 00:00:00 2001 From: Nathaniel Russell Date: Sun, 8 Jun 2025 14:47:56 +0000 Subject: [PATCH 1/3] Edit meson.build --- data/meson.build | 118 ++++++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 62 deletions(-) diff --git a/data/meson.build b/data/meson.build index 764c57d3..2985f786 100644 --- a/data/meson.build +++ b/data/meson.build @@ -62,49 +62,63 @@ endif # Next, let's install the necessary systemd scaffolding -install_data( - 'gnome.session.conf', - install_dir: systemd_userunitdir / 'gnome-session@gnome.target.d', -) - -systemd_service = [ - 'gnome-session-manager@.service', - 'gnome-session-signal-init.service', - 'gnome-session-restart-dbus.service', - 'gnome-session-monitor.service', -] +if use_systemd + wanted_targets = [] + foreach component: wanted_components + wanted_targets += 'Wants=@0@.target'.format(component) + endforeach + + required_targets = [] + foreach component: required_components + wanted_targets += 'Requires=@0@.target'.format(component) + endforeach + + configure_file( + input: 'gnome.session.conf.in', + output: 'gnome.session.conf', + configuration: { + 'wants_components': '\n'.join(wanted_targets), + 'requires_components': '\n'.join(required_targets), + }, + install_dir: systemd_userunitdir / 'gnome-session@gnome.target.d', + ) +endif -foreach service: systemd_service - configure_file( - input: service + '.in', - output: service, - install: true, - install_dir: systemd_userunitdir, - configuration: { - 'libexecdir': session_libexecdir, - }, - ) -endforeach +if use_systemd + systemd_service = ['gnome-session-manager@.service', + 'gnome-session-signal-init.service', + 'gnome-session-restart-dbus.service', + 'gnome-session-monitor.service', + 'gnome-session-failed.service'] + + foreach service: systemd_service + configure_file( + input: service + '.in', + output: service, + install: true, + install_dir: systemd_userunitdir, + configuration: unit_conf + ) + endforeach -systemd_target = [ - 'gnome-session-wayland@.target', - 'gnome-session-wayland.target', - 'gnome-session@.target', - 'gnome-session.target', - 'gnome-session-basic-services.target', - 'gnome-session-pre.target', - 'gnome-session-manager.target', - 'gnome-session-initialized.target', - 'gnome-session-shutdown.target', - 'gnome-session-x11-services.target', - 'gnome-session-x11-services-ready.target', -] -if have_x11 - systemd_target += [ - 'gnome-session-x11@.target', - 'gnome-session-x11.target', - ] -endif + systemd_target = files('gnome-session-wayland@.target', + 'gnome-session-wayland.target', + 'gnome-session@.target', + 'gnome-session.target', + 'gnome-session-pre.target', + 'gnome-session-manager.target', + 'gnome-session-initialized.target', + 'gnome-session-shutdown.target', + 'gnome-session-failed.target', + ) + if have_x11 + systemd_target += [ + 'gnome-session-x11@.target', + 'gnome-session-x11.target', + 'gnome-session-x11-services.target', + 'gnome-session-x11-services-ready.target', + ] + endif install_data( systemd_target, @@ -118,6 +132,7 @@ install_data( rename: 'override.conf', install_dir : join_paths(systemd_userunitdir, 'app-gnome-.scope.d') ) +endif # FIXME: https://github.com/systemd/systemd/issues/37104 install_data( -- GitLab From 95324acfd4a8a78a17846a9bfc45c6cfe132ea2f Mon Sep 17 00:00:00 2001 From: Nathaniel Russell Date: Sun, 8 Jun 2025 14:51:08 +0000 Subject: [PATCH 2/3] Edit meson_options.txt --- meson_options.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/meson_options.txt b/meson_options.txt index 781d8eea..56798ac6 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,4 +1,5 @@ option('deprecation_flags', type: 'boolean', value: false, description: 'use *_DISABLE_DEPRECATED flags') +option('logind_provider', type: 'combo', choices: ['systemd', 'elogind'], value: 'systemd', description: 'logind implementation') option('systemduserunitdir', type: 'string', description: 'Directory for systemd user service files') option('docbook', type: 'boolean', value: true, description: 'build documentation') option('man', type: 'boolean', value: true, description: 'build documentation (requires xmlto)') -- GitLab From cd6730a326c7d527ff672f2c24ae6690202599ca Mon Sep 17 00:00:00 2001 From: Nathaniel Russell Date: Sun, 8 Jun 2025 14:51:29 +0000 Subject: [PATCH 3/3] Edit meson.build --- meson.build | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 361b388c..2374bed4 100644 --- a/meson.build +++ b/meson.build @@ -90,17 +90,22 @@ session_deps = [ dependency('json-glib-1.0', version: '>= 0.10') ] -libsystemd_dep = dependency('libsystemd', version: '>= 209', required: true) -config_h.set('SYSTEMD_STRICT_ENV', - libsystemd_dep.version().version_compare('< 248')) - session_bin_deps = session_deps + [ - libsystemd_dep, dependency('gio-unix-2.0', version: glib_req_version), ] +# Check for systemd +use_systemd = get_option('logind_provider') == 'systemd' +if use_systemd + libsystemd_dep = dependency('libsystemd', version: '>= 209', required: true) + session_bin_deps += libsystemd_dep +elif get_option('logind_provider') == 'elogind' + libelogind_dep = dependency('libelogind', version: '>= 209', required: true) + session_bin_deps += libelogind_dep +endif + systemd_userunitdir = get_option('systemduserunitdir') -if systemd_userunitdir == '' +if systemd_userunitdir == '' and use_systemd systemd_dep = dependency('systemd', version: '>= 242', required: true) systemd_userunitdir = systemd_dep.get_variable(pkgconfig: 'systemduserunitdir', pkgconfig_define: ['prefix', session_prefix]) -- GitLab