From 97313b9b0c5d5977e66f318345523f5a2f3117e5 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 18 Aug 2022 20:59:42 -0400 Subject: [PATCH] gnu: gdm: Update to 42.0. * gnu/packages/gnome.scm (gdm): Update to 42.0. [inputs]: Add libgudev. * gnu/packages/patches/gdm-default-session.patch: Rebase patch. * gnu/packages/patches/gdm-elogind-support.patch: Likewise. * gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch: Likewise. * gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch: Likewise. * gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch: Likewise. --- gnu/packages/gnome.scm | 5 +- .../patches/gdm-default-session.patch | 67 ++++++++++--------- .../patches/gdm-elogind-support.patch | 21 +++--- .../gdm-pass-gdk-pixbuf-loader-env.patch | 13 +--- .../gdm-remove-hardcoded-xwayland-path.patch | 36 +++++----- ...gdm-wayland-session-wrapper-from-env.patch | 13 +--- 6 files changed, 73 insertions(+), 82 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index d64c2b3a78..312e710d73 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -8382,7 +8382,7 @@ (define-public libxml++-2 (define-public gdm (package (name "gdm") - (version "40.1") + (version "42.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8390,7 +8390,7 @@ (define-public gdm name "-" version ".tar.xz")) (sha256 (base32 - "1zbks7bwbys1pn7sk0aq0dbn09adx51amb441z4z4j28cvma3f5b")) + "0m9qmm3vm81jmqlc30a1fb79hsr4l4lpiw0zjxww3gipd6bsqa53")) (patches (search-patches "gdm-default-session.patch" @@ -8586,6 +8586,7 @@ (define-public gdm gtk+ iso-codes libcanberra + libgudev linux-pam)) (synopsis "Display manager for GNOME") (home-page "https://wiki.gnome.org/Projects/GDM/") diff --git a/gnu/packages/patches/gdm-default-session.patch b/gnu/packages/patches/gdm-default-session.patch index 8325b6102b..27f7035bfb 100644 --- a/gnu/packages/patches/gdm-default-session.patch +++ b/gnu/packages/patches/gdm-default-session.patch @@ -4,12 +4,14 @@ and not in the directories listed in $XDG_DATA_DIRS. The latter includes /run/current-system/profile, and only then. Fixes . ---- a/daemon/gdm-session.c 2021-07-23 15:16:15.164201000 +0000 -+++ b/daemon/gdm-session.c 2021-09-26 08:18:58.730134555 +0000 -@@ -354,25 +354,19 @@ +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index 4b709731..3b83fcd3 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -362,16 +362,15 @@ get_system_session_dirs (GdmSession *self, GArray *search_array = NULL; char **search_dirs; - int i; + int i, j; - const gchar * const *system_data_dirs = g_get_system_data_dirs (); static const char *x_search_dirs[] = { @@ -25,43 +27,44 @@ Fixes . search_array = g_array_new (TRUE, TRUE, sizeof (char *)); - if (type == NULL || g_str_equal (type, "x11")) { -- for (i = 0; system_data_dirs[i]; i++) { -- gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); -- g_array_append_val (search_array, dir); -- } -- - g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); - } +@@ -380,11 +379,6 @@ get_system_session_dirs (GdmSession *self, -@@ -382,16 +376,7 @@ - #ifdef ENABLE_USER_DISPLAY_SERVER - g_array_prepend_val (search_array, wayland_search_dir); - -- for (i = 0; system_data_dirs[i]; i++) { -- gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); -- g_array_insert_val (search_array, i, dir); -- } - #else -- for (i = 0; system_data_dirs[i]; i++) { -- gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); -- g_array_append_val (search_array, dir); -- } + if (g_str_equal (supported_type, "x11") && + (type == NULL || g_str_equal (type, supported_type))) { +- for (i = 0; system_data_dirs[i]; i++) { +- gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); +- g_array_append_val (search_array, dir); +- } - - g_array_append_val (search_array, wayland_search_dir); + g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); + } + +@@ -392,11 +386,6 @@ get_system_session_dirs (GdmSession *self, + #ifdef ENABLE_WAYLAND_SUPPORT + if (g_str_equal (supported_type, "wayland") && + (type == NULL || g_str_equal (type, supported_type))) { +- for (i = 0; system_data_dirs[i]; i++) { +- gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); +- g_array_append_val (search_array, dir); +- } +- + g_array_append_val (search_array, wayland_search_dir); + } #endif - } -diff -ur a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c ---- a/libgdm/gdm-sessions.c 2019-10-07 04:53:35.000000000 -0400 -+++ b/libgdm/gdm-sessions.c 2020-04-18 18:31:42.491348691 -0400 -@@ -245,35 +245,23 @@ +diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c +index d8b4d5cd..7ed8de91 100644 +--- a/libgdm/gdm-sessions.c ++++ b/libgdm/gdm-sessions.c +@@ -275,7 +275,7 @@ collect_sessions (void) "/etc/X11/sessions/", DMCONFDIR "/Sessions/", DATADIR "/gdm/BuiltInSessions/", - DATADIR "/xsessions/", + "/run/current-system/profile/share/xsessions/" }; - + const gchar *supported_session_types_env = NULL; + g_auto (GStrv) supported_session_types = NULL; +@@ -288,29 +288,17 @@ collect_sessions (void) names_seen_before = g_hash_table_new (g_str_hash, g_str_equal); xorg_search_array = g_ptr_array_new_with_free_func (g_free); diff --git a/gnu/packages/patches/gdm-elogind-support.patch b/gnu/packages/patches/gdm-elogind-support.patch index 39cd12dd22..5c8e3bd610 100644 --- a/gnu/packages/patches/gdm-elogind-support.patch +++ b/gnu/packages/patches/gdm-elogind-support.patch @@ -19,7 +19,7 @@ system and user units. 6 files changed, 66 insertions(+), 42 deletions(-) diff --git a/common/meson.build b/common/meson.build -index 074dd92e1..bca58f7c4 100644 +index 074dd92e..bca58f7c 100644 --- a/common/meson.build +++ b/common/meson.build @@ -11,7 +11,7 @@ libgdmcommon_src = files( @@ -32,10 +32,10 @@ index 074dd92e1..bca58f7c4 100644 gio_dep, gio_unix_dep, diff --git a/data/meson.build b/data/meson.build -index 7c5222eaf..403336c31 100644 +index 2dec4c23..c3452e1c 100644 --- a/data/meson.build +++ b/data/meson.build -@@ -168,41 +168,53 @@ else +@@ -164,41 +164,53 @@ else service_config.set('PLYMOUTH_QUIT_SERVICE', '') endif @@ -115,7 +115,7 @@ index 7c5222eaf..403336c31 100644 # XSession if get_option('gdm-xsession') diff --git a/libgdm/meson.build b/libgdm/meson.build -index 3f8cafbb7..83e95151b 100644 +index 3f8cafbb..83e95151 100644 --- a/libgdm/meson.build +++ b/libgdm/meson.build @@ -56,7 +56,7 @@ libgdm_deps = [ @@ -128,12 +128,12 @@ index 3f8cafbb7..83e95151b 100644 ] diff --git a/meson.build b/meson.build -index e6fcf4b8b..a86a486b7 100644 +index 845f673e..d0ca41ef 100644 --- a/meson.build +++ b/meson.build -@@ -92,21 +92,30 @@ xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp')) +@@ -96,21 +96,30 @@ xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp')) if xdmcp_dep.found() and get_option('tcp-wrappers') - libwrap_dep = cc.find_library('libwrap') + libwrap_dep = cc.find_library('wrap') endif -# systemd -systemd_dep = dependency('systemd') @@ -175,7 +175,7 @@ index e6fcf4b8b..a86a486b7 100644 # Plymouth plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth')) # Check for Solaris auditing API (ADT) -@@ -313,6 +322,7 @@ summary({ +@@ -319,6 +328,7 @@ summary({ 'PAM Syslog': have_pam_syslog, 'Supports PAM Extensions': pam_extensions_supported, 'SeLinux': libselinux_dep.found(), @@ -184,7 +184,7 @@ index e6fcf4b8b..a86a486b7 100644 'Use UserDisplayServer': get_option('user-display-server'), 'Use SystemdJournal': get_option('systemd-journal'), diff --git a/meson_options.txt b/meson_options.txt -index 14e0b908b..5135d7d66 100644 +index 14e0b908..5135d7d6 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -12,6 +12,7 @@ option('initial-vt', type: 'integer', value: 1, description: 'Initial virtual te @@ -206,6 +206,3 @@ index 14e0b908b..5135d7d66 100644 option('tcp-wrappers', type: 'boolean', value: false, description: 'Use TCP wrappers.') option('udev-dir', type: 'string', value: '', description: 'Directory for udev rules file.') option('user', type: 'string', value: 'gdm', description: 'GDM\'s username.') --- -GitLab - diff --git a/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch b/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch index 4341e3fc30..2c095c8003 100644 --- a/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch +++ b/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch @@ -1,17 +1,11 @@ -From 444250fce55f916af993bc855930c6809686e4bd Mon Sep 17 00:00:00 2001 From: Josselin Poiret Date: Tue, 23 Nov 2021 18:39:39 +0000 Subject: [PATCH] Make GDM pass GDK_PIXBUF_MODULE_FILE to sessions - ---- - daemon/gdm-launch-environment.c | 1 + - 1 file changed, 1 insertion(+) - diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c -index 14ecfac2..3e618321 100644 +index 932c3e8a..a50dcc8c 100644 --- a/daemon/gdm-launch-environment.c +++ b/daemon/gdm-launch-environment.c -@@ -158,6 +158,7 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment, +@@ -157,6 +157,7 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment, "WINDOWPATH", "XCURSOR_PATH", "XDG_CONFIG_DIRS", @@ -19,6 +13,3 @@ index 14ecfac2..3e618321 100644 NULL }; char *system_data_dirs; --- -2.33.1 - diff --git a/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch b/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch index 366fb91668..83d56ddf69 100644 --- a/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch +++ b/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch @@ -1,22 +1,28 @@ Remove check for hardcoded Xwayland path in gdm. ---- - daemon/gdm-local-display-factory.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c -index da1093bb..37355c06 100644 +index 7de7b99c..065325f4 100644 --- a/daemon/gdm-local-display-factory.c +++ b/daemon/gdm-local-display-factory.c -@@ -203,7 +203,7 @@ gdm_local_display_factory_use_wayland (void) +@@ -245,9 +245,9 @@ struct GdmDisplayServerConfiguration { + const char *session_type; + } display_server_configuration[] = { #ifdef ENABLE_WAYLAND_SUPPORT - gboolean wayland_enabled = FALSE; - if (gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled)) { -- if (wayland_enabled && g_file_test ("/usr/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) -+ if (wayland_enabled) - return TRUE; - } +- { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" }, ++ { "wayland", GDM_KEY_WAYLAND_ENABLE, "", "wayland" }, #endif --- -2.33.0 - +- { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" }, ++ { "xorg", GDM_KEY_XORG_ENABLE, "", "x11" }, + { NULL, NULL, NULL }, + }; + +@@ -269,9 +269,6 @@ display_server_enabled (GdmLocalDisplayFactory *factory, + if (!gdm_settings_direct_get_boolean (key, &enabled) || !enabled) + return FALSE; + +- if (!g_file_test (binary, G_FILE_TEST_IS_EXECUTABLE)) +- return FALSE; +- + return TRUE; + } + diff --git a/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch b/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch index 44ab6a9471..6ea0daf6a7 100644 --- a/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch +++ b/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch @@ -1,14 +1,10 @@ Get wayland-session wrapper from environment. ---- - daemon/gdm-session.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 4e303e70..1deca4e9 100644 +index 3b83fcd3..e60e6a57 100644 --- a/daemon/gdm-session.c +++ b/daemon/gdm-session.c -@@ -2888,8 +2888,9 @@ gdm_session_start_session (GdmSession *self, +@@ -2933,8 +2933,9 @@ gdm_session_start_session (GdmSession *self, allow_remote_connections? "--allow-remote-connections " : "", command); } else { @@ -19,7 +15,7 @@ index 4e303e70..1deca4e9 100644 command); } } else if (run_xsession_script) { -@@ -2942,8 +2942,9 @@ +@@ -2965,8 +2966,9 @@ gdm_session_start_session (GdmSession *self, register_session ? "--register-session " : "", self->selected_program); } else { @@ -30,6 +26,3 @@ index 4e303e70..1deca4e9 100644 self->selected_program); } } else { --- -2.33.0 -