aboutsummaryrefslogtreecommitdiff
path: root/desktop/gnome-session/0001-meson-add-elogind-support.patch
blob: 04ab42d2a5edcb99a17a04e204d86c62a74070fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
From ab8893f12c925050aceea4e31dd84aef674c6e9f Mon Sep 17 00:00:00 2001
From: Dudemanguy <random342@airmail.cc>
Date: Wed, 7 Oct 2020 10:08:33 -0500
Subject: [PATCH 1/1] meson: add elogind support

systemd session management (AKA logind) works with elogind. Just add an
option to enable elogind and modify the defines a little bit to get it
to build with systemd session management support.
---
 data/meson.build                  |  2 +-
 gnome-session/gsm-autostart-app.c |  2 +-
 gnome-session/gsm-manager.c       |  4 ++--
 gnome-session/gsm-systemd.c       |  2 +-
 gnome-session/gsm-util.c          |  4 ++--
 gnome-session/gsm-util.h          |  2 +-
 gnome-session/main.c              |  4 ++--
 meson.build                       | 15 +++++++++++++--
 meson_options.txt                 |  1 +
 9 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/data/meson.build b/data/meson.build
index f6d264f8..ad04e6bc 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -120,7 +120,7 @@ install_data(
   install_dir: join_paths(session_datadir, 'GConf', 'gsettings')
 )
 
-if enable_systemd_session
+if enable_systemd_session and enable_systemd
   unit_conf = configuration_data()
   unit_conf.set('libexecdir', session_libexecdir)
 
diff --git a/gnome-session/gsm-autostart-app.c b/gnome-session/gsm-autostart-app.c
index 8204d4f1..244a325f 100644
--- a/gnome-session/gsm-autostart-app.c
+++ b/gnome-session/gsm-autostart-app.c
@@ -31,7 +31,7 @@
 #define GNOME_DESKTOP_USE_UNSTABLE_API
 #include <libgnome-desktop/gnome-systemd.h>
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
 #ifdef ENABLE_SYSTEMD_JOURNAL
 #include <systemd/sd-journal.h>
 #endif
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 1b88b266..8dfd23fe 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -974,7 +974,7 @@ _client_stop (const char *id,
         return FALSE;
 }
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
 static void
 maybe_restart_user_bus (GsmManager *manager)
 {
@@ -1020,7 +1020,7 @@ do_phase_exit (GsmManager *manager)
                                    NULL);
         }
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
         if (!priv->systemd_managed)
                 maybe_restart_user_bus (manager);
 #endif
diff --git a/gnome-session/gsm-systemd.c b/gnome-session/gsm-systemd.c
index cf30a4bd..d25ca83c 100644
--- a/gnome-session/gsm-systemd.c
+++ b/gnome-session/gsm-systemd.c
@@ -21,7 +21,7 @@
 #include "config.h"
 #include "gsm-systemd.h"
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
 
 #include <errno.h>
 #include <string.h>
diff --git a/gnome-session/gsm-util.c b/gnome-session/gsm-util.c
index f1e6489d..607395c8 100644
--- a/gnome-session/gsm-util.c
+++ b/gnome-session/gsm-util.c
@@ -626,7 +626,7 @@ gsm_util_export_activation_environment (GError     **error)
         return environment_updated;
 }
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
 gboolean
 gsm_util_export_user_environment (GError     **error)
 {
@@ -839,7 +839,7 @@ gsm_util_setenv (const char *variable,
                 g_clear_error (&error);
         }
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
         /* If this fails, the system user session won't get the updated environment
          */
         if (!gsm_util_update_user_environment (variable, value, &error)) {
diff --git a/gnome-session/gsm-util.h b/gnome-session/gsm-util.h
index bc26a21e..97289c02 100644
--- a/gnome-session/gsm-util.h
+++ b/gnome-session/gsm-util.h
@@ -53,7 +53,7 @@ const char * const * gsm_util_listenv               (void);
 const char * const * gsm_util_get_variable_blacklist(void);
 
 gboolean    gsm_util_export_activation_environment  (GError     **error);
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
 gboolean    gsm_util_export_user_environment        (GError     **error);
 gboolean    gsm_util_start_systemd_unit             (const char  *unit,
                                                      const char  *mode,
diff --git a/gnome-session/main.c b/gnome-session/main.c
index a460a849..65bc9721 100644
--- a/gnome-session/main.c
+++ b/gnome-session/main.c
@@ -541,7 +541,7 @@ main (int argc, char **argv)
 
         session_name = opt_session_name;
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
         gsm_util_export_user_environment (&error);
         if (error && !g_getenv ("RUNNING_UNDER_GDM")) {
                 g_warning ("Failed to upload environment to systemd: %s", error->message);
@@ -624,7 +624,7 @@ main (int argc, char **argv)
 
         gsm_main ();
 
-#ifdef HAVE_SYSTEMD
+#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
         gsm_util_export_user_environment (NULL);
 #endif
 
diff --git a/meson.build b/meson.build
index f56aa316..b29860b1 100644
--- a/meson.build
+++ b/meson.build
@@ -119,7 +119,8 @@ enable_systemd_session = get_option('systemd_session') != 'disable'
 use_systemd_session = get_option('systemd_session') == 'default'
 enable_systemd_journal = get_option('systemd_journal')
 enable_consolekit = get_option('consolekit')
-if enable_systemd or enable_consolekit
+enable_elogind = get_option('elogind')
+if enable_systemd or enable_consolekit or enable_elogind
   session_bin_deps += dependency('gio-unix-2.0', version: glib_req_version)
 
   # Check for systemd
@@ -161,14 +162,24 @@ if enable_systemd or enable_consolekit
       session_tracking = 'ConsoleKit'
     endif
   endif
+
+  # Check for elogind
+  if enable_elogind
+    elogind_dep = dependency('libelogind', version: '>= 209')
+    session_bin_deps += elogind_dep
+
+    session_tracking = 'elogind'
+  endif
+
 endif
 if enable_systemd_session
-  assert(enable_systemd, 'Systemd support must be enabled when using systemd session management')
+  assert(enable_systemd or enable_elogind, 'Systemd or elogind support must be enabled when using systemd session management')
 endif
 config_h.set('HAVE_SYSTEMD', enable_systemd)
 config_h.set('ENABLE_SYSTEMD_SESSION', enable_systemd_session)
 config_h.set('ENABLE_SYSTEMD_JOURNAL', enable_systemd_journal)
 config_h.set('HAVE_CONSOLEKIT', enable_consolekit)
+config_h.set('HAVE_ELOGIND', enable_elogind)
 config_h.set10('USE_SYSTEMD_SESSION', use_systemd_session)
 
 configure_file(
diff --git a/meson_options.txt b/meson_options.txt
index 4c05dc6e..4a27c7fd 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -3,6 +3,7 @@ option('session_selector', type: 'boolean', value: false, description: 'enable b
 option('systemd', type: 'boolean', value: true, description: 'Use systemd')
 option('systemd_session', type: 'combo', choices: ['disable', 'enable', 'default'], value: 'default', description: 'Whether to include systemd session support and use it by default')
 option('systemd_journal', type: 'boolean', value:'true', description: 'Send log to systemd-journal')
+option('elogind', type: 'boolean', value: false, description: 'Use elogind')
 option('consolekit', type: 'boolean', value: false, description: 'Use consolekit')
 option('docbook', type: 'boolean', value: true, description: 'build documentation')
 option('man', type: 'boolean', value: true, description: 'build documentation (requires xmlto)')
-- 
2.34.1