diff --git a/gdm-3.28.2.tar.xz b/gdm-3.28.2.tar.xz deleted file mode 100644 index f9260ae..0000000 --- a/gdm-3.28.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6041a07fbbd28f6e55a15abea6fb650c8ab6988df557da320bd6983e4009b571 -size 1122352 diff --git a/gdm-3.32.0.tar.xz b/gdm-3.32.0.tar.xz new file mode 100644 index 0000000..ce00d71 --- /dev/null +++ b/gdm-3.32.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:643db0c8c5089a96282b4c259b8823ca6dfad1ead6f2d0025d1c1211d36fd78b +size 1262344 diff --git a/gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch b/gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch index a44a384..b4d3b87 100644 --- a/gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch +++ b/gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch @@ -9,29 +9,28 @@ X server will be started under root. The same way as if gdm was built with This allows system to run X server under root if and only-if necessary. --- - daemon/gdm-local-display-factory.c | 10 ++++++---- - daemon/gdm-session.c | 13 +++++++++---- - 2 files changed, 15 insertions(+), 8 deletions(-) - -diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c -index b29f5ac5..7c687cf6 100644 ---- a/daemon/gdm-local-display-factory.c -+++ b/daemon/gdm-local-display-factory.c -@@ -207,8 +207,11 @@ gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *fact +diff -urp gdm-3.32.0.orig/daemon/gdm-local-display-factory.c gdm-3.32.0/daemon/gdm-local-display-factory.c +--- gdm-3.32.0.orig/daemon/gdm-local-display-factory.c 2019-03-05 09:10:56.000000000 -0600 ++++ gdm-3.32.0/daemon/gdm-local-display-factory.c 2019-03-19 11:31:18.093838985 -0500 +@@ -231,11 +231,12 @@ gdm_local_display_factory_create_transie + g_debug ("GdmLocalDisplayFactory: Creating transient display"); - #ifdef ENABLE_USER_DISPLAY_SERVER +-#ifdef ENABLE_USER_DISPLAY_SERVER - display = gdm_local_display_new (); +- if (gdm_local_display_factory_use_wayland ()) +- g_object_set (G_OBJECT (display), "session-type", "wayland", NULL); -#else + if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL) { + display = gdm_local_display_new (); ++ if (gdm_local_display_factory_use_wayland ()) ++ g_object_set (G_OBJECT (display), "session-type", "wayland", NULL); + } -+#endif + if (display == NULL) { guint32 num; -@@ -216,7 +219,6 @@ gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *fact +@@ -243,7 +244,6 @@ gdm_local_display_factory_create_transie display = gdm_legacy_display_new (num); } @@ -39,7 +38,7 @@ index b29f5ac5..7c687cf6 100644 g_object_set (display, "seat-id", "seat0", -@@ -369,7 +371,7 @@ create_display (GdmLocalDisplayFactory *factory, +@@ -468,7 +468,7 @@ create_display (GdmLocalDisplayFactory * g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); #ifdef ENABLE_USER_DISPLAY_SERVER @@ -48,13 +47,12 @@ index b29f5ac5..7c687cf6 100644 display = gdm_local_display_new (); if (session_type != NULL) { g_object_set (G_OBJECT (display), "session-type", session_type, NULL); -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 610ebcd0..cb37ed4e 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -360,7 +360,11 @@ get_system_session_dirs (GdmSession *self) +diff -urp gdm-3.32.0.orig/daemon/gdm-session.c gdm-3.32.0/daemon/gdm-session.c +--- gdm-3.32.0.orig/daemon/gdm-session.c 2019-03-05 09:10:56.000000000 -0600 ++++ gdm-3.32.0/daemon/gdm-session.c 2019-03-19 10:42:39.493665629 -0500 +@@ -371,7 +371,11 @@ get_system_session_dirs (GdmSession *sel #ifdef ENABLE_WAYLAND_SUPPORT - if (!self->priv->ignore_wayland) { + if (!self->ignore_wayland) { #ifdef ENABLE_USER_DISPLAY_SERVER - g_array_prepend_val (search_array, wayland_search_dir); + if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL) { @@ -62,10 +60,10 @@ index 610ebcd0..cb37ed4e 100644 + } else { + g_array_append_val (search_array, wayland_search_dir); + } - #else - g_array_append_val (search_array, wayland_search_dir); - #endif -@@ -3147,8 +3151,10 @@ gdm_session_get_display_mode (GdmSession *self) + + for (i = 0; system_data_dirs[i]; i++) { + gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); +@@ -3258,8 +3262,10 @@ gdm_session_get_display_mode (GdmSession * right now. It will die with an error if logind devices * are paused when handed out. */ @@ -78,7 +76,7 @@ index 610ebcd0..cb37ed4e 100644 #ifdef ENABLE_WAYLAND_SUPPORT /* Wayland sessions are for now assumed to run in a -@@ -3159,7 +3165,6 @@ gdm_session_get_display_mode (GdmSession *self) +@@ -3270,7 +3276,6 @@ gdm_session_get_display_mode (GdmSession } #endif return GDM_SESSION_DISPLAY_MODE_REUSE_VT; @@ -86,6 +84,3 @@ index 610ebcd0..cb37ed4e 100644 } void --- -2.13.6 - diff --git a/gdm-default-wm.patch b/gdm-default-wm.patch index af512ad..742e29e 100644 --- a/gdm-default-wm.patch +++ b/gdm-default-wm.patch @@ -1,7 +1,7 @@ -Index: gdm-3.19.2/daemon/gdm-session.c +Index: gdm-3.31.91/daemon/gdm-session.c =================================================================== ---- gdm-3.19.2.orig/daemon/gdm-session.c -+++ gdm-3.19.2/daemon/gdm-session.c +--- gdm-3.31.91.orig/daemon/gdm-session.c 2019-02-21 20:44:22.000000000 +0100 ++++ gdm-3.31.91/daemon/gdm-session.c 2019-02-27 07:46:21.417932330 +0100 @@ -43,6 +43,8 @@ #include #include @@ -11,18 +11,18 @@ Index: gdm-3.19.2/daemon/gdm-session.c #include "gdm-session.h" #include "gdm-session-glue.h" #include "gdm-dbus-util.h" -@@ -523,6 +525,14 @@ get_fallback_session_name (GdmSession *s +@@ -562,6 +564,14 @@ get_fallback_session_name (GdmSession *s } } + name = gdm_sysconfig_load_value ("/etc/sysconfig/windowmanager", "DEFAULT_WM"); + if (name && get_session_command_for_name (self, name, NULL)) { -+ g_free (self->priv->fallback_session_name); -+ self->priv->fallback_session_name = name; ++ g_free (self->fallback_session_name); ++ self->fallback_session_name = name; + goto out; + } + g_free (name); + name = g_strdup ("gnome"); if (get_session_command_for_name (self, name, NULL)) { - g_free (self->priv->fallback_session_name); + g_free (self->fallback_session_name); diff --git a/gdm-disable-wayland-on-unsupported-chipsets.patch b/gdm-disable-wayland-on-unsupported-chipsets.patch deleted file mode 100644 index 10c07a4..0000000 --- a/gdm-disable-wayland-on-unsupported-chipsets.patch +++ /dev/null @@ -1,23 +0,0 @@ -Index: b/data/61-gdm.rules -=================================================================== ---- a/data/61-gdm.rules 2018-02-20 02:16:32.000000000 +0800 -+++ b/data/61-gdm.rules 2018-04-08 20:31:18.860133428 +0800 -@@ -1,2 +1,17 @@ --# disable Wayland on Cirrus chipsets -+# Disable Wayland on specific chipsets -+ -+# Cirrus Logic - ATTR{vendor}=="0x1013", ATTR{device}=="0x00b8", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ -+# Matrox Electronics Systems Ltd. MGA G200 server engines -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0522", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0524", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0530", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0532", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0533", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0534", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0536", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0538", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" -+ -+# ASPEED Technology, Inc. -+ATTR{vendor}=="0x1a03", ATTR{device}=="0x2000", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" diff --git a/gdm-fails-to-restart-gnome-shell.patch b/gdm-fails-to-restart-gnome-shell.patch index 9a716d3..eace585 100644 --- a/gdm-fails-to-restart-gnome-shell.patch +++ b/gdm-fails-to-restart-gnome-shell.patch @@ -1,11 +1,10 @@ -diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index ab84ba4..e1d0996 100644 ---- a/daemon/gdm-display.c -+++ b/daemon/gdm-display.c -@@ -673,7 +673,7 @@ gdm_display_unmanage (GdmDisplay *self) +diff -urp gdm-3.32.0.orig/daemon/gdm-display.c gdm-3.32.0/daemon/gdm-display.c +--- gdm-3.32.0.orig/daemon/gdm-display.c 2019-03-05 09:10:56.000000000 -0600 ++++ gdm-3.32.0/daemon/gdm-display.c 2019-03-18 17:17:12.220630463 -0500 +@@ -696,7 +696,7 @@ gdm_display_unmanage (GdmDisplay *self) } - elapsed = g_timer_elapsed (self->priv->server_timer, NULL); + elapsed = g_timer_elapsed (priv->server_timer, NULL); - if (elapsed < 3) { + if (elapsed < 10) { g_warning ("GdmDisplay: display lasted %lf seconds", elapsed); diff --git a/gdm-ignore-duplicate-session.patch b/gdm-ignore-duplicate-session.patch deleted file mode 100644 index bc389be..0000000 --- a/gdm-ignore-duplicate-session.patch +++ /dev/null @@ -1,56 +0,0 @@ -Index: gdm-3.26.2.1/libgdm/gdm-sessions.c -=================================================================== ---- gdm-3.26.2.1.orig/libgdm/gdm-sessions.c -+++ gdm-3.26.2.1/libgdm/gdm-sessions.c -@@ -202,6 +202,34 @@ collect_sessions_from_directory (const c - g_dir_close (dir); - } - -+static gboolean -+find_translated_name (const char *id, -+ GdmSessionFile *session, -+ char *translated_name) -+{ -+ if (g_str_equal (id, "default")) -+ return FALSE; -+ -+ return g_str_equal (session->translated_name, translated_name) ? TRUE : FALSE; -+} -+ -+static void -+remove_duplicated_session_name (void) -+{ -+ GdmSessionFile *session; -+ char *translated_name = NULL; -+ -+ session = g_hash_table_lookup (gdm_available_sessions_map, "default"); -+ if (session) -+ translated_name = session->translated_name; -+ -+ if (translated_name) { -+ session = g_hash_table_find (gdm_available_sessions_map, (GHRFunc)find_translated_name, translated_name); -+ if (session) -+ g_hash_table_remove (gdm_available_sessions_map, session->id); -+ } -+} -+ - static void - collect_sessions (void) - { -@@ -233,6 +261,7 @@ collect_sessions (void) - #ifdef ENABLE_WAYLAND_SUPPORT - #ifdef ENABLE_USER_DISPLAY_SERVER - if (g_getenv ("WAYLAND_DISPLAY") == NULL && g_getenv ("RUNNING_UNDER_GDM") != NULL) { -+ remove_duplicated_session_name(); - return; - } - #endif -@@ -241,6 +270,8 @@ collect_sessions (void) - collect_sessions_from_directory (wayland_search_dirs [i]); - } - #endif -+ -+ remove_duplicated_session_name(); - } - - /** diff --git a/gdm-kill-user-session.patch b/gdm-kill-user-session.patch new file mode 100644 index 0000000..5e5243b --- /dev/null +++ b/gdm-kill-user-session.patch @@ -0,0 +1,264 @@ +diff --git a/daemon/gdm-display-store.c b/daemon/gdm-display-store.c +index fd24334..8c1ae25 100644 +--- a/daemon/gdm-display-store.c ++++ b/daemon/gdm-display-store.c +@@ -136,6 +136,35 @@ typedef struct + gpointer user_data; + } FindClosure; + ++static void ++copy_func (StoredDisplay *stored_display, ++ FindClosure *closure) ++{ ++ closure->user_data = g_list_append (closure->user_data, ++ stored_display->display); ++} ++ ++GList * ++gdm_display_store_get_displays (GdmDisplayStore *store) ++{ ++ GList *displays = NULL; ++ GList *store_displays = NULL; ++ FindClosure closure; ++ g_return_val_if_fail (store != NULL, NULL); ++ ++ store_displays = g_hash_table_get_values (store->priv->displays); ++ ++ closure.user_data = displays; ++ ++ g_list_foreach (store_displays, ++ (GFunc) copy_func, ++ &closure); ++ displays = closure.user_data; ++ ++ g_list_free (store_displays); ++ return displays; ++} ++ + static gboolean + find_func (const char *id, + StoredDisplay *stored_display, +diff --git a/daemon/gdm-display-store.h b/daemon/gdm-display-store.h +index 0aff8ee..cd69518 100644 +--- a/daemon/gdm-display-store.h ++++ b/daemon/gdm-display-store.h +@@ -86,6 +86,8 @@ GdmDisplay * gdm_display_store_find (GdmDisplayStore + GdmDisplayStoreFunc predicate, + gpointer user_data); + ++GList * gdm_display_store_get_displays (GdmDisplayStore *store); ++ + + G_END_DECLS + +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index cb9f662..a971ba3 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -2703,9 +2703,7 @@ unexport_display (const char *id, + } + + static void +-finish_display (const char *id, +- GdmDisplay *display, +- GdmManager *manager) ++finish_display (GdmDisplay *display) + { + gdm_display_stop_greeter_session (display); + if (gdm_display_get_status (display) == GDM_DISPLAY_MANAGED) +@@ -2717,6 +2715,7 @@ static void + gdm_manager_dispose (GObject *object) + { + GdmManager *manager; ++ GList *displays = NULL; + + g_return_if_fail (object != NULL); + g_return_if_fail (GDM_IS_MANAGER (object)); +@@ -2758,9 +2757,11 @@ gdm_manager_dispose (GObject *object) + g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (manager)); + } + +- gdm_display_store_foreach (manager->priv->display_store, +- (GdmDisplayStoreFunc) finish_display, +- manager); ++ displays = gdm_display_store_get_displays (manager->priv->display_store); ++ g_list_foreach (displays, ++ (GFunc) finish_display, ++ NULL); ++ g_list_free (displays); + + gdm_display_store_clear (manager->priv->display_store); + +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 06e5a6a..07642cd 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + + #include + +@@ -181,6 +182,8 @@ struct GdmSessionWorkerPrivate + GdmSessionSettings *user_settings; + + GDBusMethodInvocation *pending_invocation; ++ ++ GMainLoop *main_loop; + }; + + #ifdef SUPPORTS_PAM_EXTENSIONS +@@ -197,6 +200,7 @@ enum { + PROP_0, + PROP_SERVER_ADDRESS, + PROP_IS_REAUTH_SESSION, ++ PROP_MAIN_LOOP, + }; + + static void gdm_session_worker_class_init (GdmSessionWorkerClass *klass); +@@ -2455,6 +2459,13 @@ gdm_session_worker_set_is_reauth_session (GdmSessionWorker *worker, + worker->priv->is_reauth_session = is_reauth_session; + } + ++static void ++gdm_session_worker_set_main_loop (GdmSessionWorker *worker, ++ GMainLoop *main_loop) ++{ ++ worker->priv->main_loop = main_loop; ++} ++ + static void + gdm_session_worker_set_property (GObject *object, + guint prop_id, +@@ -2472,6 +2483,9 @@ gdm_session_worker_set_property (GObject *object, + case PROP_IS_REAUTH_SESSION: + gdm_session_worker_set_is_reauth_session (self, g_value_get_boolean (value)); + break; ++ case PROP_MAIN_LOOP: ++ gdm_session_worker_set_main_loop (self, g_value_get_pointer (value)); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -2495,6 +2509,9 @@ gdm_session_worker_get_property (GObject *object, + case PROP_IS_REAUTH_SESSION: + g_value_set_boolean (value, self->priv->is_reauth_session); + break; ++ case PROP_MAIN_LOOP: ++ g_value_set_pointer (value, self->priv->main_loop); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -2764,6 +2781,16 @@ do_open_session (GdmSessionWorker *worker) + worker->priv->pending_invocation = NULL; + } + ++static gboolean ++on_shutdown_signal_cb (gpointer user_data) ++{ ++ GMainLoop *mainloop = user_data; ++ ++ g_main_loop_quit (mainloop); ++ ++ return FALSE; ++} ++ + static void + do_start_session (GdmSessionWorker *worker) + { +@@ -2773,6 +2800,9 @@ do_start_session (GdmSessionWorker *worker) + error = NULL; + res = gdm_session_worker_start_session (worker, &error); + if (res) { ++ g_unix_signal_add (SIGTERM, on_shutdown_signal_cb, worker->priv->main_loop); ++ g_unix_signal_add (SIGINT, on_shutdown_signal_cb, worker->priv->main_loop); ++ + gdm_dbus_worker_complete_start_program (GDM_DBUS_WORKER (worker), + worker->priv->pending_invocation, + worker->priv->child_pid); +@@ -3471,6 +3501,13 @@ gdm_session_worker_class_init (GdmSessionWorkerClass *klass) + "is reauth session", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); ++ ++ g_object_class_install_property (object_class, ++ PROP_MAIN_LOOP, ++ g_param_spec_pointer ("main-loop", ++ "main loop", ++ "main loop", ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + } + + static void +@@ -3561,13 +3598,15 @@ gdm_session_worker_finalize (GObject *object) + + GdmSessionWorker * + gdm_session_worker_new (const char *address, +- gboolean is_reauth_session) ++ gboolean is_reauth_session, ++ GMainLoop *main_loop) + { + GObject *object; + + object = g_object_new (GDM_TYPE_SESSION_WORKER, + "server-address", address, + "is-reauth-session", is_reauth_session, ++ "main-loop", main_loop, + NULL); + + return GDM_SESSION_WORKER (object); +diff --git a/daemon/gdm-session-worker.h b/daemon/gdm-session-worker.h +index 5603e80..24979e4 100644 +--- a/daemon/gdm-session-worker.h ++++ b/daemon/gdm-session-worker.h +@@ -51,6 +51,7 @@ typedef struct + GType gdm_session_worker_get_type (void); + + GdmSessionWorker * gdm_session_worker_new (const char *server_address, +- gboolean is_for_reauth) G_GNUC_MALLOC; ++ gboolean is_for_reauth, ++ GMainLoop *main_loop) G_GNUC_MALLOC; + G_END_DECLS + #endif /* GDM_SESSION_WORKER_H */ +diff --git a/daemon/session-worker-main.c b/daemon/session-worker-main.c +index 4a3a8eb..da3e7c6 100644 +--- a/daemon/session-worker-main.c ++++ b/daemon/session-worker-main.c +@@ -64,12 +64,6 @@ is_debug_set (void) + return debug; + } + +-static void +-on_sigterm_cb (int signal_number) +-{ +- _exit (EXIT_SUCCESS); +-} +- + int + main (int argc, + char **argv) +@@ -83,8 +77,6 @@ main (int argc, + { NULL } + }; + +- signal (SIGTERM, on_sigterm_cb); +- + bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); + textdomain (GETTEXT_PACKAGE); + setlocale (LC_ALL, ""); +@@ -120,10 +112,10 @@ main (int argc, + + is_for_reauth = g_getenv ("GDM_SESSION_FOR_REAUTH") != NULL; + +- worker = gdm_session_worker_new (address, is_for_reauth); +- + main_loop = g_main_loop_new (NULL, FALSE); + ++ worker = gdm_session_worker_new (address, is_for_reauth, main_loop); ++ + g_unix_signal_add (SIGUSR1, on_sigusr1_cb, NULL); + + g_main_loop_run (main_loop); diff --git a/gdm-plymouth-vt1.patch b/gdm-plymouth-vt1.patch deleted file mode 100644 index 7ac2055..0000000 --- a/gdm-plymouth-vt1.patch +++ /dev/null @@ -1,65 +0,0 @@ -Index: gdm-3.26.1/daemon/main.c -=================================================================== ---- gdm-3.26.1.orig/daemon/main.c -+++ gdm-3.26.1/daemon/main.c -@@ -33,6 +33,8 @@ - #include - #include - #include -+#include -+#include - - #include - #include -@@ -302,6 +304,23 @@ block_sigusr1 (void) - sigprocmask (SIG_BLOCK, &mask, NULL); - } - -+static void -+jump_to_vt (int vt_number) -+{ -+ int fd; -+ -+ fd = open ("/dev/tty0", O_RDWR | O_NOCTTY); -+ if (ioctl (fd, VT_ACTIVATE, vt_number) < 0) { -+ g_debug ("Gdm: couldn't initiate jump to VT %d: %m", -+ vt_number); -+ } else if (ioctl (fd, VT_WAITACTIVE, vt_number) < 0) { -+ g_debug ("Gdm: couldn't finalize jump to VT %d: %m", -+ vt_number); -+ } -+ close(fd); -+} -+ -+ - int - main (int argc, - char **argv) -@@ -310,6 +329,7 @@ main (int argc, - GOptionContext *context; - GError *error = NULL; - gboolean res; -+ gboolean plymouth_running = FALSE; - static gboolean do_timed_exit = FALSE; - static gboolean print_version = FALSE; - static gboolean fatal_warnings = FALSE; -@@ -383,6 +403,8 @@ main (int argc, - - g_chdir ("/"); - -+ plymouth_running = g_access("/run/plymouth/pid", F_OK) == 0; -+ - main_loop = g_main_loop_new (NULL, FALSE); - - g_unix_signal_add (SIGTERM, on_shutdown_signal_cb, main_loop); -@@ -405,6 +427,10 @@ main (int argc, - - g_main_loop_unref (main_loop); - -+ if (plymouth_running) { -+ jump_to_vt (1); -+ } -+ - return EXIT_SUCCESS; - } - diff --git a/gdm-remove-duplicate-sessions.patch b/gdm-remove-duplicate-sessions.patch new file mode 100644 index 0000000..155309f --- /dev/null +++ b/gdm-remove-duplicate-sessions.patch @@ -0,0 +1,99 @@ +diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c +index afbc5c0..30eaa14 100644 +--- a/libgdm/gdm-sessions.c ++++ b/libgdm/gdm-sessions.c +@@ -111,14 +111,6 @@ key_file_is_relevant (GKeyFile *key_file) + return TRUE; + } + +-static gboolean +-find_session_with_same_name (const char *id, +- GdmSessionFile *session, +- const char *translated_name) +-{ +- return g_strcmp0 (session->translated_name, translated_name) == 0; +-} +- + static void + load_session_file (const char *id, + const char *path) +@@ -126,7 +118,7 @@ load_session_file (const char *id, + GKeyFile *key_file; + GError *error; + gboolean res; +- GdmSessionFile *session, *session_with_same_name; ++ GdmSessionFile *session; + + key_file = g_key_file_new (); + +@@ -162,13 +154,6 @@ load_session_file (const char *id, + session->translated_name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Name", NULL, NULL); + session->translated_comment = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Comment", NULL, NULL); + +- session_with_same_name = g_hash_table_find (gdm_available_sessions_map, +- (GHRFunc) find_session_with_same_name, +- session->translated_name); +- +- if (session_with_same_name != NULL) +- g_hash_table_remove (gdm_available_sessions_map, session_with_same_name->id); +- + g_hash_table_insert (gdm_available_sessions_map, + g_strdup (id), + session); +@@ -176,6 +161,29 @@ load_session_file (const char *id, + g_key_file_free (key_file); + } + ++static gboolean ++remove_duplicate_sessions (gpointer key, ++ gpointer value, ++ gpointer user_data) ++{ ++ gboolean already_known; ++ const char *id; ++ GHashTable *names_seen_before; ++ GdmSessionFile *session; ++ ++ id = (const char *) key; ++ names_seen_before = (GHashTable *) user_data; ++ session = (GdmSessionFile *) value; ++ already_known = !g_hash_table_add (names_seen_before, session->translated_name); ++ ++ if (already_known) ++ g_debug ("GdmSession: Removing %s (%s) as we already have a session by this name", ++ session->id, ++ session->path); ++ ++ return already_known; ++} ++ + static void + collect_sessions_from_directory (const char *dirname) + { +@@ -230,6 +238,7 @@ collect_sessions_from_directory (const char *dirname) + static void + collect_sessions (void) + { ++ g_autoptr(GHashTable) names_seen_before = NULL; + GArray *xorg_search_array = NULL; + GArray *wayland_search_array = NULL; + gchar *session_dir = NULL; +@@ -242,6 +251,8 @@ collect_sessions (void) + NULL + }; + ++ names_seen_before = g_hash_table_new (g_str_hash, g_str_equal); ++ + xorg_search_array = g_array_new (TRUE, TRUE, sizeof (char *)); + + const gchar * const *system_data_dirs = g_get_system_data_dirs (); +@@ -294,6 +305,9 @@ collect_sessions (void) + + g_array_free (wayland_search_array, TRUE); + #endif ++ g_hash_table_foreach_remove (gdm_available_sessions_map, ++ remove_duplicate_sessions, ++ names_seen_before); + } + + /** diff --git a/gdm-s390-not-require-g-s-d_wacom.patch b/gdm-s390-not-require-g-s-d_wacom.patch new file mode 100644 index 0000000..66145cb --- /dev/null +++ b/gdm-s390-not-require-g-s-d_wacom.patch @@ -0,0 +1,9 @@ +Index: gdm-3.32.0/data/gnome-login.session.in +=================================================================== +--- gdm-3.32.0.orig/data/gnome-login.session.in ++++ gdm-3.32.0/data/gnome-login.session.in +@@ -1,3 +1,3 @@ + [GNOME Session] + Name=Display Manager +-RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings; ++RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.XSettings; diff --git a/gdm-suse-xsession.patch b/gdm-suse-xsession.patch index 776d7b1..353d02e 100644 --- a/gdm-suse-xsession.patch +++ b/gdm-suse-xsession.patch @@ -1,7 +1,7 @@ -Index: gdm-2.29.92/data/Init.in +Index: gdm-3.31.91/data/Init.in =================================================================== ---- gdm-2.29.92.orig/data/Init.in -+++ gdm-2.29.92/data/Init.in +--- gdm-3.31.91.orig/data/Init.in 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/data/Init.in 2019-02-27 07:46:21.401932235 +0100 @@ -1,4 +1,9 @@ #!/bin/sh + @@ -12,10 +12,10 @@ Index: gdm-2.29.92/data/Init.in # Stolen from the debian kdm setup, aren't I sneaky # Plus a lot of fun stuff added # -George -Index: gdm-2.29.92/data/PostSession.in +Index: gdm-3.31.91/data/PostSession.in =================================================================== ---- gdm-2.29.92.orig/data/PostSession.in -+++ gdm-2.29.92/data/PostSession.in +--- gdm-3.31.91.orig/data/PostSession.in 2018-10-12 23:05:26.000000000 +0200 ++++ gdm-3.31.91/data/PostSession.in 2019-02-27 07:46:21.401932235 +0100 @@ -1,3 +1,7 @@ #!/bin/sh @@ -24,10 +24,10 @@ Index: gdm-2.29.92/data/PostSession.in +fi + exit 0 -Index: gdm-2.29.92/data/Xsession.in +Index: gdm-3.31.91/data/Xsession.in =================================================================== ---- gdm-2.29.92.orig/data/Xsession.in -+++ gdm-2.29.92/data/Xsession.in +--- gdm-3.31.91.orig/data/Xsession.in 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/data/Xsession.in 2019-02-27 07:46:21.401932235 +0100 @@ -1,4 +1,9 @@ #!@XSESSION_SHELL@ + @@ -38,10 +38,10 @@ Index: gdm-2.29.92/data/Xsession.in # # This is SORT OF LIKE an X session, but not quite. You get a command as the # first argument (it could be multiple words, so run it with "eval"). As a -Index: gdm-2.29.92/data/PreSession.in +Index: gdm-3.31.91/data/PreSession.in =================================================================== ---- gdm-2.29.92.orig/data/PreSession.in -+++ gdm-2.29.92/data/PreSession.in +--- gdm-3.31.91.orig/data/PreSession.in 2018-10-12 23:05:26.000000000 +0200 ++++ gdm-3.31.91/data/PreSession.in 2019-02-27 07:46:21.401932235 +0100 @@ -6,4 +6,8 @@ # # Note that output goes into the .xsession-errors file for easy debugging diff --git a/gdm-switch-to-tty1.patch b/gdm-switch-to-tty1.patch new file mode 100644 index 0000000..43f74aa --- /dev/null +++ b/gdm-switch-to-tty1.patch @@ -0,0 +1,68 @@ +Index: gdm-3.26.2.1/daemon/main.c +=================================================================== +--- gdm-3.26.2.1.orig/daemon/main.c ++++ gdm-3.26.2.1/daemon/main.c +@@ -61,6 +61,31 @@ static GdmSettings *settings = + static uid_t gdm_uid = -1; + static gid_t gdm_gid = -1; + ++#define SHELLSCRIPT "\ ++/bin/bash -c \ ++\'PROCESS=\"X Xwayland\"\;\ ++R=$(pidof $PROCESS)\;\ ++while [ $? == 0 ]\;\ ++do sleep 1\;\ ++ R=$(pidof $PROCESS)\;\ ++done\;\ ++systemd-cat echo Switch to tty1 Successfully\;\ ++/usr/bin/chvt 1\'\ ++" ++ ++static void ++jump_to_tty1 () ++{ ++ g_autoptr(GError) error = NULL; ++ ++ g_debug ("Spawn jump to tty1 process"); ++ g_spawn_command_line_async (SHELLSCRIPT, ++ &error); ++ ++ if (error != NULL) ++ g_warning ("Error chvt to tty1: %s", error->message); ++} ++ + static gboolean + timed_exit_cb (GMainLoop *loop) + { +@@ -263,6 +288,12 @@ on_shutdown_signal_cb (gpointer user_dat + return FALSE; + } + ++static void ++on_signal_term_cb () ++{ ++ g_debug ("Received SIGTERM again"); ++} ++ + static gboolean + on_sighup_cb (gpointer user_data) + { +@@ -396,6 +427,7 @@ main (int argc, + g_main_loop_run (main_loop); + + g_debug ("GDM finished, cleaning up..."); ++ signal (SIGTERM, on_signal_term_cb); + + g_clear_object (&manager); + g_clear_object (&settings); +@@ -403,6 +435,10 @@ main (int argc, + gdm_settings_direct_shutdown (); + gdm_log_shutdown (); + ++ jump_to_tty1 (); ++ ++ g_debug ("GDM finished"); ++ + g_main_loop_unref (main_loop); + + return EXIT_SUCCESS; diff --git a/gdm-sysconfig-settings.patch b/gdm-sysconfig-settings.patch index db9c3f2..de9e342 100644 --- a/gdm-sysconfig-settings.patch +++ b/gdm-sysconfig-settings.patch @@ -1,8 +1,8 @@ -Index: b/common/Makefile.am +Index: gdm-3.31.91/common/Makefile.am =================================================================== ---- a/common/Makefile.am 2018-01-19 20:09:39.075556951 +0800 -+++ b/common/Makefile.am 2018-01-19 20:10:57.572967891 +0800 -@@ -52,11 +52,15 @@ +--- gdm-3.31.91.orig/common/Makefile.am 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/common/Makefile.am 2019-02-27 07:44:47.645367708 +0100 +@@ -46,11 +46,15 @@ libgdmcommon_la_SOURCES = \ gdm-settings-backend.h \ gdm-settings-desktop-backend.c \ gdm-settings-desktop-backend.h \ @@ -17,11 +17,11 @@ Index: b/common/Makefile.am + gdm-sysconfig.h \ gdm-log.h \ gdm-log.c \ - $(MKDTEMP_FILES) \ -Index: b/common/gdm-settings-system-backend.c + $(NULL) +Index: gdm-3.31.91/common/gdm-settings-system-backend.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ b/common/gdm-settings-system-backend.c 2018-01-19 20:10:57.572967891 +0800 ++++ gdm-3.31.91/common/gdm-settings-system-backend.c 2019-02-27 07:44:47.645367708 +0100 @@ -0,0 +1,369 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -392,10 +392,10 @@ Index: b/common/gdm-settings-system-backend.c + + return GDM_SETTINGS_BACKEND (object); +} -Index: b/common/gdm-settings-system-backend.h +Index: gdm-3.31.91/common/gdm-settings-system-backend.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ b/common/gdm-settings-system-backend.h 2018-01-19 20:10:57.572967891 +0800 ++++ gdm-3.31.91/common/gdm-settings-system-backend.h 2019-02-27 07:44:47.645367708 +0100 @@ -0,0 +1,56 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -453,31 +453,31 @@ Index: b/common/gdm-settings-system-backend.h +G_END_DECLS + +#endif /* __GDM_SETTINGS_SYSTEM_BACKEND_H */ -Index: b/common/gdm-settings.c +Index: gdm-3.31.91/common/gdm-settings.c =================================================================== ---- a/common/gdm-settings.c 2018-01-19 20:10:02.587982412 +0800 -+++ b/common/gdm-settings.c 2018-01-19 20:12:09.186231713 +0800 +--- gdm-3.31.91.orig/common/gdm-settings.c 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/common/gdm-settings.c 2019-02-27 07:44:47.645367708 +0100 @@ -38,6 +38,7 @@ #include "gdm-settings.h" #include "gdm-settings-desktop-backend.h" +#include "gdm-settings-system-backend.h" - #define GDM_SETTINGS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_SETTINGS, GdmSettingsPrivate)) - -@@ -198,6 +199,8 @@ + struct _GdmSettings + { +@@ -194,6 +195,8 @@ gdm_settings_init (GdmSettings *settings if (backend) - settings->priv->backends = g_list_prepend (NULL, backend); + settings->backends = g_list_prepend (NULL, backend); -+ settings->priv->backends = g_list_prepend (settings->priv->backends, gdm_settings_system_backend_new ()); ++ settings->backends = g_list_prepend (settings->backends, gdm_settings_system_backend_new ()); + backend = gdm_settings_desktop_backend_new (GDM_RUNTIME_CONF); if (backend) - settings->priv->backends = g_list_prepend (settings->priv->backends, backend); -Index: b/common/gdm-sysconfig.c + settings->backends = g_list_prepend (settings->backends, backend); +Index: gdm-3.31.91/common/gdm-sysconfig.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ b/common/gdm-sysconfig.c 2018-01-19 20:10:57.572967891 +0800 ++++ gdm-3.31.91/common/gdm-sysconfig.c 2019-02-27 07:44:47.645367708 +0100 @@ -0,0 +1,484 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -963,10 +963,10 @@ Index: b/common/gdm-sysconfig.c + g_strfreev (lines); + return result; +} -Index: b/common/gdm-sysconfig.h +Index: gdm-3.31.91/common/gdm-sysconfig.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ b/common/gdm-sysconfig.h 2018-01-19 20:10:57.572967891 +0800 ++++ gdm-3.31.91/common/gdm-sysconfig.h 2019-02-27 07:44:47.645367708 +0100 @@ -0,0 +1,43 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -1011,10 +1011,10 @@ Index: b/common/gdm-sysconfig.h +G_END_DECLS + +#endif /* __GDM_SYSCONFIG_H */ -Index: b/data/gdm.conf-custom.in +Index: gdm-3.31.91/data/gdm.conf-custom.in =================================================================== ---- a/data/gdm.conf-custom.in 2018-01-19 20:09:39.075556951 +0800 -+++ b/data/gdm.conf-custom.in 2018-01-19 20:10:57.572967891 +0800 +--- gdm-3.31.91.orig/data/gdm.conf-custom.in 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/data/gdm.conf-custom.in 2019-02-27 07:44:47.649367731 +0100 @@ -1,4 +1,7 @@ # GDM configuration storage +# @@ -1022,4 +1022,4 @@ Index: b/data/gdm.conf-custom.in +# [daemon] - # Uncoment the line below to force the login screen to use Xorg + # Uncomment the line below to force the login screen to use Xorg diff --git a/gdm-xauthlocalhostname.patch b/gdm-xauthlocalhostname.patch index 76982f8..52997e9 100644 --- a/gdm-xauthlocalhostname.patch +++ b/gdm-xauthlocalhostname.patch @@ -1,8 +1,8 @@ -Index: gdm-3.26.1/common/gdm-common.c +Index: gdm-3.31.91/common/gdm-common.c =================================================================== ---- gdm-3.26.1.orig/common/gdm-common.c -+++ gdm-3.26.1/common/gdm-common.c -@@ -591,6 +591,8 @@ gdm_get_script_environment (const char * +--- gdm-3.31.91.orig/common/gdm-common.c 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/common/gdm-common.c 2019-02-27 07:47:16.998264608 +0100 +@@ -632,6 +632,8 @@ gdm_get_script_environment (const char * if (display_hostname) { g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (display_hostname)); @@ -11,7 +11,7 @@ Index: gdm-3.26.1/common/gdm-common.c } /* Runs as root */ -@@ -797,3 +799,14 @@ gdm_shell_expand (const char *str, +@@ -843,3 +845,14 @@ gdm_shell_expand (const char *str, } return g_string_free (s, FALSE); } @@ -26,23 +26,23 @@ Index: gdm-3.26.1/common/gdm-common.c + return g_strdup ("localhost"); + } +} -Index: gdm-3.26.1/common/gdm-common.h +Index: gdm-3.31.91/common/gdm-common.h =================================================================== ---- gdm-3.26.1.orig/common/gdm-common.h -+++ gdm-3.26.1/common/gdm-common.h -@@ -54,6 +54,7 @@ const char * gdm_make_temp_dir - char *gdm_generate_random_bytes (gsize size, - GError **error); +--- gdm-3.31.91.orig/common/gdm-common.h 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/common/gdm-common.h 2019-02-27 07:47:16.998264608 +0100 +@@ -56,6 +56,7 @@ char *gdm_generate_random_bytes + gboolean gdm_get_login_window_session_id (const char *seat_id, + char **session_id); gboolean gdm_goto_login_session (GError **error); +char *gdm_gethostname (void); GPtrArray *gdm_get_script_environment (const char *username, const char *display_name, -Index: gdm-3.26.1/daemon/gdm-display-access-file.c +Index: gdm-3.31.91/daemon/gdm-display-access-file.c =================================================================== ---- gdm-3.26.1.orig/daemon/gdm-display-access-file.c -+++ gdm-3.26.1/daemon/gdm-display-access-file.c -@@ -443,13 +443,10 @@ _get_auth_info_for_display (GdmDisplayAc +--- gdm-3.31.91.orig/daemon/gdm-display-access-file.c 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/daemon/gdm-display-access-file.c 2019-02-27 07:47:16.998264608 +0100 +@@ -441,13 +441,10 @@ _get_auth_info_for_display (GdmDisplayAc * * https://bugs.freedesktop.org/show_bug.cgi?id=43425 */ @@ -59,11 +59,11 @@ Index: gdm-3.26.1/daemon/gdm-display-access-file.c } else { *family = FamilyWild; gdm_display_get_remote_hostname (display, address, NULL); -Index: gdm-3.26.1/daemon/gdm-launch-environment.c +Index: gdm-3.31.91/daemon/gdm-launch-environment.c =================================================================== ---- gdm-3.26.1.orig/daemon/gdm-launch-environment.c -+++ gdm-3.26.1/daemon/gdm-launch-environment.c -@@ -201,6 +201,11 @@ build_launch_environment (GdmLaunchEnvir +--- gdm-3.31.91.orig/daemon/gdm-launch-environment.c 2019-02-21 20:44:14.000000000 +0100 ++++ gdm-3.31.91/daemon/gdm-launch-environment.c 2019-02-27 07:47:16.998264608 +0100 +@@ -218,6 +218,11 @@ build_launch_environment (GdmLaunchEnvir g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id)); } @@ -72,18 +72,18 @@ Index: gdm-3.26.1/daemon/gdm-launch-environment.c + g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), gdm_gethostname ()); + } + - g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (g_getenv ("PATH"))); - g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true")); -Index: gdm-3.26.1/daemon/gdm-session.c + + return hash; +Index: gdm-3.31.91/daemon/gdm-session.c =================================================================== ---- gdm-3.26.1.orig/daemon/gdm-session.c -+++ gdm-3.26.1/daemon/gdm-session.c -@@ -2570,6 +2570,14 @@ set_up_session_environment (GdmSession * +--- gdm-3.31.91.orig/daemon/gdm-session.c 2019-02-27 07:47:16.990264560 +0100 ++++ gdm-3.31.91/daemon/gdm-session.c 2019-02-27 07:47:16.998264608 +0100 +@@ -2683,6 +2683,14 @@ set_up_session_environment (GdmSession * } } -+ if (self->priv->display_is_local) { ++ if (self->display_is_local) { + char *hostname = gdm_gethostname (); + gdm_session_set_environment_variable (self, + "XAUTHLOCALHOSTNAME", diff --git a/gdm.changes b/gdm.changes index 8f87c31..a6be383 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,3 +1,261 @@ +------------------------------------------------------------------- +Thu May 23 08:40:18 UTC 2019 - Dominique Leuenberger + +- Fixup gdm.tmpfiles (boo#1135272). + +------------------------------------------------------------------- +Wed May 22 16:39:19 UTC 2019 - Markus S + +- Make systemd service file optional instead of outright deleting it. + +------------------------------------------------------------------- +Wed May 15 01:57:12 UTC 2019 - Xiaoguang Wang + +- Update gdm-switch-to-tty1.patch (bsc#1120307) + +------------------------------------------------------------------- +Thu May 9 08:58:52 UTC 2019 - Xiaoguang Wang + +- New solution for auto login problem(bsc#1116011) + + Drop gdm-revert-commit-39fb4ff.patch + + Add reserveVT.conf file. + +------------------------------------------------------------------- +Sun Apr 28 07:23:07 UTC 2019 - qzheng + +- Add gdm-remove-duplicate-sessions.patch: Backport from upstream + commit 187c8515 and 1795bb31 to remove duplicate sessions once, + after all sessions have been processed (boo#1131625, + glgo#GNOME/gdm#473). + +------------------------------------------------------------------- +Wed Apr 17 03:32:02 UTC 2019 - Yifan Jiang + +- Add gdm-s390-not-require-g-s-d_wacom.patch: Remove the gnome + session runtime requirement of g-s-d Wacom plugin because it is + not build on s390 (bsc#1129412). + +------------------------------------------------------------------- +Wed Apr 17 03:32:02 UTC 2019 - mgorse@suse.com + +- Rebase patches (boo#1128589): + + gdm-sysconfig-settings.patch + + gdm-default-wm.patch + + gdm-xauthlocalhostname.patch + + gdm-kill-user-session.patch + + gdm-fails-to-restart-gnome-shell.patch + + gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch +- Re-enable gdm-switch-to-tty1.patch + +------------------------------------------------------------------- +Wed Apr 17 03:32:01 UTC 2019 - xwang@suse.com + +- Add gdm-revert-commit-39fb4ff.patch: Make auto login successful + (bsc#1116011). + +------------------------------------------------------------------- +Wed Apr 17 03:32:00 UTC 2019 - Bjørn Lie + +- Update to version 3.32.0: + + Stable release version bump. + +------------------------------------------------------------------- +Wed Apr 17 03:31:51 UTC 2019 - Bjørn Lie + +- Update to version 3.31.91: + + Screen lock bypass fix (when timed login is enabled) + (CVE-2019-3825). + + PAM file updates. + + Improved debug logging. + + Keyboard layout fixes. + + Display foreach handling. + + Updated translations. +- Changes from version 3.31.4: + + DOAP file fixes. + + Misc code clean ups. + + Filter out duplicates from session list. + + Updated translations. +- Disable patches needing rebase: + + gdm-sysconfig-settings.patch + + gdm-kill-user-session.patch + + gdm-default-wm.patch + + gdm-xauthlocalhostname.patch + + gdm-switch-to-tty1.patch + + gdm-fails-to-restart-gnome-shell.patch + + gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch +- Rebase patches with quilt, but sadly not enough, hence the + massive disabling of patches. +- Drop gdm-ignore-duplicate-desktop-file.patch: Fixed upstream. +- Drop old hack only needed for upgrades from pre SLED 12 and + openSUSE 10.3. +- Test if we still need to nuke data/61-gdm.rules, aka disable rm. + +------------------------------------------------------------------- +Wed Apr 17 03:30:08 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.30.3: + + Screen lock bypass fix (when timed login is enabled) + (CVE-2019-3825). + + Updated translations. +- Drop gdm-CVE-2019-3825.patch: Fixed upstream. + +------------------------------------------------------------------- +Wed Apr 17 03:30:07 UTC 2019 - xwang@suse.com + +- Add gdm-kill-user-session.patch: Kill all sessions when stopping + gdm service + (bsc#1112294 bsc#1120307 bsc#1113245 glgo#GNOME/gdm#400). +- Add gdm-switch-to-tty1.patch: Switch to tty1 when stopping gdm + service (bsc#1113700). +- Drop gdm-plymouth-vt1.patch: Replaced by gdm-switch-to-tty1.patch + +------------------------------------------------------------------- +Wed Apr 17 03:30:06 UTC 2019 - Felix Zhang + +- Add gdm-CVE-2019-3825.patch: Fix lock screen bypass when timed + login is enabled (boo#1124628, glgo#GNOME/gdm#460, CVE-2019-3825) + +------------------------------------------------------------------- +Wed Apr 17 03:30:05 UTC 2019 - qzheng@suse.com + +- Add gdm-ignore-duplicate-desktop-file.patch to ignore duplicate + desktop file with same "Name" value, including symlinks of + desktop files (bsc#1112834, glgo#GNOME/gdm#437). +- Drop gdm-ignore-duplicate-session.patch, the patch hardcodes + "default.desktop" while LightDM and SDDM treat symlinks as + aliases. + +------------------------------------------------------------------- +Wed Apr 17 03:30:04 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.30.2: + + Fix autologin crash. + + Unlock keyring again on autologin with newerish systemds. + + Fix initial-setup. + + Updated translations. +- Drop patches fixed upstream: + + gdm-fix-autologin.patch. + + gdm-fix-initial-setup.patch. + +------------------------------------------------------------------- +Wed Apr 17 03:30:03 UTC 2019 - luc14n0@linuxmail.org + +- Add upstream patches: + + gdm-fix-autologin.patch: as autologin got reworked and broken, + accessing the proper display variable should fix it. + + gdm-fix-initial-setup.patch: as the initial-setup related post + work is done when stopping the greeter and this stop is delayed + until after the user session is started now, the post work + needs to be done before the user session is started. + +------------------------------------------------------------------- +Wed Apr 17 03:30:02 UTC 2019 - luc14n0@linuxmail.org + +- Re-add still needed 61-gdm.rules removal until glgo#GNOME/gdm#424 + gets fixed. + +------------------------------------------------------------------- +Wed Apr 17 03:30:01 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.30.1: + + Make udev rule configurable. + + Follow up fixes dealing with login screen reaping from two + releases ago. + + Disable wayland on proprietary nvidia machines for now. + + Updated translations. +- Drop gdm-make-udev-dir-configurable.patch: Fixed upstream. + +------------------------------------------------------------------- +Wed Apr 17 03:30:00 UTC 2019 - luc14n0@linuxmail.org + +- Update to version 3.30.0: + + No visible changes for the user. +- Drop gdm-ignore-spurios-SeatNew-signal.patch: fixed upstream. +- Add gdm-make-udev-dir-configurable.patch: Make udev directory + configurable. Patch provided by upstream (glgo#GNOME/gdm!44). +- Rebase gdm-ignore-duplicate-session.patch. + +------------------------------------------------------------------- +Wed Apr 17 03:29:52 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.29.92: + + Search for sessions in XDG_DATA_DIRS. + + Blacklist some more wayland unfriendly hardware. + + Initial setup fix. + + Flicker fix. + + Misc bug fixes. + +------------------------------------------------------------------- +Wed Apr 17 03:29:51 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.29.91: + + CVE-2018-14424: double free fix. + + Follow up fixes dealing with login screen reaping form last + release. + + Add more debug logging. + + Updated translations. +- Drop gdm-CVE-2018-14424.patch: Fixed upstream. +- Add gdm-ignore-spurios-SeatNew-signal.patch: Fix crashes. + +------------------------------------------------------------------- +Wed Apr 17 03:28:04 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.28.4: + + Add missing gdm-disable-wayland binary (fixes VM boots). + + Disable wayland for certain server cards that mutter can't yet + handle sufficiently. +- Drop gdm-disable-wayland-on-unsupported-chipsets.patch: Fixed + upstream. + +------------------------------------------------------------------- +Wed Apr 17 03:28:03 UTC 2019 - luc14n0@linuxmail.org + +- Update to version 3.28.3: + + CVE-2018-14424 - double free fix. + + Lifecycle fixes to libgdm/GdmClient. + + Follow up fixes dealing with login screen reaping from last + release. + + Allow pam modules to use SIGUSR1. + + Set PWD for user session. + + Tell cirrus not to use wayland. + + Updated translations. +- Drop gdm-CVE-2018-14424.patch: fixed upstream. +- Rebase gdm-disable-wayland-on-unsupported-chipsets.patch applying + it against data/61-gdm.rules.in instead of data/61-gdm.rules to + avoid hard coding directories. + +------------------------------------------------------------------- +Wed Apr 17 00:30:00 UTC 2019 - fezhang@suse.com + +- Add gdm-CVE-2018-14424.patch: Pass the display object rather than + the id in the removed signal, fix use-after-free of disposed + transient displays (CVE-2018-14424, glgo#GNOME#gdm#401, + boo#1103737). + +------------------------------------------------------------------- +Wed Apr 17 00:00:00 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 3.29.90: + + Display wayland on certain server machines. + + Lifecycle fixes to libgdm/GdmClient. + + Drop intltool. + + Build goo clean ups + + Kill login screen when not in use. + + Cclean up stale utmp entries. + + Misc fixes. + + Updated translations. +- Rebase gdm-disable-wayland-on-unsupported-chipsets.patch. +- Disable + dm-add-runtime-option-to-disable-starting-X-server-as-u.patch: + Needs rebase. +- Refresh the following patches with quilt: + + gdm-default-wm.patch. + + gdm-fails-to-restart-gnome-shell.patch. + + gdm-ignore-duplicate-session.patch. + + gdm-plymouth-vt1.patch. + + gdm-sysconfig-settings.patch + + gdm-xauthlocalhostname.patch + ------------------------------------------------------------------- Wed Jan 30 16:04:12 UTC 2019 - alarrosa@suse.com @@ -17,6 +275,16 @@ Thu Jul 26 11:52:06 UTC 2018 - dimstar@opensuse.org - Enable pam_keyinit module (boo#1081947). +------------------------------------------------------------------- +Sat Jun 2 02:39:31 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 3.29.1: + + Reference counting fixes for GdmClient- ensure plymouth is quit + properly even when local greeter is disabled. + + Make sure GDM doesn't hang when called with unknown command + line arguments. +- Rebase gdm-xauthlocalhostname.patch. + ------------------------------------------------------------------- Sun May 20 02:19:32 UTC 2018 - luc14n0@linuxmail.org @@ -98,7 +366,7 @@ Mon Mar 12 04:46:37 UTC 2018 - yfjiang@suse.com back GNOME to X, the patch targets to provide a better user experiences for servers with mgag200 graphic chips, which suffer the sluggish keyboard/mouse issues running GNOME on wayland - (bsc#1073550 bsc#1077802). Some of the servers could not + (bsc#1073550, bsc#1077802). Some of the servers could not initiate GNOME in a similar context (bsc#1070933). With the complexity of the problem, Wayland probably needs diff --git a/gdm.spec b/gdm.spec index 41169f4..4c72e91 100644 --- a/gdm.spec +++ b/gdm.spec @@ -20,13 +20,13 @@ # FIXME: need to check what should be done to enable this (at least adapt the pam files). See bnc#699999 %define enable_split_authentication 0 Name: gdm -Version: 3.28.2 +Version: 3.32.0 Release: 0 Summary: The GNOME Display Manager License: GPL-2.0-or-later Group: System/GUI/GNOME URL: https://wiki.gnome.org/Projects/GDM -Source: http://download.gnome.org/sources/gdm/3.28/%{name}-%{version}.tar.xz +Source0: https://download.gnome.org/sources/gdm/3.32/%{name}-%{version}.tar.xz Source1: gdm.pamd Source2: gdm-autologin.pamd Source3: gdm-launch-environment.pamd @@ -40,32 +40,35 @@ Source7: X11-displaymanager-gdm Source8: autogen.sh # Use tmpfiles to create directories under /var to support transactional updates Source9: gdm.tmpfiles -# PATCH-FIX-UPSTREAM gdm-disable-wayland-on-unsupported-chipsets.patch bgo#789081 bgo#794106 boo#1059356 boo#1083609 boo#1088539 fezhang@suse.com -- Disable Wayland on unsupported chipsets -Patch1: gdm-disable-wayland-on-unsupported-chipsets.patch -# WARNING: do not remove/significantly change patch3 without updating the relevant patch in accountsservice too -# PATCH-FIX-OPENSUSE gdm-sysconfig-settings.patch bnc432360 bsc#919723 hpj@novell.com -- Read autologin options from /etc/sysconfig/displaymanager; note that accountsservice has a similar patch (accountsservice-sysconfig.patch) -Patch3: gdm-sysconfig-settings.patch +# Use reserveVT.conf to make autologin user session not to select tty1 +Source10: reserveVT.conf +# WARNING: do not remove/significantly change patch0 without updating the relevant patch in accountsservice too +# PATCH-FIX-OPENSUSE gdm-sysconfig-settings.patch bnc432360 bsc#919723 hpj@novell.com -- Read autologin options from /etc/sysconfig/displaymanager; note that accountsservice has a similar patch (accountsservice-sysconfig.patch) +Patch0: gdm-sysconfig-settings.patch # PATCH-FIX-OPENSUSE gdm-suse-xsession.patch vuntz@novell.com -- Use the /etc/X11/xdm/* scripts -Patch7: gdm-suse-xsession.patch +Patch2: gdm-suse-xsession.patch # PATCH-FIX-OPENSUSE gdm-default-wm.patch vuntz@novell.com -- Use sysconfig to know to which desktop to use by default -Patch34: gdm-default-wm.patch +Patch3: gdm-default-wm.patch # PATCH-FIX-OPENSUSE gdm-xauthlocalhostname.patch bnc#538064 vuntz@novell.com -- Set XAUTHLOCALHOSTNAME to current hostname when we authenticate, for local logins, to avoid issues in the session in case the hostname changes later one. See comment 24 in the bug. -Patch35: gdm-xauthlocalhostname.patch -# PATCH-FIX-OPENSUSE gdm-ignore-duplicate-session.patch xwang@suse.com -- gdm sessions entries duplicate -Patch36: gdm-ignore-duplicate-session.patch -# PATCH-FIX-UPSTREAM gdm-plymouth-vt1.patch bnc#881676 fcrozat@suse.com -- switch to VT1 when quitting if gdm was starting with plymouth running -Patch41: gdm-plymouth-vt1.patch -# PATCH-FIX-UPSTREAM gdm-fails-to-restart-gnome-shell.patch bsc#981976 bgo#769969 tyang@suse.com -- Gdm should stop after a few times fails -Patch42: gdm-fails-to-restart-gnome-shell.patch -# PATCH-FIX-UPSTREAM gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch bnc#1075805 bgo#793255 msrb@suse.com -- Add runtime option to start X under root instead of regular user. Necessary if no DRI drivers are present. -Patch43: gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch +Patch4: gdm-xauthlocalhostname.patch +# PATCH-FIX-OPENSUSE gdm-switch-to-tty1.patch bsc#1113700 xwang@suse.com -- switch to tty1 when stopping gdm service +Patch6: gdm-switch-to-tty1.patch +# PATCH-FIX-UPSTREAM gdm-fails-to-restart-gnome-shell.patch bsc#981976 glgo#GNOME/gdm#266 tyang@suse.com -- Gdm should stop after a few times fails +Patch7: gdm-fails-to-restart-gnome-shell.patch +# PATCH-FIX-OPENSUSE gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch bnc#1075805 bgo#793255 msrb@suse.com -- Add runtime option to start X under root instead of regular user. Necessary if no DRI drivers are present. rejected upstream +Patch8: gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch +# PATCH-FIX-UPSTREAM gdm-kill-user-session.patch bsc#1112294 glgo#GNOME/gdm#400 xwang@suse.com -- Kill all sessions when stopping gdm service +Patch11: gdm-kill-user-session.patch +# PATCH-FIX-OPENSUSE gdm-s390-not-require-g-s-d_wacom.patch bsc#1129412 yfjiang@suse.com -- Remove the runtime requirement of g-s-d Wacom plugin +Patch13: gdm-s390-not-require-g-s-d_wacom.patch +# PATCH-FIX-UPSTREAM gdm-remove-duplicate-sessions.patch boo#1131625 glgo#GNOME/gdm#473 qzheng@suse.com -- Remove duplicate sessions once, after all sessions have been processed. +Patch14: gdm-remove-duplicate-sessions.patch ### NOTE: Keep please SLE-only patches at bottom (starting on 1000). # PATCH-FIX-SLE gdm-disable-gnome-initial-setup.patch bnc#1067976 qzhao@suse.com -- Disable gnome-initial-setup runs before gdm, g-i-s will only serve for CJK people to choose the input-method after login. -Patch1002: gdm-disable-gnome-initial-setup.patch +Patch1000: gdm-disable-gnome-initial-setup.patch BuildRequires: check-devel -# needed for directory ownership +# dconf and gnome-session-core are needed for directory ownership BuildRequires: dconf -# needed for directory ownership BuildRequires: fdupes BuildRequires: gnome-common BuildRequires: gnome-session-core @@ -176,6 +179,18 @@ providing graphical log-ins and managing local and remote displays. This package provides the upstream default configuration for gdm. +%package systemd +Summary: systemd gdm.service file +Group: System/GUI/GNOME +Requires: gdm +BuildArch: noarch + +%description systemd +GDM's systemd service file. +By default openSUSE uses xdm which enables the DM based on sysconfig. +This package is only needed if the system administrator wishes to use +'systemctl' instead of openSUSE's default 'update-alternatives' method. + %package -n gdmflexiserver Summary: Compatibility Wrapper for Display Managers Group: System/GUI/GNOME @@ -193,18 +208,25 @@ running display manager. %prep %setup -q cp %{SOURCE8} . -%patch1 -p1 +%patch0 -p1 +%patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch6 -p1 %patch7 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 +%patch8 -p1 +%patch11 -p1 +%ifarch s390 s390x +%patch13 -p1 +%endif +%patch14 -p1 + +# TODO: Hack still needed until https://gitlab.gnome.org/GNOME/gdm/issues/424 gets fixed and released. +#rm data/61-gdm.rules + # SLE-only patches start at 1000 %if !0%{?is_opensuse} -%patch1002 -p1 +%patch1000 -p1 %endif %build @@ -233,14 +255,13 @@ autoreconf -fiv --disable-split-authentication \ %endif --with-initial-vt=7 \ - --with-run-dir=/run/gdm + --with-run-dir=/run/gdm \ + --with-udevdir=%{_prefix}/lib/udev %make_build V=1 %install %make_install find %{buildroot} -type f -name "*.la" -delete -print -# Do not ship the systemd.service file: openSUSE uses xdm, which enables the DM based on sysconfig. -rm %{buildroot}%{systemdsystemunitdir}/gdm.service ## Install PAM files. mkdir -p %{buildroot}%{_sysconfdir}/pam.d # Generic pam config @@ -273,7 +294,6 @@ install -D -m 644 %{SOURCE7} %{buildroot}%{_libexecdir}/X11/displaymanagers/gdm mkdir -p %{buildroot}%{_sysconfdir}/alternatives touch %{buildroot}%{_sysconfdir}/alternatives/default-displaymanager ln -s %{_sysconfdir}/alternatives/default-displaymanager %{buildroot}%{_libexecdir}/X11/displaymanagers/default-displaymanager - # Install other files mkdir -p %{buildroot}/run/gdm mkdir -p %{buildroot}%{_bindir} @@ -282,6 +302,9 @@ ln -s ../sbin/gdm %{buildroot}%{_bindir}/gdm mkdir -p %{buildroot}%{_prefix}/lib/tmpfiles.d install -m 644 %{SOURCE9} %{buildroot}%{_prefix}/lib/tmpfiles.d/gdm.conf +mkdir -p %{buildroot}%{_libexecdir}/systemd/logind.conf.d +install -m 644 %{SOURCE10} %{buildroot}%{_libexecdir}/systemd/logind.conf.d/reserveVT.conf + %find_lang %{name} %{?no_lang_C} %fdupes -s %{buildroot}%{_datadir}/help @@ -290,28 +313,6 @@ install -m 644 %{SOURCE9} %{buildroot}%{_prefix}/lib/tmpfiles.d/gdm.conf %{_sbindir}/useradd -r -g gdm -G video -s /bin/false \ -c "Gnome Display Manager daemon" -d %{_localstatedir}/lib/gdm gdm 2> /dev/null || : %{_sbindir}/usermod -g gdm -G video -s /bin/false gdm 2> /dev/null -# Fix incorrect interpretation of DISPLAYMANAGER_PASSWORD_LESS_LOGIN (#307566). -# Last done in SLED10&10.1, first fixed in 10.3. -# Can be removed after SLES12: -if test -f sbin/conf.d/SuSEconfig.gdm && grep -q gdm-autologin sbin/conf.d/SuSEconfig.gdm ; then - if grep -q '^DISPLAYMANAGER_PASSWORD_LESS_LOGIN="no"' etc/sysconfig/displaymanager ; then - sed 's/^\(auth[[:space:]][[:space:]]*\)include[[:space:]]\([[:space:]]*\)common-auth/\1required\2pam_permit.so/' etc/pam.d/gdm-autologin.new - if cmp -s etc/pam.d/gdm-autologin etc/pam.d/gdm-autologin.new ; then - rm etc/pam.d/gdm-autologin.new - else - mv etc/pam.d/gdm-autologin.new etc/pam.d/gdm-autologin - fi - fi -fi -# Fix how DISPLAYMANAGER_PASSWORD_LESS_LOGIN is used. Before 11.4, -# /etc/pam.d/gdm was changed to use pam_permit. We don't want this anymore. -if test -f /sbin/conf.d/SuSEconfig.gdm; then - grep -q pam_permit.so %{_sysconfdir}/pam.d/gdm - if test $? -eq 0; then - # We'll just use the file from the new package - mv %{_sysconfdir}/pam.d/gdm %{_sysconfdir}/pam.d/gdm.rpmold - fi -fi %post %tmpfiles_create gdm.conf @@ -331,7 +332,7 @@ dconf update %files %license COPYING -%doc AUTHORS ChangeLog NEWS README +%doc AUTHORS NEWS README.md %doc %{_datadir}/help/C/%{name}/ %dir %config %{_sysconfdir}/gdm %config %{_sysconfdir}/gdm/[IPXl]* @@ -370,6 +371,8 @@ dconf update %ghost %{_sysconfdir}/alternatives/default-displaymanager %{_udevrulesdir}/61-gdm.rules %{_libexecdir}/tmpfiles.d/gdm.conf +%dir %{_libexecdir}/systemd/logind.conf.d +%{_libexecdir}/systemd/logind.conf.d/reserveVT.conf %files -n libgdm1 %{_libdir}/libgdm.so.* @@ -387,6 +390,9 @@ dconf update %files branding-upstream %config(noreplace) %{_sysconfdir}/gdm/custom.conf +%files systemd +%{systemdsystemunitdir}/gdm.service + %files -n gdmflexiserver %{_bindir}/gdmflexiserver diff --git a/gdm.tmpfiles b/gdm.tmpfiles index 1993160..30d3215 100644 --- a/gdm.tmpfiles +++ b/gdm.tmpfiles @@ -1,4 +1,4 @@ -+d /var/lib/gdm/ 0750 gdm gdm - -+d /var/log/gdm/ 0711 root gdm - -+d /var/cache/gdm/ 1755 root root - +d /var/lib/gdm/ 0750 gdm gdm - +d /var/log/gdm/ 0711 root gdm - +d /var/cache/gdm/ 1755 root root - diff --git a/reserveVT.conf b/reserveVT.conf new file mode 100644 index 0000000..4efa72a --- /dev/null +++ b/reserveVT.conf @@ -0,0 +1,2 @@ +[Login] +ReserveVT=1