diff --git a/.gitignore b/.gitignore index 610ec31..7b0befd 100644 --- a/.gitignore +++ b/.gitignore @@ -117,3 +117,4 @@ gdm-2.30.2.tar.bz2 /gdm-3.29.90.tar.xz /gdm-3.29.91.tar.xz /gdm-3.30.0.tar.xz +/gdm-3.30.1.tar.xz diff --git a/0001-Honor-initial-setup-being-disabled-by-distro-install.patch b/0001-Honor-initial-setup-being-disabled-by-distro-install.patch index 96a78f5..32d135b 100644 --- a/0001-Honor-initial-setup-being-disabled-by-distro-install.patch +++ b/0001-Honor-initial-setup-being-disabled-by-distro-install.patch @@ -1,4 +1,4 @@ -From fa5733788ae5f8e8caeb07e956be370e96f9b6b1 Mon Sep 17 00:00:00 2001 +From 42b18e4c84d470f33cdec5fc1f481cb25c25cf0d Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Mon, 23 Jan 2017 20:19:51 +0100 Subject: [PATCH] Honor initial setup being disabled by distro installer @@ -19,10 +19,10 @@ https://bugzilla.gnome.org/show_bug.cgi?id=777708 2 files changed, 30 insertions(+) diff --git a/daemon/Makefile.am b/daemon/Makefile.am -index ab5dda0..786e0c5 100644 +index 5e9eb5e..3b1b151 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am -@@ -14,6 +14,7 @@ AM_CPPFLAGS = \ +@@ -15,6 +15,7 @@ AM_CPPFLAGS = \ -DLOCALSTATEDIR=\"$(localstatedir)\" \ -DLOGDIR=\"$(logdir)\" \ -DSBINDIR=\"$(sbindir)\" \ @@ -31,13 +31,14 @@ index ab5dda0..786e0c5 100644 -DGDM_RUN_DIR=\"$(GDM_RUN_DIR)\" \ -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index 0057e2c..2af8e13 100644 +index 5e193f2..878be88 100644 --- a/daemon/gdm-display.c +++ b/daemon/gdm-display.c -@@ -1456,6 +1456,31 @@ can_create_environment (const char *session_id) +@@ -1547,6 +1547,31 @@ kernel_cmdline_initial_setup_force_state (gboolean *force_state) + return TRUE; } - static gboolean ++static gboolean +initial_setup_disabled_by_anaconda (void) +{ + GKeyFile *key_file; @@ -62,11 +63,10 @@ index 0057e2c..2af8e13 100644 + return disabled; +} + -+static gboolean + static gboolean wants_initial_setup (GdmDisplay *self) { - gboolean enabled = FALSE; -@@ -1480,6 +1505,10 @@ wants_initial_setup (GdmDisplay *self) +@@ -1587,6 +1612,10 @@ wants_initial_setup (GdmDisplay *self) return FALSE; } @@ -78,5 +78,5 @@ index 0057e2c..2af8e13 100644 } -- -2.9.3 +2.19.0 diff --git a/0001-local-display-factory-ignore-spurios-SeatNew-signal-.patch b/0001-local-display-factory-ignore-spurios-SeatNew-signal-.patch deleted file mode 100644 index 5559289..0000000 --- a/0001-local-display-factory-ignore-spurios-SeatNew-signal-.patch +++ /dev/null @@ -1,162 +0,0 @@ -From d868eb3ced19d0624aa8ce948ccc8d8523551e78 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 14 Aug 2018 10:21:17 -0400 -Subject: [PATCH] local-display-factory: ignore spurios SeatNew signal at start - up - -Sometimes during startup, logind will send a `SeatNew` signal for -seat0 after GDM has already called `ListSeats` and processed `seat0`. - -That `SeatNew` signal leads to GDM calling `create_display` twice in -quick succession. - -This commit changes GDM to avoid such double processing, by ignoring -the `create_display` requests for seats that already have a prepared -display ("prepared" means "starting up"). - -Closes: https://gitlab.gnome.org/GNOME/gdm/issues/410 ---- - daemon/gdm-local-display-factory.c | 33 +++++++++++++++++++++++------- - 1 file changed, 26 insertions(+), 7 deletions(-) - -diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c -index 39f3e30a3..7ec998efa 100644 ---- a/daemon/gdm-local-display-factory.c -+++ b/daemon/gdm-local-display-factory.c -@@ -348,107 +348,126 @@ on_display_status_changed (GdmDisplay *display, - case GDM_DISPLAY_MANAGED: - break; - default: - g_assert_not_reached (); - break; - } - - g_free (seat_id); - g_free (session_type); - g_free (session_class); - } - - static gboolean - lookup_by_seat_id (const char *id, - GdmDisplay *display, - gpointer user_data) - { - const char *looking_for = user_data; - char *current; - gboolean res; - - g_object_get (G_OBJECT (display), "seat-id", ¤t, NULL); - - res = g_strcmp0 (current, looking_for) == 0; - - g_free(current); - - return res; - } - -+static gboolean -+lookup_prepared_display_by_seat_id (const char *id, -+ GdmDisplay *display, -+ gpointer user_data) -+{ -+ int status; -+ -+ status = gdm_display_get_status (display); -+ -+ if (status != GDM_DISPLAY_PREPARED) -+ return FALSE; -+ -+ return lookup_by_seat_id (id, display, user_data); -+} -+ - static GdmDisplay * - create_display (GdmLocalDisplayFactory *factory, - const char *seat_id, - const char *session_type, - gboolean initial) - { - GdmDisplayStore *store; - GdmDisplay *display = NULL; - char *active_session_id = NULL; - int ret; - - g_debug ("GdmLocalDisplayFactory: %s login display for seat %s requested", - session_type? : "X11", seat_id); - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - -+ if (sd_seat_can_multi_session (seat_id)) -+ display = gdm_display_store_find (store, lookup_prepared_display_by_seat_id, (gpointer) seat_id); -+ else -+ display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id); -+ -+ /* Ensure we don't create the same display more than once */ -+ if (display != NULL) { -+ g_debug ("GdmLocalDisplayFactory: display already created"); -+ return NULL; -+ } -+ - ret = sd_seat_get_active (seat_id, &active_session_id, NULL); - - if (ret == 0) { - char *login_session_id = NULL; - - /* If we already have a login window, switch to it */ - if (gdm_get_login_window_session_id (seat_id, &login_session_id)) { - GdmDisplay *display; - - display = gdm_display_store_find (store, - lookup_by_session_id, - (gpointer) login_session_id); - if (display != NULL && gdm_display_get_status (display) == GDM_DISPLAY_MANAGED) { - if (g_strcmp0 (active_session_id, login_session_id) != 0) { - g_debug ("GdmLocalDisplayFactory: session %s found, activating.", - login_session_id); - gdm_activate_session_by_id (factory->priv->connection, seat_id, login_session_id); - } - g_clear_pointer (&login_session_id, g_free); - g_clear_pointer (&active_session_id, g_free); - return NULL; - } - g_clear_pointer (&login_session_id, g_free); - } - g_clear_pointer (&active_session_id, g_free); -- } else if (!sd_seat_can_multi_session (seat_id)) { -- /* Ensure we don't create the same display more than once */ -- display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id); -- -- if (display != NULL) { -- return NULL; -- } - } - - g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); - - #ifdef ENABLE_USER_DISPLAY_SERVER - if (g_strcmp0 (seat_id, "seat0") == 0) { - display = gdm_local_display_new (); - if (session_type != NULL) { - g_object_set (G_OBJECT (display), "session-type", session_type, NULL); - } - } - #endif - - if (display == NULL) { - guint32 num; - - num = take_next_display_number (factory); - - display = gdm_legacy_display_new (num); - } - - g_object_set (display, "seat-id", seat_id, NULL); - g_object_set (display, "is-initial", initial, NULL); - - store_display (factory, display); - - /* let store own the ref */ - g_object_unref (display); - - if (! gdm_display_manage (display)) { --- -2.17.1 - diff --git a/0001-manager-do-initial-setup-post-work-in-manager-code.patch b/0001-manager-do-initial-setup-post-work-in-manager-code.patch index be484d3..8f2b43c 100644 --- a/0001-manager-do-initial-setup-post-work-in-manager-code.patch +++ b/0001-manager-do-initial-setup-post-work-in-manager-code.patch @@ -1,4 +1,4 @@ -From 692613bc996f5ab090a1fb605ae8dd50c6bb81bf Mon Sep 17 00:00:00 2001 +From 03cd095d78fed6632e32ed933d71b8819d86afab Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 6 Sep 2018 19:31:50 -0400 Subject: [PATCH] manager: do initial-setup post work in manager code @@ -18,7 +18,7 @@ This commit moves the code to a more logical place. 2 files changed, 132 insertions(+), 132 deletions(-) diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index 5e193f2f5..511a5ca3f 100644 +index 878be88da..c036a0a5c 100644 --- a/daemon/gdm-display.c +++ b/daemon/gdm-display.c @@ -22,61 +22,60 @@ @@ -215,7 +215,7 @@ index 5e193f2f5..511a5ca3f 100644 const char * gdm_display_get_session_id (GdmDisplay *self) { -@@ -1631,145 +1559,85 @@ gdm_display_start_greeter_session (GdmDisplay *self) +@@ -1660,145 +1588,85 @@ gdm_display_start_greeter_session (GdmDisplay *self) G_CALLBACK (on_launch_environment_session_stopped), self, 0); g_signal_connect_object (self->priv->launch_environment, @@ -362,7 +362,7 @@ index 5e193f2f5..511a5ca3f 100644 xcb_intern_atom_cookie_t atom_cookie; xcb_intern_atom_reply_t *atom_reply = NULL; diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c -index 20a9ba7d7..c37135f44 100644 +index b1e9b68be..7a0832977 100644 --- a/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c @@ -35,60 +35,61 @@ @@ -413,6 +413,7 @@ index 20a9ba7d7..c37135f44 100644 #ifdef HAVE_LIBXDMCP GdmXdmcpDisplayFactory *xdmcp_factory; #endif + GdmDisplay *automatic_login_display; GList *user_sessions; GHashTable *transient_sessions; GHashTable *open_reauthentication_requests; @@ -426,8 +427,7 @@ index 20a9ba7d7..c37135f44 100644 #ifdef WITH_PLYMOUTH guint plymouth_is_running : 1; - #endif -@@ -1552,130 +1553,261 @@ start_user_session (GdmManager *manager, +@@ -1568,130 +1569,261 @@ start_user_session (GdmManager *manager, destroy_start_user_session_operation (operation); } @@ -671,24 +671,24 @@ index 20a9ba7d7..c37135f44 100644 g_object_set_data (G_OBJECT (operation->session), "gdm-display", NULL); create_user_session_for_display (operation->manager, display, allowed_uid); + /* Give the user session a new display object for bookkeeping purposes */ + create_display_for_user_session (operation->manager, + operation->session, + session_id); + + if (g_strcmp0 (operation->service_name, "gdm-autologin") == 0) { /* remove the unused prepared greeter display since we're not going * to have a greeter */ gdm_display_store_remove (self->priv->display_store, display); g_object_unref (display); - } - /* Give the user session a new display object for bookkeeping purposes */ - create_display_for_user_session (operation->manager, - operation->session, - session_id); + self->priv->automatic_login_display = g_object_get_data (G_OBJECT (operation->session), "gdm-display"); + g_object_add_weak_pointer (G_OBJECT (display), (gpointer *) &self->priv->automatic_login_display); + } } start_user_session (operation->manager, operation); - - out: - return G_SOURCE_REMOVE; - } -- -2.17.1 +2.19.0 diff --git a/gdm.spec b/gdm.spec index f18f349..fc76e17 100644 --- a/gdm.spec +++ b/gdm.spec @@ -9,8 +9,8 @@ Name: gdm Epoch: 1 -Version: 3.30.0 -Release: 3%{?dist} +Version: 3.30.1 +Release: 1%{?dist} Summary: The GNOME Display Manager License: GPLv2+ @@ -175,10 +175,6 @@ mkdir -p %{buildroot}/run/gdm find %{buildroot} -name '*.a' -delete find %{buildroot} -name '*.la' -delete -mkdir -p ${RPM_BUILD_ROOT}%{_udevrulesdir} -mv ${RPM_BUILD_ROOT}/lib/udev/rules.d/* ${RPM_BUILD_ROOT}%{_udevrulesdir} -rm -rf ${RPM_BUILD_ROOT}/lib/udev - %find_lang gdm --with-gnome %pre @@ -321,6 +317,9 @@ fi %{_libdir}/pkgconfig/gdm-pam-extensions.pc %changelog +* Sat Sep 29 2018 Kalev Lember - 1:3.30.1-1 +- Update to 3.30.1 + * Fri Sep 07 2018 Kalev Lember - 1:3.30.0-3 - Rebuilt against fixed atk (#1626575) diff --git a/sources b/sources index 063d9fd..eb04f70 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gdm-3.30.0.tar.xz) = 829d6a99f17231691907f2bd230b3dc5a211370cb99b4f83865a14f5fc70e91f1f3551b341515bbc88ba32b9e2e091e72a2026c962e4b3a1a35a668c627a1413 +SHA512 (gdm-3.30.1.tar.xz) = 60e830ea76fac5e8cf275993e42cac9f342bf0eca86a9463fe5317a8b5e6dcf40672f466970c26fb4fe93a5fdf84c6e38cd78e9e2d172b2ca9ba038438c16f16