diff --git a/X11-displaymanager-gdm b/X11-displaymanager-gdm index 07b2083..161bde9 100644 --- a/X11-displaymanager-gdm +++ b/X11-displaymanager-gdm @@ -1,19 +1,9 @@ -gdm_start_proc () { - if test "$DISPLAYMANAGER_REMOTE_ACCESS" = "yes" -a \ - "$DISPLAYMANAGER_STARTS_XSERVER" = "no"; then - XDMOPTIONS="--no-console" - fi - - return 0 -} - gdm_vars() { case "${DISPLAYMANAGER##*/}" in gdm|GDM|Gnome|GNOME) RELOADSIGNAL="-USR1" DISPLAYMANAGER=/usr/sbin/gdm PIDFILE=/run/gdm/gdm.pid - STARTPROC=gdm_start_proc return 0 ;; *) return 1 ;; esac diff --git a/gdm-correct-ShowLocalGreeter-standalone-XDMCP-server.patch b/gdm-correct-ShowLocalGreeter-standalone-XDMCP-server.patch new file mode 100644 index 0000000..643cb70 --- /dev/null +++ b/gdm-correct-ShowLocalGreeter-standalone-XDMCP-server.patch @@ -0,0 +1,39 @@ +From 1721403c8c16c62c1c814d5bbf7a01714680a3fd Mon Sep 17 00:00:00 2001 +From: Maxime de Roucy +Date: Sat, 24 Jan 2015 15:12:16 +0100 +Subject: [PATCH] correct ShowLocalGreeter (standalone XDMCP server) + +Get the ShowLocalGreeter option from configuration file BEFORE launching +the gdm manager. In order to let the manager know if it have to launch a +local X server or not. + +https://bugzilla.gnome.org/show_bug.cgi?id=743440 +--- + daemon/main.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/daemon/main.c b/daemon/main.c +index cdb41fa..848cf3c 100644 +--- a/daemon/main.c ++++ b/daemon/main.c +@@ -448,8 +448,6 @@ on_name_acquired (GDBusConnection *bus, + + g_debug ("Successfully connected to D-Bus"); + +- gdm_manager_start (manager); +- + show_local_greeter = TRUE; + gdm_settings_direct_get_boolean (GDM_KEY_SHOW_LOCAL_GREETER, &show_local_greeter); + gdm_manager_set_show_local_greeter (manager, show_local_greeter); +@@ -457,6 +455,8 @@ on_name_acquired (GDBusConnection *bus, + xdmcp_enabled = FALSE; + gdm_settings_direct_get_boolean (GDM_KEY_XDMCP_ENABLE, &xdmcp_enabled); + gdm_manager_set_xdmcp_enabled (manager, xdmcp_enabled); ++ ++ gdm_manager_start (manager); + } + + static void +-- +1.8.5.6 + diff --git a/gdm-passwordless-login.patch b/gdm-passwordless-login.patch index 54831b4..470960e 100644 --- a/gdm-passwordless-login.patch +++ b/gdm-passwordless-login.patch @@ -1,37 +1,36 @@ -Index: gdm-3.6.1/common/gdm-settings-system-backend.c +Index: gdm-3.14.1/common/gdm-settings-system-backend.c =================================================================== ---- gdm-3.6.1.orig/common/gdm-settings-system-backend.c -+++ gdm-3.6.1/common/gdm-settings-system-backend.c -@@ -43,11 +43,11 @@ - #define SYSCONFIG_AUTOLOGIN_KEY "DISPLAYMANAGER_AUTOLOGIN" - #define SYSCONFIG_TCP_OPEN_KEY "DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" - #define SYSCONFIG_XDMCP_KEY "DISPLAYMANAGER_REMOTE_ACCESS" -+#define SYSCONFIG_PASSWORDLESS_KEY "DISPLAYMANAGER_PASSWORD_LESS_LOGIN" +--- gdm-3.14.1.orig/common/gdm-settings-system-backend.c ++++ gdm-3.14.1/common/gdm-settings-system-backend.c +@@ -44,9 +44,9 @@ + #define SYSCONFIG_TCP_OPEN_KEY "DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" + #define SYSCONFIG_XDMCP_KEY "DISPLAYMANAGER_REMOTE_ACCESS" + #define SYSCONFIG_STARTS_XSERVER_KEY "DISPLAYMANAGER_STARTS_XSERVER" ++#define SYSCONFIG_PASSWORDLESS_KEY "DISPLAYMANAGER_PASSWORD_LESS_LOGIN" /* Keys from sysconfig that have no equivalent in GDM: * - DISPLAYMANAGER_ROOT_LOGIN_REMOTE - * - DISPLAYMANAGER_STARTS_XSERVER (we always have a local display manager, - * see gdm_manager_constructor()) - * - DISPLAYMANAGER_PASSWORD_LESS_LOGIN * - DISPLAYMANAGER_AD_INTEGRATION * - DISPLAYMANAGER_SHUTDOWN (handled by ConsoleKit) */ -@@ -65,12 +65,14 @@ struct GdmSettingsSystemBackendPrivate - gboolean dirty_autologin_user; +@@ -65,6 +65,7 @@ struct GdmSettingsSystemBackendPrivate gboolean dirty_tcp_open; gboolean dirty_xdmcp; + gboolean dirty_show_local_greeter; + gboolean dirty_passwordless; gchar *set_autologin_user; gboolean set_autologin_enabled; - +@@ -72,6 +73,7 @@ struct GdmSettingsSystemBackendPrivate gboolean set_tcp_open; gboolean set_xdmcp; + gboolean set_show_local_greeter; + gboolean set_passwordless; }; static void gdm_settings_system_backend_class_init (GdmSettingsSystemBackendClass *klass); -@@ -140,6 +142,16 @@ gdm_settings_system_backend_get_value (G - val = g_strdup (xdmcp ? "true" : "false"); +@@ -151,6 +153,16 @@ gdm_settings_system_backend_get_value (G + val = g_strdup (local_greeter ? "true" : "false"); } } + } else if (!strcasecmp (key, GDM_KEY_SUSE_PASSWORDLESS_LOGIN_ENABLE)) { @@ -47,8 +46,8 @@ Index: gdm-3.6.1/common/gdm-settings-system-backend.c } else { g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); goto out; -@@ -200,6 +212,12 @@ save_settings (GdmSettingsSystemBackend - backend->priv->set_xdmcp ? "yes" : "no"); +@@ -217,6 +229,12 @@ save_settings (GdmSettingsSystemBackend + backend->priv->set_show_local_greeter? "yes" : "no"); } + if (backend->priv->dirty_passwordless) { @@ -60,28 +59,28 @@ Index: gdm-3.6.1/common/gdm-settings-system-backend.c if (!gdm_sysconfig_save_file (backend->priv->filename, backend->priv->lines)) g_warning ("Unable to save settings to %s.", backend->priv->filename); -@@ -208,6 +226,7 @@ save_settings (GdmSettingsSystemBackend - backend->priv->dirty_autologin_user = FALSE; - backend->priv->dirty_tcp_open = FALSE; - backend->priv->dirty_xdmcp = FALSE; -+ backend->priv->dirty_passwordless = FALSE; +@@ -226,6 +244,7 @@ save_settings (GdmSettingsSystemBackend + backend->priv->dirty_tcp_open = FALSE; + backend->priv->dirty_xdmcp = FALSE; + backend->priv->dirty_show_local_greeter = FALSE; ++ backend->priv->dirty_passwordless = FALSE; } static gboolean -@@ -275,6 +294,9 @@ gdm_settings_system_backend_set_value (G - } else if (!strcasecmp (key, GDM_KEY_XDMCP_ENABLE)) { - priv->set_xdmcp = value_to_boolean (value); - GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_xdmcp = TRUE; +@@ -296,6 +315,9 @@ gdm_settings_system_backend_set_value (G + } else if (!strcasecmp (key, GDM_KEY_SHOW_LOCAL_GREETER)) { + priv->set_show_local_greeter = value_to_boolean (value); + GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_show_local_greeter = TRUE; + } else if (!strcasecmp (key, GDM_KEY_SUSE_PASSWORDLESS_LOGIN_ENABLE)) { + priv->set_passwordless = value_to_boolean (value); + GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_passwordless = TRUE; } else { g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); return FALSE; -Index: gdm-3.6.1/common/gdm-settings-keys.h +Index: gdm-3.14.1/common/gdm-settings-keys.h =================================================================== ---- gdm-3.6.1.orig/common/gdm-settings-keys.h -+++ gdm-3.6.1/common/gdm-settings-keys.h +--- gdm-3.14.1.orig/common/gdm-settings-keys.h ++++ gdm-3.14.1/common/gdm-settings-keys.h @@ -33,6 +33,7 @@ G_BEGIN_DECLS #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin" #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay" @@ -90,11 +89,11 @@ Index: gdm-3.6.1/common/gdm-settings-keys.h #define GDM_KEY_DEBUG "debug/Enable" -Index: gdm-3.6.1/data/gdm.schemas.in.in +Index: gdm-3.14.1/data/gdm.schemas.in.in =================================================================== ---- gdm-3.6.1.orig/data/gdm.schemas.in.in -+++ gdm-3.6.1/data/gdm.schemas.in.in -@@ -58,6 +58,12 @@ +--- gdm-3.14.1.orig/data/gdm.schemas.in.in ++++ gdm-3.14.1/data/gdm.schemas.in.in +@@ -63,6 +63,12 @@ b false @@ -107,10 +106,10 @@ Index: gdm-3.6.1/data/gdm.schemas.in.in security/DisallowTCP -Index: gdm-3.6.1/daemon/gdm-session.c +Index: gdm-3.14.1/daemon/gdm-session.c =================================================================== ---- gdm-3.6.1.orig/daemon/gdm-session.c -+++ gdm-3.6.1/daemon/gdm-session.c +--- gdm-3.14.1.orig/daemon/gdm-session.c ++++ gdm-3.14.1/daemon/gdm-session.c @@ -55,6 +55,9 @@ #include "gdm-session-worker-glue.h" #include "gdm-common.h" @@ -121,7 +120,7 @@ Index: gdm-3.6.1/daemon/gdm-session.c #define GDM_SESSION_DBUS_ERROR_CANCEL "org.gnome.DisplayManager.Session.Error.Cancel" #define GDM_SESSION_DBUS_OBJECT_PATH "/org/gnome/DisplayManager/Session" -@@ -1228,6 +1231,15 @@ gdm_session_handle_client_begin_verifica +@@ -1262,6 +1265,15 @@ gdm_session_handle_client_begin_verifica GdmSession *self) { GdmSessionConversation *conversation; diff --git a/gdm-sysconfig-settings.patch b/gdm-sysconfig-settings.patch index cd0831d..cb1201c 100644 --- a/gdm-sysconfig-settings.patch +++ b/gdm-sysconfig-settings.patch @@ -1,8 +1,8 @@ -Index: gdm-3.11.90/common/Makefile.am +Index: gdm-3.14.1/common/Makefile.am =================================================================== ---- gdm-3.11.90.orig/common/Makefile.am -+++ gdm-3.11.90/common/Makefile.am -@@ -49,11 +49,15 @@ libgdmcommon_la_SOURCES = \ +--- gdm-3.14.1.orig/common/Makefile.am ++++ gdm-3.14.1/common/Makefile.am +@@ -50,11 +50,15 @@ libgdmcommon_la_SOURCES = \ gdm-settings-backend.h \ gdm-settings-desktop-backend.c \ gdm-settings-desktop-backend.h \ @@ -18,11 +18,11 @@ Index: gdm-3.11.90/common/Makefile.am gdm-log.h \ gdm-log.c \ $(MKDTEMP_FILES) \ -Index: gdm-3.11.90/common/gdm-settings-system-backend.c +Index: gdm-3.14.1/common/gdm-settings-system-backend.c =================================================================== --- /dev/null -+++ gdm-3.11.90/common/gdm-settings-system-backend.c -@@ -0,0 +1,348 @@ ++++ gdm-3.14.1/common/gdm-settings-system-backend.c +@@ -0,0 +1,369 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Hans Petter Jansson @@ -65,13 +65,12 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.c + +#include "gdm-log.h" + -+#define SYSCONFIG_AUTOLOGIN_KEY "DISPLAYMANAGER_AUTOLOGIN" -+#define SYSCONFIG_TCP_OPEN_KEY "DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" -+#define SYSCONFIG_XDMCP_KEY "DISPLAYMANAGER_REMOTE_ACCESS" ++#define SYSCONFIG_AUTOLOGIN_KEY "DISPLAYMANAGER_AUTOLOGIN" ++#define SYSCONFIG_TCP_OPEN_KEY "DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" ++#define SYSCONFIG_XDMCP_KEY "DISPLAYMANAGER_REMOTE_ACCESS" ++#define SYSCONFIG_STARTS_XSERVER_KEY "DISPLAYMANAGER_STARTS_XSERVER" +/* Keys from sysconfig that have no equivalent in GDM: + * - DISPLAYMANAGER_ROOT_LOGIN_REMOTE -+ * - DISPLAYMANAGER_STARTS_XSERVER (we always have a local display manager, -+ * see gdm_manager_constructor()) + * - DISPLAYMANAGER_PASSWORD_LESS_LOGIN + * - DISPLAYMANAGER_AD_INTEGRATION + * - DISPLAYMANAGER_SHUTDOWN (handled by ConsoleKit) @@ -90,12 +89,14 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.c + gboolean dirty_autologin_user; + gboolean dirty_tcp_open; + gboolean dirty_xdmcp; ++ gboolean dirty_show_local_greeter; + + gchar *set_autologin_user; + gboolean set_autologin_enabled; + + gboolean set_tcp_open; + gboolean set_xdmcp; ++ gboolean set_show_local_greeter; +}; + +static void gdm_settings_system_backend_class_init (GdmSettingsSystemBackendClass *klass); @@ -165,6 +166,16 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.c + val = g_strdup (xdmcp ? "true" : "false"); + } + } ++ } else if (!strcasecmp (key, GDM_KEY_SHOW_LOCAL_GREETER)) { ++ if (priv->dirty_show_local_greeter) { ++ val = g_strdup (priv->set_xdmcp ? "true" : "false"); ++ } else { ++ gboolean local_greeter; ++ ++ if (gdm_sysconfig_get_value_boolean ((const gchar **) priv->lines, SYSCONFIG_STARTS_XSERVER_KEY, &local_greeter)) { ++ val = g_strdup (local_greeter ? "true" : "false"); ++ } ++ } + } else { + g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); + goto out; @@ -225,14 +236,21 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.c + backend->priv->set_xdmcp ? "yes" : "no"); + } + ++ if (backend->priv->dirty_show_local_greeter) { ++ if (!gdm_sysconfig_set_value_boolean (backend->priv->lines, SYSCONFIG_STARTS_XSERVER_KEY, backend->priv->set_show_local_greeter)) ++ g_warning ("Unable to set key %s to '%s'.", SYSCONFIG_STARTS_XSERVER_KEY, ++ backend->priv->set_show_local_greeter? "yes" : "no"); ++ } ++ + if (!gdm_sysconfig_save_file (backend->priv->filename, backend->priv->lines)) + g_warning ("Unable to save settings to %s.", backend->priv->filename); + -+ backend->priv->dirty = FALSE; -+ backend->priv->dirty_autologin = FALSE; -+ backend->priv->dirty_autologin_user = FALSE; -+ backend->priv->dirty_tcp_open = FALSE; -+ backend->priv->dirty_xdmcp = FALSE; ++ backend->priv->dirty = FALSE; ++ backend->priv->dirty_autologin = FALSE; ++ backend->priv->dirty_autologin_user = FALSE; ++ backend->priv->dirty_tcp_open = FALSE; ++ backend->priv->dirty_xdmcp = FALSE; ++ backend->priv->dirty_show_local_greeter = FALSE; +} + +static gboolean @@ -300,6 +318,9 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.c + } else if (!strcasecmp (key, GDM_KEY_XDMCP_ENABLE)) { + priv->set_xdmcp = value_to_boolean (value); + GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_xdmcp = TRUE; ++ } else if (!strcasecmp (key, GDM_KEY_SHOW_LOCAL_GREETER)) { ++ priv->set_show_local_greeter = value_to_boolean (value); ++ GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_show_local_greeter = TRUE; + } else { + g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); + return FALSE; @@ -371,10 +392,10 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.c + + return GDM_SETTINGS_BACKEND (object); +} -Index: gdm-3.11.90/common/gdm-settings-system-backend.h +Index: gdm-3.14.1/common/gdm-settings-system-backend.h =================================================================== --- /dev/null -+++ gdm-3.11.90/common/gdm-settings-system-backend.h ++++ gdm-3.14.1/common/gdm-settings-system-backend.h @@ -0,0 +1,56 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -432,10 +453,10 @@ Index: gdm-3.11.90/common/gdm-settings-system-backend.h +G_END_DECLS + +#endif /* __GDM_SETTINGS_SYSTEM_BACKEND_H */ -Index: gdm-3.11.90/common/gdm-settings.c +Index: gdm-3.14.1/common/gdm-settings.c =================================================================== ---- gdm-3.11.90.orig/common/gdm-settings.c -+++ gdm-3.11.90/common/gdm-settings.c +--- gdm-3.14.1.orig/common/gdm-settings.c ++++ gdm-3.14.1/common/gdm-settings.c @@ -38,12 +38,13 @@ #include "gdm-settings.h" @@ -561,10 +582,10 @@ Index: gdm-3.11.90/common/gdm-settings.c G_OBJECT_CLASS (gdm_settings_parent_class)->finalize (object); } -Index: gdm-3.11.90/common/gdm-sysconfig.c +Index: gdm-3.14.1/common/gdm-sysconfig.c =================================================================== --- /dev/null -+++ gdm-3.11.90/common/gdm-sysconfig.c ++++ gdm-3.14.1/common/gdm-sysconfig.c @@ -0,0 +1,484 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -1050,10 +1071,10 @@ Index: gdm-3.11.90/common/gdm-sysconfig.c + g_strfreev (lines); + return result; +} -Index: gdm-3.11.90/common/gdm-sysconfig.h +Index: gdm-3.14.1/common/gdm-sysconfig.h =================================================================== --- /dev/null -+++ gdm-3.11.90/common/gdm-sysconfig.h ++++ gdm-3.14.1/common/gdm-sysconfig.h @@ -0,0 +1,43 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -1098,10 +1119,10 @@ Index: gdm-3.11.90/common/gdm-sysconfig.h +G_END_DECLS + +#endif /* __GDM_SYSCONFIG_H */ -Index: gdm-3.11.90/data/gdm.conf-custom.in +Index: gdm-3.14.1/data/gdm.conf-custom.in =================================================================== ---- gdm-3.11.90.orig/data/gdm.conf-custom.in -+++ gdm-3.11.90/data/gdm.conf-custom.in +--- gdm-3.14.1.orig/data/gdm.conf-custom.in ++++ gdm-3.14.1/data/gdm.conf-custom.in @@ -1,4 +1,7 @@ # GDM configuration storage +# diff --git a/gdm.changes b/gdm.changes index 97944e1..dc124f2 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Thu Feb 26 12:03:15 UTC 2015 - fcrozat@suse.com + +- Update gdm-sysconfig-settings.patch / X11-displaymanager-gdm: fix + support for DISPLAYMANAGER_STARTS_XSERVER from + /etc/sysconfig/displaymanager. +- Add gdm-correct-ShowLocalGreeter-standalone-XDMCP-server.patch: + ensure ShowLocalGreeter configuration key is properly handled + (bgo#743440). + ------------------------------------------------------------------- Tue Feb 10 11:28:29 UTC 2015 - zaitor@opensuse.org diff --git a/gdm.spec b/gdm.spec index 55adeab..15efe55 100644 --- a/gdm.spec +++ b/gdm.spec @@ -62,6 +62,8 @@ Patch35: gdm-xauthlocalhostname.patch Patch40: gdm-look-at-runlevel.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-correct-ShowLocalGreeter-standalone-XDMCP-server.patch bgo#743440 fcrozat@suse.com -- Ensure ShowLocalGreeter value is properly handled +Patch42: gdm-correct-ShowLocalGreeter-standalone-XDMCP-server.patch BuildRequires: check-devel # needed for directory ownership BuildRequires: dconf @@ -195,6 +197,7 @@ translation-update-upstream #patch35 -p1 %patch40 -p1 %patch41 -p1 +%patch42 -p1 %build NOCONFIGURE=1 sh autogen.sh