diff --git a/gdm-default-wm.patch b/gdm-default-wm.patch new file mode 100644 index 0000000..29f37c2 --- /dev/null +++ b/gdm-default-wm.patch @@ -0,0 +1,29 @@ +Index: gdm-2.27.90/daemon/gdm-session-direct.c +=================================================================== +--- gdm-2.27.90.orig/daemon/gdm-session-direct.c ++++ gdm-2.27.90/daemon/gdm-session-direct.c +@@ -47,6 +47,8 @@ + + #include + ++#include "gdm-sysconfig.h" ++ + #include "gdm-session-direct.h" + #include "gdm-session.h" + #include "gdm-session-private.h" +@@ -670,6 +672,15 @@ get_fallback_session_name (void) + int i; + char *name; + ++ name = gdm_sysconfig_load_value ("/etc/sysconfig/windowmanager", "DEFAULT_WM"); ++ if (name && get_session_command_for_name (name, NULL)) { ++ return name; ++ } ++ ++ if (name) { ++ g_free (name); ++ } ++ + name = g_strdup ("gnome"); + if (get_session_command_for_name (name, NULL)) { + return name; diff --git a/gdm-xauthlocalhostname.patch b/gdm-xauthlocalhostname.patch new file mode 100644 index 0000000..ec928bf --- /dev/null +++ b/gdm-xauthlocalhostname.patch @@ -0,0 +1,75 @@ +Index: gdm-2.27.90/daemon/gdm-display-access-file.c +=================================================================== +--- gdm-2.27.90.orig/daemon/gdm-display-access-file.c ++++ gdm-2.27.90/daemon/gdm-display-access-file.c +@@ -440,11 +440,15 @@ _get_auth_info_for_display (GdmDisplayAc + if (is_local) { + char localhost[HOST_NAME_MAX + 1] = ""; + *family = FamilyLocal; ++#if 0 + if (gethostname (localhost, HOST_NAME_MAX) == 0) { + *address = g_strdup (localhost); + } else { ++#endif + *address = g_strdup ("localhost"); ++#if 0 + } ++#endif + } else { + *family = FamilyWild; + gdm_display_get_remote_hostname (display, address, NULL); +Index: gdm-2.27.90/daemon/gdm-session-direct.c +=================================================================== +--- gdm-2.27.90.orig/daemon/gdm-session-direct.c ++++ gdm-2.27.90/daemon/gdm-session-direct.c +@@ -2050,6 +2050,12 @@ setup_session_environment (GdmSessionDir + session->priv->user_x11_authority_file); + } + ++ if (session->priv->display_is_local) { ++ gdm_session_direct_set_environment_variable (session, ++ "XAUTHLOCALHOSTNAME", ++ "localhost"); ++ } ++ + /* FIXME: We do this here and in the session worker. We should consolidate + * somehow. + */ +Index: gdm-2.27.90/daemon/gdm-slave.c +=================================================================== +--- gdm-2.27.90.orig/daemon/gdm-slave.c ++++ gdm-2.27.90/daemon/gdm-slave.c +@@ -222,6 +222,10 @@ get_script_environment (GdmSlave *slav + g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (slave->priv->display_hostname)); + } + ++ if (slave->priv->display_is_local) { ++ g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), g_strdup ("localhost")); ++ } ++ + /* Runs as root */ + g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (slave->priv->display_x11_authority_file)); + g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (slave->priv->display_name)); +@@ -374,6 +378,7 @@ gdm_slave_connect_to_x11_display (GdmSla + + g_setenv ("DISPLAY", slave->priv->display_name, TRUE); + g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE); ++ g_setenv ("XAUTHLOCALHOSTNAME", "localhost", TRUE); + + sigemptyset (&mask); + sigaddset (&mask, SIGCHLD); +Index: gdm-2.27.90/daemon/gdm-welcome-session.c +=================================================================== +--- gdm-2.27.90.orig/daemon/gdm-welcome-session.c ++++ gdm-2.27.90/daemon/gdm-welcome-session.c +@@ -315,6 +315,10 @@ get_welcome_environment (GdmWelcomeSessi + g_hash_table_insert (hash, g_strdup ("SHELL"), g_strdup (pwent->pw_shell)); + } + ++ if (welcome_session->priv->x11_display_is_local) { ++ g_hash_table_remove (hash, "XAUTHLOCALHOSTNAME"); ++ g_hash_table_insert (hash, g_strdup ("XAUTHLOCALHOSTNAME"), g_strdup ("localhost")); ++ } + + g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (g_getenv ("PATH"))); + diff --git a/gdm.changes b/gdm.changes index 1e79093..fa59d98 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Mon Sep 28 14:25:50 CEST 2009 - vuntz@opensuse.org + +- Add gdm-xauthlocalhostname.patch: fix non-working user session + when the hostname changes during login. Fix shipstopper + bnc#538064. +- Add gdm-default-wm.patch: gdm now reads the DEFAULT_WM setting in + /etc/sysconfig/windowmanager to know which session to use by + default instead of always using GNOME. + This should fix using GDM for XFCE. + ------------------------------------------------------------------- Tue Aug 25 14:03:14 CEST 2009 - vuntz@novell.com diff --git a/gdm.spec b/gdm.spec index 6918d45..19a5f35 100644 --- a/gdm.spec +++ b/gdm.spec @@ -42,7 +42,7 @@ BuildRequires: zenity License: GPL v2 or later Group: System/GUI/GNOME Version: 2.27.90 -Release: 1 +Release: 2 Summary: The GNOME 2.x Display Manager Source: %{name}-%{version}.tar.bz2 Source1: gdm.pamd @@ -78,6 +78,10 @@ Patch31: gdm-gconf-path.patch Patch32: gdm-keyboard-from-hal.patch # PATCH-FIX-OPENSUSE gdm-keyboard-from-sysconfig.patch bnc432360 bnc478083 hpj@novell.com -- Read keyboard options from sysconfig (for openSUSE <= 11.1, since keyboard layout wasn't in hal) Patch33: gdm-keyboard-from-sysconfig.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 +# PATCH-FIX-OPENSUSE gdm-xauthlocalhostname.patch vuntz@novell.com -- Set XAUTHLOCALHOSTNAME to localhost for local logins to avoid issues in the session in case the hostname changes +Patch35: gdm-xauthlocalhostname.patch # PATCH-FIX-OPENSUSE gdm-selinux.patch -- Small changes to make it compile fine with SELinux Patch60: gdm-selinux.patch Url: http://www.gnome.org/ @@ -146,6 +150,8 @@ gnome-patch-translation-prepare %else %patch33 -p1 %endif +%patch34 -p1 +%patch35 -p1 %patch60 # gnome-patch-translation-update