GNU bug report logs - #51992
[PATCH core-updates-frozen] gnu: gnome-session: Restore elogind support.

Previous Next

Package: guix-patches;

Reported by: Timothy Sample <samplet <at> ngyro.com>

Date: Sat, 20 Nov 2021 04:20:01 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 51992 in the body.
You can then email your comments to 51992 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#51992; Package guix-patches. (Sat, 20 Nov 2021 04:20:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Timothy Sample <samplet <at> ngyro.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 20 Nov 2021 04:20:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: guix-patches <at> gnu.org
Subject: [PATCH core-updates-frozen] gnu: gnome-session: Restore elogind
 support.
Date: Fri, 19 Nov 2021 23:19:40 -0500
[Message part 1 (text/plain, inline)]
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).

[0001-gnu-gnome-session-Restore-elogind-support.patch (text/x-patch, inline)]
From 443a14f9c3eb400a5093dad2758bd0f3cc68e457 Mon Sep 17 00:00:00 2001
From: Timothy Sample <samplet <at> 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 <at> 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


Reply sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
You have taken responsibility. (Sun, 21 Nov 2021 14:14:02 GMT) Full text and rfc822 format available.

Notification sent to Timothy Sample <samplet <at> ngyro.com>:
bug acknowledged by developer. (Sun, 21 Nov 2021 14:14:02 GMT) Full text and rfc822 format available.

Message #10 received at 51992-done <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 51992-done <at> debbugs.gnu.org
Subject: Re: bug#51992: [PATCH core-updates-frozen] gnu: gnome-session:
 Restore elogind support.
Date: Sun, 21 Nov 2021 09:13:39 -0500
Timothy Sample <samplet <at> ngyro.com> writes:

> 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 <at> 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 +---

Applied, thank you!

Maxim




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 20 Dec 2021 12:24:13 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 89 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.