Accepting request 708269 from GNOME:Next

Submit to TW - the GNOME:Next Live image tests are passing reliably again

OBS-URL: https://build.opensuse.org/request/show/708269
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gdm?expand=0&rev=426
This commit is contained in:
Bjørn Lie 2019-06-07 11:16:29 +00:00 committed by Git OBS Bridge
parent ecb4fcae54
commit e518d70380
19 changed files with 877 additions and 311 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6041a07fbbd28f6e55a15abea6fb650c8ab6988df557da320bd6983e4009b571
size 1122352

3
gdm-3.32.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:643db0c8c5089a96282b4c259b8823ca6dfad1ead6f2d0025d1c1211d36fd78b
size 1262344

View File

@ -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

View File

@ -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 <glib-object.h>
#include <gio/gio.h>
@ -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);

View File

@ -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'"

View File

@ -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);

View File

@ -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();
}
/**

264
gdm-kill-user-session.patch Normal file
View File

@ -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 <errno.h>
#include <grp.h>
#include <pwd.h>
+#include <signal.h>
#include <security/pam_appl.h>
@@ -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);

View File

@ -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 <sys/wait.h>
#include <locale.h>
#include <signal.h>
+#include <sys/ioctl.h>
+#include <sys/vt.h>
#include <glib.h>
#include <glib/gi18n.h>
@@ -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;
}

View File

@ -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);
}
/**

View File

@ -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;

View File

@ -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

68
gdm-switch-to-tty1.patch Normal file
View File

@ -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;

View File

@ -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

View File

@ -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",

View File

@ -1,3 +1,261 @@
-------------------------------------------------------------------
Thu May 23 08:40:18 UTC 2019 - Dominique Leuenberger <dimstar@opensuse.org>
- Fixup gdm.tmpfiles (boo#1135272).
-------------------------------------------------------------------
Wed May 22 16:39:19 UTC 2019 - Markus S <kamikazow@opensuse.org>
- Make systemd service file optional instead of outright deleting it.
-------------------------------------------------------------------
Wed May 15 01:57:12 UTC 2019 - Xiaoguang Wang <xwang@suse.com>
- Update gdm-switch-to-tty1.patch (bsc#1120307)
-------------------------------------------------------------------
Thu May 9 08:58:52 UTC 2019 - Xiaoguang Wang <xwang@suse.com>
- 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 <qzheng@suse.com>
- 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 <yfjiang@suse.com>
- 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 <bjorn.lie@gmail.com>
- Update to version 3.32.0:
+ Stable release version bump.
-------------------------------------------------------------------
Wed Apr 17 03:31:51 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- 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 <fezhang@suse.com>
- 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

118
gdm.spec
View File

@ -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 >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

View File

@ -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 -

2
reserveVT.conf Normal file
View File

@ -0,0 +1,2 @@
[Login]
ReserveVT=1