[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#51992] [PATCH core-updates-frozen] gnu: gnome-session: Restore elog
From: |
Timothy Sample |
Subject: |
[bug#51992] [PATCH core-updates-frozen] gnu: gnome-session: Restore elogind support. |
Date: |
Fri, 19 Nov 2021 23:19:40 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hi all,
Here’s a fix for another breakdown in communication between GNOME and
elogind. With this patch, I can power down my machine from GDM. The
gnome-session patch comes from Gentoo. On one hand, it’s not perfect.
It sets the “HAVE_SYSTEMD” flag, causing gnome-session to try and talk
to systemd for things that have nothing to do with logind. On the other
hand, this isn’t a regression for us. It’s essentially how we did it
before (if you run GDM or GNOME, check your logs: gnome-session is
complaining about systemd).
>From 443a14f9c3eb400a5093dad2758bd0f3cc68e457 Mon Sep 17 00:00:00 2001
From: Timothy Sample <samplet@ngyro.com>
Date: Fri, 19 Nov 2021 20:29:57 -0500
Subject: [PATCH] gnu: gnome-session: Restore elogind support.
* gnu/packages/patches/gnome-session-support-elogind.patch: New file.
* gnu/local.mk: Add it.
* gnu/packages/gnome.scm (gnome-session)[source]: Use it.
[arguments]: Add "-Delogind=true" to #:configure-flags; remove
phases that patch in old-style elogind support.
---
gnu/local.mk | 1 +
gnu/packages/gnome.scm | 14 +---
.../gnome-session-support-elogind.patch | 73 +++++++++++++++++++
3 files changed, 76 insertions(+), 12 deletions(-)
create mode 100644 gnu/packages/patches/gnome-session-support-elogind.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 54b23c06d9..3e28015f65 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1166,6 +1166,7 @@ dist_patch_DATA =
\
%D%/packages/patches/gnome-online-miners-tracker-3.patch \
%D%/packages/patches/gnome-screenshot-meson-0.60.patch \
%D%/packages/patches/gnome-shell-disable-test.patch \
+ %D%/packages/patches/gnome-session-support-elogind.patch \
%D%/packages/patches/gnome-settings-daemon-gc.patch \
%D%/packages/patches/gnome-tweaks-search-paths.patch \
%D%/packages/patches/gnupg-default-pinentry.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 0beadc003b..2a3e09b7c4 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7253,6 +7253,7 @@ (define-public gnome-session
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major version) "/"
name "-" version ".tar.xz"))
+ (patches (search-patches "gnome-session-support-elogind.patch"))
(sha256
(base32
"02z0xr6sv9ibl7awbw9j4y05hf4jk1zgvsbbmh7n27hhjvsvc8pl"))))
@@ -7261,18 +7262,6 @@ (define-public gnome-session
#:glib-or-gtk? #t
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'pre-configure
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Use elogind instead of systemd.
- (substitute* "meson.build"
- (("libsystemd-login") "libelogind")
- (("and libsystemd_daemon_dep.found.*") ","))
- (substitute* "gnome-session/gsm-systemd.c"
- (("#include <systemd/sd-login.h>")
- "#include <elogind/sd-login.h>"))
- ;; Remove uses of the systemd daemon.
- (substitute* "gnome-session/gsm-autostart-app.c"
- (("#ifdef HAVE_SYSTEMD") "#if 0"))))
(add-after 'install 'wrap-gnome-session
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Make sure 'gnome-session' finds the 'gsettings' program.
@@ -7284,6 +7273,7 @@ (define-public gnome-session
#:configure-flags
'("-Ddocbook=false" ; FIXME: disabled because of docbook validation
error
"-Dman=false" ; FIXME: disabled because of docbook validation error
+ "-Delogind=true"
"-Dsystemd=false"
"-Dsystemd_session=disable"
"-Dsystemd_journal=false")))
diff --git a/gnu/packages/patches/gnome-session-support-elogind.patch
b/gnu/packages/patches/gnome-session-support-elogind.patch
new file mode 100644
index 0000000000..b52b4c6855
--- /dev/null
+++ b/gnu/packages/patches/gnome-session-support-elogind.patch
@@ -0,0 +1,73 @@
+This patch, borrowed from Gentoo, allows configuring gnome-sesssion with
+elogind support.
+
+https://gitweb.gentoo.org/repo/gentoo.git/plain/gnome-base/gnome-session/files/gnome-session-3.38.0-meson-Support-elogind.patch?id=5f7fe88af5f888aff58fa0c069c3fe07973c7cd2
+
+From 4454f2a63394b69fba2c900151165ad8b5742f31 Mon Sep 17 00:00:00 2001
+From: Mart Raudsepp <leio@gentoo.org>
+Date: Sun, 15 Mar 2020 14:34:39 +0200
+Subject: [PATCH] meson: Support elogind
+
+---
+ meson.build | 12 +++++++++---
+ meson_options.txt | 1 +
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index ef5132c6..7f68aaae 100644
+--- a/meson.build
++++ b/meson.build
+@@ -124,8 +124,10 @@ enable_systemd = get_option('systemd')
+ enable_systemd_session = get_option('systemd_session') != 'disable'
+ use_systemd_session = get_option('systemd_session') == 'default'
+ enable_systemd_journal = get_option('systemd_journal')
++enable_elogind = get_option('elogind')
+ enable_consolekit = get_option('consolekit')
+-if enable_systemd or enable_consolekit
++assert(not (enable_systemd and enable_elogind), 'Can not support systemd and
elogind at once')
++if enable_systemd or enable_elogind or enable_consolekit
+ session_bin_deps += dependency('gio-unix-2.0', version: glib_req_version)
+
+ # Check for systemd
+@@ -152,6 +154,10 @@ if enable_systemd or enable_consolekit
+ endif
+
+ session_tracking = 'systemd'
++ elif enable_elogind
++ libelogind_dep = dependency('libelogind', version: '>= 239.4')
++ session_bin_deps += libelogind_dep
++ session_tracking = 'elogind'
+ endif
+
+ # Check for ConsoleKit
+@@ -161,7 +167,7 @@ if enable_systemd or enable_consolekit
+
+ session_bin_deps += dbus_glib_dep
+
+- if enable_systemd
++ if enable_systemd or enable_elogind
+ session_tracking += ' (with fallback to ConsoleKit)'
+ else
+ session_tracking = 'ConsoleKit'
+@@ -171,7 +177,7 @@ endif
+ if enable_systemd_session
+ assert(enable_systemd, 'Systemd support must be enabled when using systemd
session management')
+ endif
+-config_h.set('HAVE_SYSTEMD', enable_systemd)
++config_h.set('HAVE_SYSTEMD', enable_systemd or enable_elogind)
+ 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)
+diff --git a/meson_options.txt b/meson_options.txt
+index 4c05dc6e..512d1528 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('elogind', type: 'boolean', value: true, description: 'Use elogind')
+ option('session_selector', type: 'boolean', value: false, description:
'enable building a custom session selector dialog')
+ 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')
+--
+2.26.2
+
--
2.34.0
- [bug#51992] [PATCH core-updates-frozen] gnu: gnome-session: Restore elogind support.,
Timothy Sample <=