SHA256
1
0
forked from pool/gdm

Accepting request 136669 from GNOME:Factory

Pushing GNOME:Factory towards openSUSE:Factory

OBS-URL: https://build.opensuse.org/request/show/136669
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdm?expand=0&rev=144
This commit is contained in:
Stephan Kulow 2012-10-04 16:39:02 +00:00 committed by Git OBS Bridge
commit 5e1b1cfdc9
17 changed files with 470 additions and 945 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6292968dff5fc89877b5e1aaa3c7d1484dd3ed2d4f388e935841d053439be665
size 1615612

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

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

View File

@ -1,28 +1,28 @@
Index: gdm-2.30.4/daemon/gdm-session-direct.c diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
=================================================================== index 90b9045..f2ea011 100644
--- gdm-2.30.4.orig/daemon/gdm-session-direct.c --- a/daemon/gdm-session.c
+++ gdm-2.30.4/daemon/gdm-session-direct.c +++ b/daemon/gdm-session.c
@@ -50,6 +50,8 @@ @@ -43,6 +43,8 @@
#include <dbus/dbus-glib.h> #include <glib-object.h>
#include <dbus/dbus-glib-lowlevel.h> #include <gio/gio.h>
+#include "gdm-sysconfig.h" +#include "gdm-sysconfig.h"
+ +
#include "gdm-session-direct.h"
#include "gdm-session.h" #include "gdm-session.h"
#include "gdm-session-private.h" #include "gdm-session-glue.h"
@@ -662,6 +664,14 @@ get_fallback_session_name (GdmSessionDir #include "gdm-dbus-util.h"
@@ -518,6 +520,14 @@ get_fallback_session_name (GdmSession *self)
} }
} }
+ name = gdm_sysconfig_load_value ("/etc/sysconfig/windowmanager", "DEFAULT_WM"); + name = gdm_sysconfig_load_value ("/etc/sysconfig/windowmanager", "DEFAULT_WM");
+ if (name && get_session_command_for_name (name, NULL)) { + if (name && get_session_command_for_name (name, NULL)) {
+ g_free (session_direct->priv->fallback_session_name); + g_free (self->priv->fallback_session_name);
+ session_direct->priv->fallback_session_name = name; + self->priv->fallback_session_name = name;
+ goto out; + goto out;
+ } + }
+ g_free (name); + g_free (name);
+ +
name = g_strdup ("gnome"); name = g_strdup ("gnome");
if (get_session_command_for_name (name, NULL)) { if (get_session_command_for_name (name, NULL)) {
g_free (session_direct->priv->fallback_session_name); g_free (self->priv->fallback_session_name);

View File

@ -1,29 +1,17 @@
Index: gdm-3.3.92.1/daemon/gdm-session-worker.c Index: gdm-3.5.91/daemon/gdm-session-worker.c
=================================================================== ===================================================================
--- gdm-3.3.92.1.orig/daemon/gdm-session-worker.c --- gdm-3.5.91.orig/daemon/gdm-session-worker.c
+++ gdm-3.3.92.1/daemon/gdm-session-worker.c +++ gdm-3.5.91/daemon/gdm-session-worker.c
@@ -148,6 +148,8 @@ struct GdmSessionWorkerPrivate @@ -159,6 +159,8 @@ struct GdmSessionWorkerPrivate
GdmSessionAuditor *auditor;
GdmSessionSettings *user_settings; GdmSessionSettings *user_settings;
GDBusMethodInvocation *pending_invocation;
+ +
+ char *suse_session_name; + char *suse_session_name;
}; };
enum { enum {
@@ -166,6 +168,11 @@ static void gdm_session_worker_set_e @@ -1115,6 +1117,9 @@ gdm_session_worker_initialize_pam (GdmSe
static void queue_state_change (GdmSessionWorker *worker);
+static void
+gdm_session_worker_set_environment_variable (GdmSessionWorker *worker,
+ const char *key,
+ const char *value);
+
typedef int (* GdmSessionWorkerPamNewMessagesFunc) (int,
const struct pam_message **,
struct pam_response **,
@@ -1196,6 +1203,9 @@ gdm_session_worker_initialize_pam (GdmSe
} }
#endif #endif
@ -33,10 +21,11 @@ Index: gdm-3.3.92.1/daemon/gdm-session-worker.c
g_debug ("GdmSessionWorker: state SETUP_COMPLETE"); g_debug ("GdmSessionWorker: state SETUP_COMPLETE");
worker->priv->state = GDM_SESSION_WORKER_STATE_SETUP_COMPLETE; worker->priv->state = GDM_SESSION_WORKER_STATE_SETUP_COMPLETE;
@@ -2051,11 +2061,26 @@ static void @@ -2035,12 +2040,36 @@ gdm_session_worker_handle_set_session_na
gdm_session_worker_set_session_name (GdmSessionWorker *worker,
const char *session_name)
{ {
GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
g_debug ("GdmSessionWorker: session name set to %s", session_name);
+
+ if (worker->priv->pam_handle != NULL) + if (worker->priv->pam_handle != NULL)
+ gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", session_name); + gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", session_name);
+ g_free (worker->priv->suse_session_name); + g_free (worker->priv->suse_session_name);
@ -44,146 +33,133 @@ Index: gdm-3.3.92.1/daemon/gdm-session-worker.c
+ +
gdm_session_settings_set_session_name (worker->priv->user_settings, gdm_session_settings_set_session_name (worker->priv->user_settings,
session_name); session_name);
gdm_dbus_worker_complete_set_session_name (object, invocation);
return TRUE;
} }
static void +static gboolean
+gdm_session_worker_set_default_session_name (GdmSessionWorker *worker, +gdm_session_worker_handle_set_default_session_name (GdmDBusWorker *object,
+ GDBusMethodInvocation *invocation,
+ const char *session_name) + const char *session_name)
+{ +{
+ GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
+ g_debug ("GdmSessionWorker: default session name set to %s", session_name);
+
+ if (worker->priv->pam_handle != NULL) + if (worker->priv->pam_handle != NULL)
+ gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", session_name); + gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", session_name);
+ g_free (worker->priv->suse_session_name); + g_free (worker->priv->suse_session_name);
+ worker->priv->suse_session_name = g_strdup (session_name); + worker->priv->suse_session_name = g_strdup (session_name);
+
+ gdm_dbus_worker_complete_set_default_session_name (object, invocation);
+ return TRUE;
+} +}
+ +
+static void +
on_set_session_name (GdmSessionWorker *worker, static gboolean
DBusMessage *message) gdm_session_worker_handle_set_session_type (GdmDBusWorker *object,
{ GDBusMethodInvocation *invocation,
@@ -2108,6 +2133,28 @@ on_set_session_type (GdmSessionWorker *w @@ -2831,6 +2860,7 @@ worker_interface_init (GdmDBusWorkerIfac
} interface->handle_open = gdm_session_worker_handle_open;
interface->handle_set_language_name = gdm_session_worker_handle_set_language_name;
interface->handle_set_session_name = gdm_session_worker_handle_set_session_name;
+ interface->handle_set_default_session_name = gdm_session_worker_handle_set_default_session_name;
interface->handle_set_session_type = gdm_session_worker_handle_set_session_type;
interface->handle_set_environment_variable = gdm_session_worker_handle_set_environment_variable;
interface->handle_start_program = gdm_session_worker_handle_start_program;
@@ -2943,6 +2973,8 @@ gdm_session_worker_finalize (GObject *ob
static void g_hash_table_unref (worker->priv->reauthentication_requests);
+on_set_default_session_name (GdmSessionWorker *worker,
+ DBusMessage *message)
+{
+ DBusError error;
+ const char *session_name;
+ dbus_bool_t res;
+
+ dbus_error_init (&error);
+ res = dbus_message_get_args (message,
+ &error,
+ DBUS_TYPE_STRING, &session_name,
+ DBUS_TYPE_INVALID);
+ if (res) {
+ g_debug ("GdmSessionWorker: default session name changed; session name set to %s", session_name);
+ gdm_session_worker_set_default_session_name (worker, session_name);
+ } else {
+ g_warning ("Unable to get arguments: %s", error.message);
+ dbus_error_free (&error);
+ }
+}
+
+static void
gdm_session_worker_set_language_name (GdmSessionWorker *worker,
const char *language_name)
{
@@ -2830,6 +2877,8 @@ worker_dbus_handle_message (DBusConnecti
on_set_session_name (worker, message);
} else if (dbus_message_is_signal (message, GDM_SESSION_DBUS_INTERFACE, "SetSessionType")) {
on_set_session_type (worker, message);
+ } else if (dbus_message_is_signal (message, GDM_SESSION_DBUS_INTERFACE, "SetDefaultSessionName")) {
+ on_set_default_session_name (worker, message);
} else {
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
@@ -3001,6 +3050,8 @@ gdm_session_worker_finalize (GObject *ob
g_free (worker->priv->server_address);
g_strfreev (worker->priv->arguments);
+ g_free (worker->priv->suse_session_name); + g_free (worker->priv->suse_session_name);
+ +
G_OBJECT_CLASS (gdm_session_worker_parent_class)->finalize (object); G_OBJECT_CLASS (gdm_session_worker_parent_class)->finalize (object);
} }
Index: gdm-3.3.92.1/daemon/gdm-session-direct.c Index: gdm-3.5.91/daemon/gdm-session-worker.xml
=================================================================== ===================================================================
--- gdm-3.3.92.1.orig/daemon/gdm-session-direct.c --- gdm-3.5.91.orig/daemon/gdm-session-worker.xml
+++ gdm-3.3.92.1/daemon/gdm-session-direct.c +++ gdm-3.5.91/daemon/gdm-session-worker.xml
@@ -135,6 +135,8 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirec @@ -13,6 +13,9 @@
G_IMPLEMENT_INTERFACE (GDM_TYPE_SESSION, <method name="SetSessionName">
gdm_session_iface_init)) <arg name="session_name" direction="in" type="s" />
</method>
+ <method name="SetDefaultSessionName">
+ <arg name="default_session_name" direction="in" type="s"/>
+ </method>
<method name="SetSessionType">
<arg name="session_type" direction="in" type="s"/>
</method>
Index: gdm-3.5.91/daemon/gdm-session.c
===================================================================
--- gdm-3.5.91.orig/daemon/gdm-session.c
+++ gdm-3.5.91/daemon/gdm-session.c
@@ -162,6 +162,8 @@ G_DEFINE_TYPE (GdmSession,
gdm_session,
G_TYPE_OBJECT);
+static const char *get_session_name (GdmSessionDirect *session); +static const char *get_session_name (GdmSession *self);
+ +
static gboolean static GdmSessionConversation *
send_dbus_message (GdmSessionConversation *conversation, find_conversation_by_name (GdmSession *self,
DBusMessage *message) const char *service_name)
@@ -774,10 +776,27 @@ get_default_session_name (GdmSessionDire @@ -598,6 +600,9 @@ get_default_session_name (GdmSession *se
static void static void
gdm_session_direct_defaults_changed (GdmSessionDirect *session) gdm_session_defaults_changed (GdmSession *self)
{ {
+ GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
+ GHashTableIter iter; + GHashTableIter iter;
+ gpointer key, value; + gpointer key, value;
+ const char *text; + const char *text;
if (self->priv->greeter_interface != NULL) {
gdm_dbus_greeter_emit_default_language_name_changed (self->priv->greeter_interface,
@@ -605,6 +610,19 @@ gdm_session_defaults_changed (GdmSession
gdm_dbus_greeter_emit_default_session_name_changed (self->priv->greeter_interface,
get_default_session_name (self));
}
+ +
_gdm_session_default_language_name_changed (GDM_SESSION (session), + text = get_session_name (self);
get_default_language_name (session));
_gdm_session_default_session_name_changed (GDM_SESSION (session),
get_default_session_name (session));
+ +
+ text = get_session_name (impl); + g_hash_table_iter_init (&iter, self->priv->conversations);
+
+ g_hash_table_iter_init (&iter, impl->priv->conversations);
+ while (g_hash_table_iter_next (&iter, &key, &value)) { + while (g_hash_table_iter_next (&iter, &key, &value)) {
+ GdmSessionConversation *conversation; + GdmSessionConversation *conversation;
+ +
+ conversation = (GdmSessionConversation *) value; + conversation = (GdmSessionConversation *) value;
+ +
+ send_dbus_string_signal (conversation, "SetDefaultSessionName", + gdm_dbus_worker_call_set_default_session_name (conversation->worker_proxy,
+ text); + text,
+ NULL, NULL, NULL);
+ } + }
} }
static void void
@@ -1230,11 +1249,28 @@ gdm_session_direct_handle_saved_session_ @@ -910,6 +928,10 @@ worker_on_saved_session_name_read (GdmDB
if (strcmp (session_name, if (strcmp (session_name,
get_default_session_name (session)) != 0) { get_default_session_name (self)) != 0) {
+ GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
+ GHashTableIter iter; + GHashTableIter iter;
+ gpointer key, value; + gpointer key, value;
+ const char *text; + const char *text;
+ +
g_free (session->priv->saved_session); g_free (self->priv->saved_session);
session->priv->saved_session = g_strdup (session_name); self->priv->saved_session = g_strdup (session_name);
_gdm_session_default_session_name_changed (GDM_SESSION (session), @@ -917,6 +939,19 @@ worker_on_saved_session_name_read (GdmDB
gdm_dbus_greeter_emit_default_session_name_changed (self->priv->greeter_interface,
session_name); session_name);
}
+ +
+ text = get_session_name (impl); + text = get_session_name (self);
+ +
+ g_hash_table_iter_init (&iter, impl->priv->conversations); + g_hash_table_iter_init (&iter, self->priv->conversations);
+ while (g_hash_table_iter_next (&iter, &key, &value)) { + while (g_hash_table_iter_next (&iter, &key, &value)) {
+ GdmSessionConversation *conversation; + GdmSessionConversation *conversation;
+ +
+ conversation = (GdmSessionConversation *) value; + conversation = (GdmSessionConversation *) value;
+ +
+ send_dbus_string_signal (conversation, "SetDefaultSessionName", + gdm_dbus_worker_call_set_default_session_name (conversation->worker_proxy,
+ text); + text,
+ NULL, NULL, NULL);
+ } + }
} }
out: }
return DBUS_HANDLER_RESULT_HANDLED;
@@ -1434,6 +1470,9 @@ do_introspect (DBusConnection *connectio
" <signal name=\"SetSessionType\">\n"
" <arg name=\"session_type\" type=\"s\"/>\n"
" </signal>\n"
+ " <signal name=\"SetDefaultSessionName\">\n"
+ " <arg name=\"session_name\" type=\"s\"/>\n"
+ " </signal>\n"
" <signal name=\"StartProgram\">\n"
" <arg name=\"command\" type=\"s\"/>\n"
" </signal>\n"

17
gdm-fingerprint.pamd Normal file
View File

@ -0,0 +1,17 @@
# Sample PAM file for doing fingerprint authentication.
# Distros should replace this with what makes sense for them.
auth required pam_env.so
auth required pam_fprintd.so
auth sufficient pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session required pam_unix.so

View File

@ -1,84 +0,0 @@
Index: gdm-3.1.90/configure.ac
===================================================================
--- gdm-3.1.90.orig/configure.ac
+++ gdm-3.1.90/configure.ac
@@ -1045,6 +1045,22 @@ fi
AC_SUBST(GDM_CUSTOM_CONF)
AC_SUBST(GDM_OLD_CONF, '${gdmconfdir}/gdm.conf')
+AC_ARG_WITH(consolekit-directory,
+ [AC_HELP_STRING([--with-consolekit-directory],
+ [Specify the directory of ck-get-x11-display-device @<:@default=libexecdir@:>@])],,
+ [with_consolekit_directory="\${libexecdir}"])
+
+CONSOLEKIT_DIR=$with_consolekit_directory
+AC_SUBST(CONSOLEKIT_DIR)
+
+AC_ARG_WITH(check-accelerated-directory,
+ [AC_HELP_STRING([--with-check-accelerated-directory],
+ [Specify the directory of gnome-session-check-accelerated @<:@default=libexecdir@:>@])],,
+ [with_check_accelerated_directory="\${libexecdir}"])
+
+CHECK_ACCELERATED_DIR=$with_check_accelerated_directory
+AC_SUBST(CHECK_ACCELERATED_DIR)
+
dnl ---------------------------------------------------------------------------
dnl - Check for XEvIE extension support
dnl ---------------------------------------------------------------------------
@@ -1497,6 +1513,8 @@ echo "
dmconfdir: ${dmconfdir}
localstatedir: ${localstatedir}
datadir: ${datadir}
+ consolekit location: ${with_consolekit_directory}
+ gnome-session-check-accel location: ${with_check_accelerated_directory}
source code location: ${srcdir}
compiler: ${CC}
cflags: ${CFLAGS}
Index: gdm-3.1.90/daemon/Makefile.am
===================================================================
--- gdm-3.1.90.orig/daemon/Makefile.am
+++ gdm-3.1.90/daemon/Makefile.am
@@ -20,6 +20,7 @@ AM_CPPFLAGS = \
-DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \
-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \
-DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \
+ -DCONSOLEKIT_DIR=\"$(CONSOLEKIT_DIR)\" \
$(DISABLE_DEPRECATED_CFLAGS) \
$(DAEMON_CFLAGS) \
$(XLIB_CFLAGS) \
Index: gdm-3.1.90/daemon/gdm-server.c
===================================================================
--- gdm-3.1.90.orig/daemon/gdm-server.c
+++ gdm-3.1.90/daemon/gdm-server.c
@@ -134,7 +134,7 @@ _gdm_server_query_ck_for_display_device
g_return_val_if_fail (GDM_IS_SERVER (server), NULL);
error = NULL;
- command = g_strdup_printf (LIBEXECDIR "/ck-get-x11-display-device --display %s",
+ command = g_strdup_printf (CONSOLEKIT_DIR "/ck-get-x11-display-device --display %s",
server->priv->display_name);
g_debug ("GdmServer: Running helper %s", command);
Index: gdm-3.1.90/data/gdm-shell.session.in
===================================================================
--- gdm-3.1.90.orig/data/gdm-shell.session.in
+++ gdm-3.1.90/data/gdm-shell.session.in
@@ -1,5 +1,5 @@
[GNOME Session]
Name=Display Manager
RequiredComponents=gnome-shell;gnome-settings-daemon;
-IsRunnableHelper=bash -c 'gnome-shell --help | grep -q gdm-mode && @libexecdir@/gnome-session-check-accelerated'
+IsRunnableHelper=bash -c 'gnome-shell --help | grep -q gdm-mode && @CHECK_ACCELERATED_DIR@/gnome-session-check-accelerated'
FallbackSession=gdm-fallback
Index: gdm-3.1.90/data/Makefile.am
===================================================================
--- gdm-3.1.90.orig/data/Makefile.am
+++ gdm-3.1.90/data/Makefile.am
@@ -77,6 +77,7 @@ gdm.schemas.in: $(srcdir)/gdm.schemas.in
gdm-shell.session: $(srcdir)/gdm-shell.session.in
sed -e 's,[@]libexecdir[@],$(libexecdir),g' \
+ -e 's,[@]CHECK_ACCELERATED_DIR[@],$(CHECK_ACCELERATED_DIR),g' \
< $(srcdir)/gdm-shell.session.in > gdm-shell.session
localealiasdir = $(datadir)/gdm

View File

@ -1,8 +1,8 @@
Index: gdm-3.1.2/common/gdm-settings-system-backend.c Index: gdm-3.5.91/common/gdm-settings-system-backend.c
=================================================================== ===================================================================
--- gdm-3.1.2.orig/common/gdm-settings-system-backend.c --- gdm-3.5.91.orig/common/gdm-settings-system-backend.c
+++ gdm-3.1.2/common/gdm-settings-system-backend.c +++ gdm-3.5.91/common/gdm-settings-system-backend.c
@@ -44,11 +44,11 @@ @@ -43,11 +43,11 @@
#define SYSCONFIG_AUTOLOGIN_KEY "DISPLAYMANAGER_AUTOLOGIN" #define SYSCONFIG_AUTOLOGIN_KEY "DISPLAYMANAGER_AUTOLOGIN"
#define SYSCONFIG_TCP_OPEN_KEY "DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" #define SYSCONFIG_TCP_OPEN_KEY "DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN"
#define SYSCONFIG_XDMCP_KEY "DISPLAYMANAGER_REMOTE_ACCESS" #define SYSCONFIG_XDMCP_KEY "DISPLAYMANAGER_REMOTE_ACCESS"
@ -15,7 +15,7 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
* - DISPLAYMANAGER_AD_INTEGRATION * - DISPLAYMANAGER_AD_INTEGRATION
* - DISPLAYMANAGER_SHUTDOWN (handled by ConsoleKit) * - DISPLAYMANAGER_SHUTDOWN (handled by ConsoleKit)
*/ */
@@ -66,12 +66,14 @@ struct GdmSettingsSystemBackendPrivate @@ -65,12 +65,14 @@ struct GdmSettingsSystemBackendPrivate
gboolean dirty_autologin_user; gboolean dirty_autologin_user;
gboolean dirty_tcp_open; gboolean dirty_tcp_open;
gboolean dirty_xdmcp; gboolean dirty_xdmcp;
@ -30,7 +30,7 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
}; };
static void gdm_settings_system_backend_class_init (GdmSettingsSystemBackendClass *klass); static void gdm_settings_system_backend_class_init (GdmSettingsSystemBackendClass *klass);
@@ -141,6 +143,16 @@ gdm_settings_system_backend_get_value (G @@ -140,6 +142,16 @@ gdm_settings_system_backend_get_value (G
val = g_strdup (xdmcp ? "true" : "false"); val = g_strdup (xdmcp ? "true" : "false");
} }
} }
@ -47,7 +47,7 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
} else { } else {
g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found");
goto out; goto out;
@@ -201,6 +213,12 @@ save_settings (GdmSettingsSystemBackend @@ -200,6 +212,12 @@ save_settings (GdmSettingsSystemBackend
backend->priv->set_xdmcp ? "yes" : "no"); backend->priv->set_xdmcp ? "yes" : "no");
} }
@ -60,7 +60,7 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
if (!gdm_sysconfig_save_file (backend->priv->filename, backend->priv->lines)) if (!gdm_sysconfig_save_file (backend->priv->filename, backend->priv->lines))
g_warning ("Unable to save settings to %s.", backend->priv->filename); g_warning ("Unable to save settings to %s.", backend->priv->filename);
@@ -209,6 +227,7 @@ save_settings (GdmSettingsSystemBackend @@ -208,6 +226,7 @@ save_settings (GdmSettingsSystemBackend
backend->priv->dirty_autologin_user = FALSE; backend->priv->dirty_autologin_user = FALSE;
backend->priv->dirty_tcp_open = FALSE; backend->priv->dirty_tcp_open = FALSE;
backend->priv->dirty_xdmcp = FALSE; backend->priv->dirty_xdmcp = FALSE;
@ -68,7 +68,7 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
} }
static gboolean static gboolean
@@ -276,6 +295,9 @@ gdm_settings_system_backend_set_value (G @@ -275,6 +294,9 @@ gdm_settings_system_backend_set_value (G
} else if (!strcasecmp (key, GDM_KEY_XDMCP_ENABLE)) { } else if (!strcasecmp (key, GDM_KEY_XDMCP_ENABLE)) {
priv->set_xdmcp = value_to_boolean (value); priv->set_xdmcp = value_to_boolean (value);
GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_xdmcp = TRUE; GDM_SETTINGS_SYSTEM_BACKEND (backend)->priv->dirty_xdmcp = TRUE;
@ -78,25 +78,25 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
} else { } else {
g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found");
return FALSE; return FALSE;
Index: gdm-3.1.2/common/gdm-settings-keys.h Index: gdm-3.5.91/common/gdm-settings-keys.h
=================================================================== ===================================================================
--- gdm-3.1.2.orig/common/gdm-settings-keys.h --- gdm-3.5.91.orig/common/gdm-settings-keys.h
+++ gdm-3.1.2/common/gdm-settings-keys.h +++ gdm-3.5.91/common/gdm-settings-keys.h
@@ -32,6 +32,7 @@ G_BEGIN_DECLS @@ -33,6 +33,7 @@ G_BEGIN_DECLS
#define GDM_KEY_TIMED_LOGIN_ENABLE "daemon/TimedLoginEnable"
#define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin" #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin"
#define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay" #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay"
#define GDM_KEY_INITIAL_SETUP_ENABLE "daemon/InitialSetupEnable"
+#define GDM_KEY_SUSE_PASSWORDLESS_LOGIN_ENABLE "daemon/SUSEPasswordlessEnable" +#define GDM_KEY_SUSE_PASSWORDLESS_LOGIN_ENABLE "daemon/SUSEPasswordlessEnable"
#define GDM_KEY_DEBUG "debug/Enable" #define GDM_KEY_DEBUG "debug/Enable"
Index: gdm-3.1.2/data/gdm.schemas.in.in Index: gdm-3.5.91/data/gdm.schemas.in.in
=================================================================== ===================================================================
--- gdm-3.1.2.orig/data/gdm.schemas.in.in --- gdm-3.5.91.orig/data/gdm.schemas.in.in
+++ gdm-3.1.2/data/gdm.schemas.in.in +++ gdm-3.5.91/data/gdm.schemas.in.in
@@ -47,6 +47,12 @@ @@ -52,6 +52,12 @@
<signature>i</signature> <signature>b</signature>
<default>30</default> <default>false</default>
</schema> </schema>
+ <schema> + <schema>
+ <!-- SUSE-specific --> + <!-- SUSE-specific -->
@ -107,32 +107,26 @@ Index: gdm-3.1.2/data/gdm.schemas.in.in
<schema> <schema>
<key>debug/Enable</key> <key>debug/Enable</key>
Index: gdm-3.1.2/daemon/gdm-greeter-server.c Index: gdm-3.5.91/daemon/gdm-session.c
=================================================================== ===================================================================
--- gdm-3.1.2.orig/daemon/gdm-greeter-server.c --- gdm-3.5.91.orig/daemon/gdm-session.c
+++ gdm-3.1.2/daemon/gdm-greeter-server.c +++ gdm-3.5.91/daemon/gdm-session.c
@@ -46,6 +46,9 @@ @@ -55,6 +55,9 @@
#include "gdm-session-worker-glue.h"
#include "gdm-common.h" #include "gdm-common.h"
#include "gdm-greeter-server.h"
+#include "gdm-settings-client.h" +#include "gdm-settings-client.h"
+#include "gdm-settings-keys.h" +#include "gdm-settings-keys.h"
+ +
#define GDM_GREETER_SERVER_DBUS_PATH "/org/gnome/DisplayManager/GreeterServer" #define GDM_SESSION_DBUS_ERROR_CANCEL "org.gnome.DisplayManager.Session.Error.Cancel"
#define GDM_GREETER_SERVER_DBUS_INTERFACE "org.gnome.DisplayManager.GreeterServer" #define GDM_SESSION_DBUS_OBJECT_PATH "/org/gnome/DisplayManager/Session"
@@ -478,6 +481,7 @@ handle_begin_verification_for_user (GdmG @@ -1222,6 +1225,15 @@ gdm_session_handle_client_begin_verifica
DBusError error; GdmSession *self)
const char *text; {
const char *service_name; GdmSessionConversation *conversation;
+ gboolean passwordless; + gboolean passwordless;
+
dbus_error_init (&error);
if (! dbus_message_get_args (message, &error,
@@ -488,6 +492,14 @@ handle_begin_verification_for_user (GdmG
}
dbus_error_free (&error);
+ if (!gdm_settings_client_get_boolean (GDM_KEY_SUSE_PASSWORDLESS_LOGIN_ENABLE, + if (!gdm_settings_client_get_boolean (GDM_KEY_SUSE_PASSWORDLESS_LOGIN_ENABLE,
+ &passwordless)) { + &passwordless)) {
+ passwordless = FALSE; + passwordless = FALSE;
@ -140,7 +134,6 @@ Index: gdm-3.1.2/daemon/gdm-greeter-server.c
+ +
+ if (passwordless) + if (passwordless)
+ service_name = "gdm-autologin"; + service_name = "gdm-autologin";
+
g_debug ("GreeterServer: BeginVerificationForUser for '%s'", text);
reply = dbus_message_new_method_return (message); conversation = begin_verification_conversation (self, invocation, service_name);

View File

@ -1,396 +0,0 @@
From e6ed6f48c35a6c736a5cde2dcfb6c10941e07809 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 27 Nov 2009 18:27:53 -0500
Subject: [PATCH 1/2] Save root window to pixmap at _XROOTPMAP_ID
This combined with starting the X server with -nr
will give us a nice fade transition when g-s-d starts
---
daemon/gdm-simple-slave.c | 8 +++++
daemon/gdm-slave.c | 72 +++++++++++++++++++++++++++++++++++++++++++++
daemon/gdm-slave.h | 1 +
3 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index 9d1347a..fc8649c 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -1215,6 +1215,14 @@ setup_server (GdmSimpleSlave *slave)
/* Set the initial keyboard layout to something reasonable */
gdm_slave_set_initial_keyboard_layout (GDM_SLAVE (slave));
+ /* The root window has a background that may be useful
+ * to cross fade or transition from when setting the
+ * login screen background. We read it here, and stuff
+ * it into the standard _XROOTPMAP_ID root window property,
+ * so gnome-settings-daemon can get at it.
+ */
+ gdm_slave_save_root_windows (GDM_SLAVE (slave));
+
}
static void
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
index 371b9bd..694dcde 100644
--- a/daemon/gdm-slave.c
+++ b/daemon/gdm-slave.c
@@ -43,6 +43,7 @@
#include <dbus/dbus-glib-lowlevel.h>
#include <X11/Xlib.h> /* for Display */
+#include <X11/Xatom.h> /* for XA_PIXMAP */
#include <X11/cursorfont.h> /* for watch cursor */
#include <X11/extensions/Xrandr.h>
#include <X11/Xatom.h>
@@ -364,6 +365,77 @@ gdm_slave_run_script (GdmSlave *slave,
return ret;
}
+static void
+gdm_slave_save_root_window_of_screen (GdmSlave *slave,
+ Atom id_atom,
+ int screen_number)
+{
+ Window root_window;
+ GC gc;
+ XGCValues values;
+ Pixmap pixmap;
+ int width, height, depth;
+
+ root_window = RootWindow (slave->priv->server_display,
+ screen_number);
+
+ width = DisplayWidth (slave->priv->server_display, screen_number);
+ height = DisplayHeight (slave->priv->server_display, screen_number);
+ depth = DefaultDepth (slave->priv->server_display, screen_number);
+ pixmap = XCreatePixmap (slave->priv->server_display,
+ root_window,
+ width, height, depth);
+
+ values.function = GXcopy;
+ values.plane_mask = AllPlanes;
+ values.fill_style = FillSolid;
+ values.subwindow_mode = IncludeInferiors;
+
+ gc = XCreateGC (slave->priv->server_display,
+ root_window,
+ GCFunction | GCPlaneMask | GCFillStyle | GCSubwindowMode,
+ &values);
+
+ if (XCopyArea (slave->priv->server_display,
+ root_window, pixmap, gc, 0, 0,
+ width, height, 0, 0)) {
+
+ long pixmap_as_long;
+
+ pixmap_as_long = (long) pixmap;
+
+ XChangeProperty (slave->priv->server_display,
+ root_window, id_atom, XA_PIXMAP,
+ 32, PropModeReplace, (guchar *) &pixmap_as_long,
+ 1);
+
+ }
+
+ XFreeGC (slave->priv->server_display, gc);
+}
+
+void
+gdm_slave_save_root_windows (GdmSlave *slave)
+{
+ int i, number_of_screens;
+ Atom atom;
+
+ number_of_screens = ScreenCount (slave->priv->server_display);
+
+ atom = XInternAtom (slave->priv->server_display,
+ "_XROOTPMAP_ID", False);
+
+ if (atom == 0) {
+ return;
+ }
+
+ for (i = 0; i < number_of_screens; i++) {
+ gdm_slave_save_root_window_of_screen (slave, atom, i);
+ }
+
+ XSync (slave->priv->server_display, False);
+}
+
void
gdm_slave_set_initial_keyboard_layout (GdmSlave *slave)
{
diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h
index 7af20ed..aaaa8f2 100644
--- a/daemon/gdm-slave.h
+++ b/daemon/gdm-slave.h
@@ -78,6 +78,7 @@ void gdm_slave_set_initial_keyboard_layout (GdmSlave *slave);
void gdm_slave_set_initial_cursor_position (GdmSlave *slave);
void gdm_slave_set_busy_cursor (GdmSlave *slave);
+void gdm_slave_save_root_windows (GdmSlave *slave);
gboolean gdm_slave_run_script (GdmSlave *slave,
const char *dir,
const char *username);
--
1.7.9
From 03d92cf39f74b265cc9936bdeabfcf071b102767 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 27 Nov 2009 18:52:54 -0500
Subject: [PATCH 2/2] Enable smooth transition between plymouth and X
This commit checks if plymouth is running, and if so,
turns on the smooth transition between plymouth and X.
---
daemon/gdm-server.c | 55 +++++++++++++++++++++++++++
daemon/gdm-server.h | 1 +
daemon/gdm-simple-slave.c | 91 ++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 146 insertions(+), 1 deletions(-)
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
index 54bf8b3..365590f 100644
--- a/daemon/gdm-server.c
+++ b/daemon/gdm-server.c
@@ -32,6 +32,7 @@
#include <pwd.h>
#include <grp.h>
#include <signal.h>
+#include <sys/ioctl.h>
#include <sys/resource.h>
#ifdef HAVE_SYS_PRCTL_H
@@ -41,6 +42,7 @@
#ifdef WITH_SYSTEMD
#include <systemd/sd-daemon.h>
#endif
+#include <linux/vt.h>
#include <glib.h>
#include <glib/gi18n.h>
@@ -732,6 +734,44 @@ gdm_server_spawn (GdmServer *server,
return ret;
}
+static int
+get_active_vt (void)
+{
+ int console_fd;
+ struct vt_stat console_state = { 0 };
+
+ console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY);
+
+ if (console_fd < 0) {
+ goto out;
+ }
+
+ if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) {
+ goto out;
+ }
+
+out:
+ if (console_fd >= 0) {
+ close (console_fd);
+ }
+
+ return console_state.v_active;
+}
+
+static char *
+get_active_vt_as_string (void)
+{
+ int vt;
+
+ vt = get_active_vt ();
+
+ if (vt <= 0) {
+ return NULL;
+ }
+
+ return g_strdup_printf ("vt%d", vt);
+}
+
/**
* gdm_server_start:
* @disp: Pointer to a GdmDisplay structure
@@ -750,6 +790,21 @@ gdm_server_start (GdmServer *server)
return res;
}
+gboolean
+gdm_server_start_on_active_vt (GdmServer *server)
+{
+ gboolean res;
+ char *vt;
+
+ g_free (server->priv->command);
+ server->priv->command = g_strdup (X_SERVER " -background none -logverbose 7");
+ vt = get_active_vt_as_string ();
+ res = gdm_server_spawn (server, vt);
+ g_free (vt);
+
+ return res;
+}
+
static void
server_died (GdmServer *server)
{
diff --git a/daemon/gdm-server.h b/daemon/gdm-server.h
index b53d68e..4939382 100644
--- a/daemon/gdm-server.h
+++ b/daemon/gdm-server.h
@@ -57,6 +57,7 @@ GdmServer * gdm_server_new (const char *display_id,
const char *seat_id,
const char *auth_file);
gboolean gdm_server_start (GdmServer *server);
+gboolean gdm_server_start_on_active_vt (GdmServer *server);
gboolean gdm_server_stop (GdmServer *server);
char * gdm_server_get_display_device (GdmServer *server);
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index fc8649c..dd19ced 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -93,6 +93,7 @@ struct GdmSimpleSlavePrivate
#ifdef HAVE_LOGINDEVPERM
gboolean use_logindevperm;
#endif
+ guint plymouth_is_running : 1;
};
enum {
@@ -1204,6 +1205,72 @@ on_start_session_later (GdmGreeterServer *session,
slave->priv->start_session_when_ready = FALSE;
}
+static gboolean
+plymouth_is_running (void)
+{
+ int status;
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth --ping",
+ NULL, NULL, &status, &error);
+ if (! res) {
+ g_debug ("Could not ping plymouth: %s", error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
+}
+
+static void
+plymouth_prepare_for_transition (GdmSimpleSlave *slave)
+{
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth deactivate",
+ NULL, NULL, NULL, &error);
+ if (! res) {
+ g_warning ("Could not deactivate plymouth: %s", error->message);
+ g_error_free (error);
+ }
+}
+
+static void
+plymouth_quit_with_transition (GdmSimpleSlave *slave)
+{
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth quit --retain-splash",
+ NULL, NULL, NULL, &error);
+ if (! res) {
+ g_warning ("Could not quit plymouth: %s", error->message);
+ g_error_free (error);
+ }
+ slave->priv->plymouth_is_running = FALSE;
+}
+
+static void
+plymouth_quit_without_transition (GdmSimpleSlave *slave)
+{
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth quit",
+ NULL, NULL, NULL, &error);
+ if (! res) {
+ g_warning ("Could not quit plymouth: %s", error->message);
+ g_error_free (error);
+ }
+ slave->priv->plymouth_is_running = FALSE;
+}
+
static void
setup_server (GdmSimpleSlave *slave)
{
@@ -1223,6 +1290,10 @@ setup_server (GdmSimpleSlave *slave)
*/
gdm_slave_save_root_windows (GDM_SLAVE (slave));
+ /* Plymouth is waiting for the go-ahead to exit */
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_with_transition (slave);
+ }
}
static void
@@ -1426,6 +1497,10 @@ on_server_exited (GdmServer *server,
g_debug ("GdmSimpleSlave: server exited with code %d\n", exit_code);
gdm_slave_stopped (GDM_SLAVE (slave));
+
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_without_transition (slave);
+ }
}
static void
@@ -1438,6 +1513,10 @@ on_server_died (GdmServer *server,
g_strsignal (signal_number));
gdm_slave_stopped (GDM_SLAVE (slave));
+
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_without_transition (slave);
+ }
}
static gboolean
@@ -1484,7 +1563,14 @@ gdm_simple_slave_run (GdmSimpleSlave *slave)
G_CALLBACK (on_server_ready),
slave);
- res = gdm_server_start (slave->priv->server);
+ slave->priv->plymouth_is_running = plymouth_is_running ();
+
+ if (slave->priv->plymouth_is_running) {
+ plymouth_prepare_for_transition (slave);
+ res = gdm_server_start_on_active_vt (slave->priv->server);
+ } else {
+ res = gdm_server_start (slave->priv->server);
+ }
if (! res) {
g_warning (_("Could not start the X "
"server (your graphical environment) "
@@ -1494,6 +1580,9 @@ gdm_simple_slave_run (GdmSimpleSlave *slave)
"In the meantime this display will be "
"disabled. Please restart GDM when "
"the problem is corrected."));
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_without_transition (slave);
+ }
exit (1);
}
--
1.7.9

View File

@ -1,26 +0,0 @@
Index: configure
===================================================================
--- configure.orig
+++ configure
@@ -22287,7 +22287,7 @@ fi
$as_echo "#define HAVE_SELINUX 1" >>confdefs.h
- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux -lattr"
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -873,7 +873,7 @@ if test "x$with_selinux" = "xyes" ; then
AC_CHECK_LIB(selinux,setexeccon,/bin/true)
AC_CHECK_LIB(selinux,is_selinux_enabled,/bin/true)
AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux -lattr"
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
dnl ---------------------------------------------------------------------------

18
gdm-smartcard.pamd Normal file
View File

@ -0,0 +1,18 @@
# Sample PAM file for doing smartcard authentication.
# Distros should replace this with what makes sense for them.
auth required pam_env.so
auth [success=done ignore=ignore default=die] pam_pkcs11.so wait_for_card card_only
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password optional pam_pkcs11.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
session optional pam_keyinit.so revoke
session required pam_limits.so
session required pam_unix.so

View File

@ -1,8 +1,8 @@
Index: gdm-3.1.2/common/Makefile.am Index: gdm-3.5.4/common/Makefile.am
=================================================================== ===================================================================
--- gdm-3.1.2.orig/common/Makefile.am --- gdm-3.5.4.orig/common/Makefile.am
+++ gdm-3.1.2/common/Makefile.am +++ gdm-3.5.4/common/Makefile.am
@@ -73,6 +73,8 @@ libgdmcommon_la_SOURCES = \ @@ -77,6 +77,8 @@ libgdmcommon_la_SOURCES = \
gdm-settings-backend.h \ gdm-settings-backend.h \
gdm-settings-desktop-backend.c \ gdm-settings-desktop-backend.c \
gdm-settings-desktop-backend.h \ gdm-settings-desktop-backend.h \
@ -11,7 +11,7 @@ Index: gdm-3.1.2/common/Makefile.am
gdm-settings-keys.h \ gdm-settings-keys.h \
gdm-settings-utils.h \ gdm-settings-utils.h \
gdm-settings-utils.c \ gdm-settings-utils.c \
@@ -80,6 +82,8 @@ libgdmcommon_la_SOURCES = \ @@ -84,6 +86,8 @@ libgdmcommon_la_SOURCES = \
gdm-settings-direct.h \ gdm-settings-direct.h \
gdm-settings-client.h \ gdm-settings-client.h \
gdm-settings-client.c \ gdm-settings-client.c \
@ -20,10 +20,10 @@ Index: gdm-3.1.2/common/Makefile.am
gdm-log.h \ gdm-log.h \
gdm-log.c \ gdm-log.c \
gdm-md5.h \ gdm-md5.h \
Index: gdm-3.1.2/common/gdm-settings-system-backend.c Index: gdm-3.5.4/common/gdm-settings-system-backend.c
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ gdm-3.1.2/common/gdm-settings-system-backend.c +++ gdm-3.5.4/common/gdm-settings-system-backend.c
@@ -0,0 +1,348 @@ @@ -0,0 +1,348 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ * + *
@ -373,10 +373,10 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.c
+ +
+ return GDM_SETTINGS_BACKEND (object); + return GDM_SETTINGS_BACKEND (object);
+} +}
Index: gdm-3.1.2/common/gdm-settings-system-backend.h Index: gdm-3.5.4/common/gdm-settings-system-backend.h
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ gdm-3.1.2/common/gdm-settings-system-backend.h +++ gdm-3.5.4/common/gdm-settings-system-backend.h
@@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ * + *
@ -434,11 +434,11 @@ Index: gdm-3.1.2/common/gdm-settings-system-backend.h
+G_END_DECLS +G_END_DECLS
+ +
+#endif /* __GDM_SETTINGS_SYSTEM_BACKEND_H */ +#endif /* __GDM_SETTINGS_SYSTEM_BACKEND_H */
Index: gdm-3.1.2/common/gdm-settings.c Index: gdm-3.5.4/common/gdm-settings.c
=================================================================== ===================================================================
--- gdm-3.1.2.orig/common/gdm-settings.c --- gdm-3.5.4.orig/common/gdm-settings.c
+++ gdm-3.1.2/common/gdm-settings.c +++ gdm-3.5.4/common/gdm-settings.c
@@ -41,6 +41,7 @@ @@ -39,6 +39,7 @@
#include "gdm-settings-glue.h" #include "gdm-settings-glue.h"
#include "gdm-settings-desktop-backend.h" #include "gdm-settings-desktop-backend.h"
@ -446,16 +446,16 @@ Index: gdm-3.1.2/common/gdm-settings.c
#define GDM_DBUS_PATH "/org/gnome/DisplayManager" #define GDM_DBUS_PATH "/org/gnome/DisplayManager"
#define GDM_SETTINGS_DBUS_PATH GDM_DBUS_PATH "/Settings" #define GDM_SETTINGS_DBUS_PATH GDM_DBUS_PATH "/Settings"
@@ -51,7 +52,7 @@ @@ -50,7 +51,7 @@ struct GdmSettingsPrivate
struct GdmSettingsPrivate
{ {
DBusGConnection *connection; GDBusConnection *connection;
GdmDBusSettings *skeleton;
- GdmSettingsBackend *backend; - GdmSettingsBackend *backend;
+ GList *backends; + GList *backends;
}; };
enum { enum {
@@ -92,15 +93,29 @@ gdm_settings_get_value (GdmSettings *set @@ -91,15 +92,29 @@ gdm_settings_get_value (GdmSettings *set
{ {
GError *local_error; GError *local_error;
gboolean res; gboolean res;
@ -489,7 +489,7 @@ Index: gdm-3.1.2/common/gdm-settings.c
if (! res) { if (! res) {
g_propagate_error (error, local_error); g_propagate_error (error, local_error);
} }
@@ -120,6 +135,7 @@ gdm_settings_set_value (GdmSettings *set @@ -119,6 +134,7 @@ gdm_settings_set_value (GdmSettings *set
{ {
GError *local_error; GError *local_error;
gboolean res; gboolean res;
@ -497,7 +497,7 @@ Index: gdm-3.1.2/common/gdm-settings.c
g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE); g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE);
g_return_val_if_fail (key != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE);
@@ -127,10 +143,23 @@ gdm_settings_set_value (GdmSettings *set @@ -126,10 +142,23 @@ gdm_settings_set_value (GdmSettings *set
g_debug ("Setting value %s", key); g_debug ("Setting value %s", key);
local_error = NULL; local_error = NULL;
@ -525,7 +525,7 @@ Index: gdm-3.1.2/common/gdm-settings.c
if (! res) { if (! res) {
g_propagate_error (error, local_error); g_propagate_error (error, local_error);
} }
@@ -208,13 +237,21 @@ backend_value_changed (GdmSettingsBacken @@ -265,13 +294,21 @@ backend_value_changed (GdmSettingsBacken
static void static void
gdm_settings_init (GdmSettings *settings) gdm_settings_init (GdmSettings *settings)
{ {
@ -552,7 +552,7 @@ Index: gdm-3.1.2/common/gdm-settings.c
} }
static void static void
@@ -229,9 +266,9 @@ gdm_settings_finalize (GObject *object) @@ -286,9 +323,9 @@ gdm_settings_finalize (GObject *object)
g_return_if_fail (settings->priv != NULL); g_return_if_fail (settings->priv != NULL);
@ -565,10 +565,10 @@ Index: gdm-3.1.2/common/gdm-settings.c
G_OBJECT_CLASS (gdm_settings_parent_class)->finalize (object); G_OBJECT_CLASS (gdm_settings_parent_class)->finalize (object);
} }
Index: gdm-3.1.2/common/gdm-sysconfig.c Index: gdm-3.5.4/common/gdm-sysconfig.c
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ gdm-3.1.2/common/gdm-sysconfig.c +++ gdm-3.5.4/common/gdm-sysconfig.c
@@ -0,0 +1,484 @@ @@ -0,0 +1,484 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ * + *
@ -1054,10 +1054,10 @@ Index: gdm-3.1.2/common/gdm-sysconfig.c
+ g_strfreev (lines); + g_strfreev (lines);
+ return result; + return result;
+} +}
Index: gdm-3.1.2/common/gdm-sysconfig.h Index: gdm-3.5.4/common/gdm-sysconfig.h
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ gdm-3.1.2/common/gdm-sysconfig.h +++ gdm-3.5.4/common/gdm-sysconfig.h
@@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ * + *
@ -1102,10 +1102,10 @@ Index: gdm-3.1.2/common/gdm-sysconfig.h
+G_END_DECLS +G_END_DECLS
+ +
+#endif /* __GDM_SYSCONFIG_H */ +#endif /* __GDM_SYSCONFIG_H */
Index: gdm-3.1.2/data/gdm.conf-custom.in Index: gdm-3.5.4/data/gdm.conf-custom.in
=================================================================== ===================================================================
--- gdm-3.1.2.orig/data/gdm.conf-custom.in --- gdm-3.5.4.orig/data/gdm.conf-custom.in
+++ gdm-3.1.2/data/gdm.conf-custom.in +++ gdm-3.5.4/data/gdm.conf-custom.in
@@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
# GDM configuration storage # GDM configuration storage
+# +#

View File

@ -1,117 +0,0 @@
Index: gdm-2.91.4/daemon/gdm-server.c
===================================================================
--- gdm-2.91.4.orig/daemon/gdm-server.c
+++ gdm-2.91.4/daemon/gdm-server.c
@@ -27,6 +27,7 @@
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <sys/vt.h>
#include <errno.h>
#include <ctype.h>
#include <pwd.h>
@@ -157,6 +158,92 @@ _gdm_server_query_ck_for_display_device
return out;
}
+#ifndef O_NOCTTY
+# define O_NOCTTY 0
+#endif
+
+static int
+open_vt (int vtno)
+{
+ char *vtname;
+ int fd;
+
+ vtname = g_strdup_printf ("/dev/tty%d", vtno);
+
+ do {
+ errno = 0;
+ fd = open (vtname, O_RDWR | O_NOCTTY, 0);
+ } while (errno == EINTR);
+
+ g_free (vtname);
+ return fd;
+}
+
+static gint
+find_first_probably_free_vt (void)
+{
+ int fd, fdv;
+ int vtno;
+ unsigned short vtmask;
+ struct vt_stat vtstat;
+ guint v_state;
+
+ fdv = -1;
+
+ do {
+ errno = 0;
+ fd = open ("/dev/console", O_WRONLY | O_NOCTTY, 0);
+ } while (errno == EINTR);
+
+ if (fd >= 0) {
+ if (ioctl (fd, VT_GETSTATE, &vtstat) >= 0) {
+ v_state = vtstat.v_state;
+ } else {
+ close (fd);
+ v_state = 0;
+ fd = -1;
+ }
+ } else {
+ v_state = 0;
+ }
+
+ if (fd < 0) {
+ do {
+ errno = 0;
+ fd = open ("/dev/console", O_RDONLY | O_NOCTTY, 0);
+ } while (errno == EINTR);
+
+ if (fd >= 0) {
+ if (ioctl (fd, VT_GETSTATE, &vtstat) >= 0)
+ v_state = vtstat.v_state;
+ }
+ }
+
+ for (vtno = 7, vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) {
+ /* Is this console in use? */
+ if (v_state & vtmask)
+ continue;
+
+ /* No, try to open it */
+ fdv = open_vt (vtno);
+ if (fdv >= 0)
+ break;
+
+ /* If we're here, kernel indicated that the console was free,
+ * but we failed to open it. Just go on to higher VTs. */
+ }
+
+ if (fdv >= 0)
+ close (fdv);
+ else
+ vtno = -1;
+
+ if (fd >= 0)
+ close (fd);
+
+ return vtno;
+}
+
char *
gdm_server_get_display_device (GdmServer *server)
{
@@ -317,6 +404,11 @@ gdm_server_resolve_command_line (GdmServ
if (vtarg != NULL && ! gotvtarg) {
argv[len++] = g_strdup (vtarg);
+ } else if (!query_in_arglist && !gotvtarg) {
+ gint vtnum = find_first_probably_free_vt ();
+
+ if (vtnum > 0)
+ argv [len++] = g_strdup_printf ("vt%d", vtnum);
}
argv[len++] = NULL;

View File

@ -1,7 +1,7 @@
Index: daemon/gdm-display-access-file.c Index: gdm-3.5.91/daemon/gdm-display-access-file.c
=================================================================== ===================================================================
--- daemon/gdm-display-access-file.c.orig --- gdm-3.5.91.orig/daemon/gdm-display-access-file.c
+++ daemon/gdm-display-access-file.c +++ gdm-3.5.91/daemon/gdm-display-access-file.c
@@ -440,11 +440,15 @@ _get_auth_info_for_display (GdmDisplayAc @@ -440,11 +440,15 @@ _get_auth_info_for_display (GdmDisplayAc
if (is_local) { if (is_local) {
char localhost[HOST_NAME_MAX + 1] = ""; char localhost[HOST_NAME_MAX + 1] = "";
@ -18,28 +18,44 @@ Index: daemon/gdm-display-access-file.c
} else { } else {
*family = FamilyWild; *family = FamilyWild;
gdm_display_get_remote_hostname (display, address, NULL); gdm_display_get_remote_hostname (display, address, NULL);
Index: daemon/gdm-session-direct.c Index: gdm-3.5.91/daemon/gdm-launch-environment.c
=================================================================== ===================================================================
--- daemon/gdm-session-direct.c.orig --- gdm-3.5.91.orig/daemon/gdm-launch-environment.c
+++ daemon/gdm-session-direct.c +++ gdm-3.5.91/daemon/gdm-launch-environment.c
@@ -2119,6 +2119,12 @@ setup_session_environment (GdmSessionDir @@ -306,6 +306,11 @@ build_launch_environment (GdmLaunchEnvir
g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
} }
+ if (launch_environment->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")));
+ if (session_direct->priv->display_is_local) { g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
+ gdm_session_direct_set_environment_variable (session, Index: gdm-3.5.91/daemon/gdm-session.c
===================================================================
--- gdm-3.5.91.orig/daemon/gdm-session.c
+++ gdm-3.5.91/daemon/gdm-session.c
@@ -2297,6 +2297,12 @@ setup_session_environment (GdmSession *s
self->priv->user_x11_authority_file);
}
+ if (self->priv->display_is_local) {
+ gdm_session_set_environment_variable (self,
+ "XAUTHLOCALHOSTNAME", + "XAUTHLOCALHOSTNAME",
+ "localhost"); + "localhost");
+ } + }
+ +
/* FIXME: We do this here and in the session worker. We should consolidate if (g_getenv ("WINDOWPATH") != NULL) {
* somehow. gdm_session_set_environment_variable (self,
*/ "WINDOWPATH",
Index: daemon/gdm-slave.c Index: gdm-3.5.91/daemon/gdm-slave.c
=================================================================== ===================================================================
--- daemon/gdm-slave.c.orig --- gdm-3.5.91.orig/daemon/gdm-slave.c
+++ daemon/gdm-slave.c +++ gdm-3.5.91/daemon/gdm-slave.c
@@ -234,6 +234,10 @@ get_script_environment (GdmSlave *slav @@ -255,6 +255,10 @@ get_script_environment (GdmSlave *slav
g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (slave->priv->display_hostname)); g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (slave->priv->display_hostname));
} }
@ -50,7 +66,7 @@ Index: daemon/gdm-slave.c
/* Runs as root */ /* 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 ("XAUTHORITY"), g_strdup (slave->priv->display_x11_authority_file));
g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (slave->priv->display_name)); g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (slave->priv->display_name));
@@ -483,6 +487,7 @@ gdm_slave_connect_to_x11_display (GdmSla @@ -652,6 +656,7 @@ gdm_slave_connect_to_x11_display (GdmSla
g_setenv ("DISPLAY", slave->priv->display_name, TRUE); g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE); g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
@ -58,19 +74,3 @@ Index: daemon/gdm-slave.c
sigemptyset (&mask); sigemptyset (&mask);
sigaddset (&mask, SIGCHLD); sigaddset (&mask, SIGCHLD);
Index: daemon/gdm-welcome-session.c
===================================================================
--- daemon/gdm-welcome-session.c.orig
+++ daemon/gdm-welcome-session.c
@@ -435,6 +435,11 @@ get_welcome_environment (GdmWelcomeSessi
g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
}
+ 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")));
g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));

View File

@ -1,3 +1,190 @@
-------------------------------------------------------------------
Tue Sep 25 19:01:14 UTC 2012 - dimstar@opensuse.org
- Update to version 3.6.0:
+ Update exherbo PAM config
+ screen reading fixes
+ start dbus-daemon inside greeter session
+ Updated translations.
-------------------------------------------------------------------
Tue Sep 18 21:31:05 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.92.1:
+ Fix crasher when hitting escape really fast at unlock time.
-------------------------------------------------------------------
Tue Sep 18 20:59:46 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.92:
+ More PAM distro changes
+ Clean up initialization code
+ export Version property over bus
+ SELinux integration
+ ConsoleKit fixes
+ Autologin fixes
+ Make reauthentication session have user's environment
+ Updated translations.
- Drop gdm-gdmslave-typo.patch: fixed upstream.
-------------------------------------------------------------------
Thu Sep 13 20:24:57 UTC 2012 - dimstar@opensuse.org
- Add gdm-gdmslave-typo.patch: Fix typo in Method call, which can
cause gdm to crash on login when operated with ConsoleKit.
-------------------------------------------------------------------
Tue Sep 11 19:39:25 UTC 2012 - vuntz@opensuse.org
- Rebase gdm-desktop-session-env-pam.patch and
gdm-passwordless-login.patch.
-------------------------------------------------------------------
Tue Sep 11 18:10:24 UTC 2012 - vuntz@opensuse.org
- Only have a ConsoleKit-x11 Requires if we don't build with
systemd support.
-------------------------------------------------------------------
Wed Sep 5 07:05:22 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.91:
+ Fix multi-seat
+ Memory leak fix
+ initial-setup feature fixes
+ Reauth fixes
+ Make PostLogin failures to fail login
+ More PAM distro support
+ Misc data file changes
+ More debug messages
+ Use yelp-tools for docs
+ Drop libxklavier dependency
+ Updated translations.
- Drop upstream fixed patches:
+ gdm-helper-directory.patch
+ gdm-vtswitch-nonsystemd.patch
- Rebase (and re-enable) gdm-default-wm.patch.
- Rebase (and re-enable) gdm-xauthlocalhostname.patch
- Drop libxklavier-devel BuildRequires: dependency dropped
upstream.
- Replace gnome-doc-utils-devel BuildRequires with yelp-tools,
following upstream.
- Replace intltool and libtool BuildRequires with gnome-common, as
well as libtoolize and autoreconf calls with gnome-autogen.sh:
the build system is too specific and some spurious errors can be
avoided by boostrapping it the supported way.
-------------------------------------------------------------------
Tue Aug 21 07:29:43 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.90:
+ Reauthentication fixes
+ Change user-switching mechanism from gdmflexiserver helper to
libgdm
+ Set KRB5CCNAME environment variable for session
+ Memory leaks and other misc fixes
+ Updated translations.
- Drop gdmflexiserver subpackage and gdmflexiserver-wrapper source:
user-switching mechanism moved to libgdm and no longer relies on
gdmflexiserver.
- Add a gdmflexiserver Obsoletes to gdm main package, for smooth
upgrades. Also remove the gdmflexiserver Requires that was there.
- Rename gdm-welcome.pamd to gdm-launch-environment.pamd, following
upstreams rename.
- Add gdm-vtswitch-nonsystemd.patch: Fix vt switch when not using
systemd.
-------------------------------------------------------------------
Tue Aug 7 09:53:24 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.5:
+ Add initial setup integration
+ "Fix" timed login
+ Fix up ConsoleKit integration post-gdbus port
+ Code clean ups/refactoring
+ Make initial VT a ./configure option
+ Updated translations.
- Drop gdm-vt-allocation-hack.patch in favor of --with-initial-vt=7
passed to configure.
-------------------------------------------------------------------
Thu Aug 2 06:58:44 UTC 2012 - dimstar@opensuse.org
- Remove SELinux support (following upstream):
+ Drop libselinux-devel BuildRequires
+ Remove --with-selinux from configure call
+ Drop gdm-selinux.patch
-------------------------------------------------------------------
Fri Jul 20 06:58:44 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.4.2:
+ Fix non autologin
+ Updated translations.
-------------------------------------------------------------------
Thu Jul 19 17:51:27 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.4.1:
+ Fix autologin
+ Update PAM configuration for red hat distros
+ Make sure gdm-client-glue.h gets installed with libgdm
+ Change SetupForProgram interface to allow specifying a username
+ Drop GdmGreeterSession and GdmChooserSession, just use
GdmWelcomeSession directly
+ Change dconf profile to be compatible with latest dconf
+ Fix VerificationComplete signal for external gdm clients
+ Updated translations.
-------------------------------------------------------------------
Wed Jul 18 11:50:41 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.4:
+ Rename libgdmgreeter to libgdm and change API
+ Be less chatty in syslog
+ Reload settings on SIGHUP
+ Start polkit agent in fallback session
+ Port to gdbus
+ Deprecation fixes
+ PAM file reorganization
+ Misc fixes
+ Updated translations.
- Drop dbus-1-glib-devel BuildRequires: not needed after port to
GDBus.
- Rebase patches:
+ gdm-helper-directory.patch
+ gdm-sysconfig-settings.patch
- Disable and mark patches for rebasing:
+ gdm-desktop-session-env-pam.patch
+ gdm-passwordless-login.patch
+ gdm-default-wm.patch
+ gdm-xauthlocalhostname.patch
- Rename libgdmgreeter1 package to libgdm1, following upstreams
renaming of the library.
- Rename typelib-1_0-GdmGreeter-1_0 subpackage to
typelib-1_0-Gdm-1_0
- Add copies of gdm-fingerprint.pamd and gdm-smartcard.pamd to our
package, based on the Red Hat ones (until we upstream our
variants, bgo#675085). Note that they won't be used since we
don't build with enable_split_authentication.
-------------------------------------------------------------------
Sun Jul 15 21:24:17 UTC 2012 - dimstar@opensuse.org
- Update to version 3.5.2:
+ Robustness updates for greeter dbus-daemon life-cycle
management
+ Add ability to disable documentation generation at build time
+ Add more verbosity in PAM code
+ Use systemd to shutdown from greeter
+ Use new gnome-shell mode
+ Add ability to build with plymouth support
+ Save log to $XDG_CACHE_HOME/gdm/session.log instead of
~/.xsession-errors
- Add pkgconfig(ply-boot-client) BuildRequires and pass
--with-plymouth to configure for plymouth support.
- Drop gdm-plymouth.patch: plymouth support has been upstreamed.
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Jul 13 11:41:41 CEST 2012 - vuntz@opensuse.org Fri Jul 13 11:41:41 CEST 2012 - vuntz@opensuse.org

117
gdm.spec
View File

@ -24,36 +24,30 @@
%define enable_split_authentication 0 %define enable_split_authentication 0
Name: gdm Name: gdm
Version: 3.4.1 Version: 3.6.0
Release: 0 Release: 0
Summary: The GNOME Display Manager Summary: The GNOME Display Manager
License: GPL-2.0+ License: GPL-2.0+
Group: System/GUI/GNOME Group: System/GUI/GNOME
Url: http://projects.gnome.org/gdm/ Url: http://projects.gnome.org/gdm/
Source: http://download.gnome.org/sources/gdm/3.4/%{name}-%{version}.tar.xz Source: http://download.gnome.org/sources/gdm/3.6/%{name}-%{version}.tar.xz
Source1: gdm.pamd Source1: gdm.pamd
Source2: gdm-autologin.pamd Source2: gdm-autologin.pamd
Source3: gdm-welcome.pamd Source3: gdm-launch-environment.pamd
# gdmflexiserver wrapper, to enable other display managers to abuse the gdmflexiserver namespace (like lightdm) Source6: gdm-fingerprint.pamd
Source4: gdmflexiserver-wrapper Source7: gdm-smartcard.pamd
# /etc/xinit.d/xdm integration script # /etc/xinit.d/xdm integration script
Source5: X11-displaymanager-gdm Source5: X11-displaymanager-gdm
# PATCH-FEATURE-UPSTREAM gdm-plymouth.patch vuntz@opensuse.org -- Get a nice transition from plymouth; taken from Fedora
Patch0: gdm-plymouth.patch
# PATCH-FIX-UPSTREAM gdm-helper-directory.patch bgo582320 vuntz@novell.com -- Add --with-consolekit-directory, --with-check-accelerated-directory
Patch2: gdm-helper-directory.patch
# PATCH-FIX-OPENSUSE gdm-is-not-unstable-unless.patch vuntz@opensuse.org -- Make gdm think it's never running a development version unless SUSE_ENABLE_UNSTABLE_CHECK is set. This disables fatal warnings as well as abusive log # PATCH-FIX-OPENSUSE gdm-is-not-unstable-unless.patch vuntz@opensuse.org -- Make gdm think it's never running a development version unless SUSE_ENABLE_UNSTABLE_CHECK is set. This disables fatal warnings as well as abusive log
Patch3: gdm-is-not-unstable-unless.patch Patch3: gdm-is-not-unstable-unless.patch
# PATCH-FIX-UPSTREAM gdm-vt-allocation-hack.patch bgo511168 hpj@novell.com -- Needed for user switching # PATCH-NEEDS-REBASE PATCH-FIX-OPENSUSE gdm-desktop-session-env-pam.patch bnc427744 vuntz@novell.com -- Sets a PAM environment variable to let the pam gnome-keyring module know which session is started
Patch4: gdm-vt-allocation-hack.patch
# PATCH-FIX-OPENSUSE gdm-desktop-session-env-pam.patch bnc427744 vuntz@novell.com -- Sets a PAM environment variable to let the pam gnome-keyring module know which session is started
Patch6: gdm-desktop-session-env-pam.patch Patch6: gdm-desktop-session-env-pam.patch
# PATCH-FIX-OPENSUSE gdm-suse-xsession.patch vuntz@novell.com -- Use the /etc/X11/xdm/* scripts # PATCH-FIX-OPENSUSE gdm-suse-xsession.patch vuntz@novell.com -- Use the /etc/X11/xdm/* scripts
Patch7: gdm-suse-xsession.patch Patch7: gdm-suse-xsession.patch
# WARNING: do not remove/significantly change patch8 without updating the relevant patch in accountsservice too # WARNING: do not remove/significantly change patch8 without updating the relevant patch in accountsservice too
# PATCH-FIX-OPENSUSE gdm-sysconfig-settings.patch bnc432360 hpj@novell.com -- Read autologin options from /etc/sysconfig/displaymanager; note that accountsservice has a similar patch (accountsservice-sysconfig.patch) # PATCH-FIX-OPENSUSE gdm-sysconfig-settings.patch bnc432360 hpj@novell.com -- Read autologin options from /etc/sysconfig/displaymanager; note that accountsservice has a similar patch (accountsservice-sysconfig.patch)
Patch8: gdm-sysconfig-settings.patch Patch8: gdm-sysconfig-settings.patch
# PATCH-FEATURE-OPENSUSE gdm-passwordless-login.patch vuntz@opensuse.org -- Support DISPLAYMANAGER_PASSWORD_LESS_LOGIN sysconfig option # PATCH-NEEDS-REBASE PATCH-FEATURE-OPENSUSE gdm-passwordless-login.patch vuntz@opensuse.org -- Support DISPLAYMANAGER_PASSWORD_LESS_LOGIN sysconfig option
Patch9: gdm-passwordless-login.patch Patch9: gdm-passwordless-login.patch
# PATCH-FIX-UPSTREAM gdm-greeter-greater-ui.patch bnc436431 bgo560508 vuntz@novell.com -- Improve the layout of the greeter. Note: the patch contains a patched glade file *and* the result glade file (for reference only, in case we need to rebase the patch) # PATCH-FIX-UPSTREAM gdm-greeter-greater-ui.patch bnc436431 bgo560508 vuntz@novell.com -- Improve the layout of the greeter. Note: the patch contains a patched glade file *and* the result glade file (for reference only, in case we need to rebase the patch)
Patch15: gdm-greeter-greater-ui.patch Patch15: gdm-greeter-greater-ui.patch
@ -65,27 +59,20 @@ Patch34: gdm-default-wm.patch
Patch35: gdm-xauthlocalhostname.patch Patch35: gdm-xauthlocalhostname.patch
# PATCH-FIX-UPSTREAM gdm-look-at-runlevel.patch bnc540482 bgo599180 vuntz@opensuse.org -- Look at the current runlevel before managing the display again, so we don't do this when shutting down or rebooting # PATCH-FIX-UPSTREAM gdm-look-at-runlevel.patch bnc540482 bgo599180 vuntz@opensuse.org -- Look at the current runlevel before managing the display again, so we don't do this when shutting down or rebooting
Patch40: gdm-look-at-runlevel.patch Patch40: gdm-look-at-runlevel.patch
# PATCH-FIX-OPENSUSE gdm-selinux.patch -- Small changes to make it compile fine with SELinux
Patch60: gdm-selinux.patch
BuildRequires: check-devel BuildRequires: check-devel
BuildRequires: dbus-1-glib-devel
# needed for directory ownership # needed for directory ownership
BuildRequires: dconf BuildRequires: dconf
BuildRequires: gnome-doc-utils-devel BuildRequires: gnome-common
# needed for directory ownership # needed for directory ownership
BuildRequires: gnome-session-core BuildRequires: gnome-session-core
BuildRequires: gobject-introspection-devel >= 0.9.12 BuildRequires: gobject-introspection-devel >= 0.9.12
BuildRequires: intltool
BuildRequires: iso-codes-devel BuildRequires: iso-codes-devel
BuildRequires: libXdmcp-devel BuildRequires: libXdmcp-devel
BuildRequires: libXi-devel BuildRequires: libXi-devel
BuildRequires: libXinerama-devel BuildRequires: libXinerama-devel
BuildRequires: libattr-devel BuildRequires: libattr-devel
BuildRequires: libcanberra-devel BuildRequires: libcanberra-devel
BuildRequires: libselinux-devel
BuildRequires: libtool
BuildRequires: libupower-glib-devel BuildRequires: libupower-glib-devel
BuildRequires: libxklavier-devel
BuildRequires: pam-devel BuildRequires: pam-devel
BuildRequires: pwdutils BuildRequires: pwdutils
BuildRequires: tcpd-devel BuildRequires: tcpd-devel
@ -96,15 +83,17 @@ BuildRequires: xorg-x11-server-extra
BuildRequires: pkgconfig(accountsservice) BuildRequires: pkgconfig(accountsservice)
%if %{with_systemd} %if %{with_systemd}
BuildRequires: pkgconfig(libsystemd-daemon) BuildRequires: pkgconfig(libsystemd-daemon)
BuildRequires: pkgconfig(libsystemd-login) BuildRequires: pkgconfig(libsystemd-login) >= 186
%endif %endif
BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(nss)
BuildRequires: pkgconfig(ply-boot-client)
BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xau) BuildRequires: pkgconfig(xau)
BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrandr)
Requires: %{name}-branding = %{version} Requires: %{name}-branding = %{version}
%if ! %{with_systemd}
Requires: ConsoleKit-x11 Requires: ConsoleKit-x11
Requires: gdmflexiserver %endif
Requires: gnome-session-core Requires: gnome-session-core
Requires: klogd Requires: klogd
Requires: xorg-x11-server-extra Requires: xorg-x11-server-extra
@ -131,6 +120,8 @@ Provides: gdm2 = %{version}
Obsoletes: gdm2 < %{version} Obsoletes: gdm2 < %{version}
Provides: gnome-applets-gdm = %{version} Provides: gnome-applets-gdm = %{version}
Obsoletes: gnome-applets-gdm < %{version} Obsoletes: gnome-applets-gdm < %{version}
# gdmflexiserver is dropped since 3.5.90
Obsoletes: gdmflexiserver < %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
DocDir: %{_defaultdocdir} DocDir: %{_defaultdocdir}
%glib2_gsettings_schema_requires %glib2_gsettings_schema_requires
@ -139,20 +130,20 @@ DocDir: %{_defaultdocdir}
The GNOME Display Manager is a system service that is responsible for The GNOME Display Manager is a system service that is responsible for
providing graphical log-ins and managing local and remote displays. providing graphical log-ins and managing local and remote displays.
%package -n libgdmgreeter1 %package -n libgdm1
Summary: Client Library for Communicating with GDM Greeter Server Summary: Client Library for Communicating with GDM Greeter Server
Group: System/Libraries Group: System/Libraries
Recommends: gdm Recommends: gdm
%description -n libgdmgreeter1 %description -n libgdm1
The GNOME Display Manager is a system service that is responsible for The GNOME Display Manager is a system service that is responsible for
providing graphical log-ins and managing local and remote displays. providing graphical log-ins and managing local and remote displays.
%package -n typelib-1_0-GdmGreeter-1_0 %package -n typelib-1_0-Gdm-1_0
Summary: Client Library for Communicating with GDM Greeter Server -- Introspection bindings Summary: Client Library for Communicating with GDM Greeter Server -- Introspection bindings
Group: System/Libraries Group: System/Libraries
%description -n typelib-1_0-GdmGreeter-1_0 %description -n typelib-1_0-Gdm-1_0
The GNOME Display Manager is a system service that is responsible for The GNOME Display Manager is a system service that is responsible for
providing graphical log-ins and managing local and remote displays. providing graphical log-ins and managing local and remote displays.
@ -183,9 +174,9 @@ providing graphical log-ins and managing local and remote displays.
%package devel %package devel
Summary: Libraries for GDM -- Development Files Summary: Libraries for GDM -- Development Files
Group: Development/Libraries/GNOME Group: Development/Libraries/GNOME
Requires: libgdmgreeter1 = %{version} Requires: libgdm1 = %{version}
Requires: libgdmsimplegreeter1 = %{version} Requires: libgdmsimplegreeter1 = %{version}
Requires: typelib-1_0-GdmGreeter-1_0 = %{version} Requires: typelib-1_0-Gdm-1_0 = %{version}
Provides: libgdmsimplegreeter-devel = %{version} Provides: libgdmsimplegreeter-devel = %{version}
Obsoletes: libgdmsimplegreeter-devel < %{version} Obsoletes: libgdmsimplegreeter-devel < %{version}
@ -211,26 +202,11 @@ providing graphical log-ins and managing local and remote displays.
This package provides the upstream default configuration for gdm. This package provides the upstream default configuration for gdm.
%package -n gdmflexiserver
Summary: Gdmflexiserver Compatibility Wrapper for Display Managers
Group: System/GUI/GNOME
Suggests: gdm
BuildArch: noarch
%description -n gdmflexiserver
The gdmflexiserver tool interacts with the display manager to
enable fast user switching. This package contains a wrapper that
selects the correct gdmflexiserver implementatoin, based on the
running display manager.
%lang_package %lang_package
%prep %prep
%setup -q %setup -q
translation-update-upstream translation-update-upstream
%patch0 -p1
%patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1
%patch6 -p1 %patch6 -p1
%patch7 -p1 %patch7 -p1
%patch8 -p1 %patch8 -p1
@ -238,13 +214,11 @@ translation-update-upstream
%patch15 -p1 %patch15 -p1
%patch18 -p1 %patch18 -p1
%patch34 -p1 %patch34 -p1
%patch35 -p0 %patch35 -p1
%patch40 -p1 %patch40 -p1
%patch60
%build %build
libtoolize -f -i NOCONFIGURE=1 gnome-autogen.sh
autoreconf -f -i
%configure\ %configure\
--disable-static \ --disable-static \
--libexecdir=%{_prefix}/lib/gdm \ --libexecdir=%{_prefix}/lib/gdm \
@ -252,8 +226,8 @@ autoreconf -f -i
--with-at-spi-registryd-directory=%{_libexecdir}/at-spi \ --with-at-spi-registryd-directory=%{_libexecdir}/at-spi \
--with-consolekit-directory=%{_libexecdir}/ConsoleKit \ --with-consolekit-directory=%{_libexecdir}/ConsoleKit \
--with-check-accelerated-directory=%{_libexecdir} \ --with-check-accelerated-directory=%{_libexecdir} \
--with-selinux \
--enable-ipv6 \ --enable-ipv6 \
--with-plymouth \
%if %{with_systemd} %if %{with_systemd}
--with-systemd \ --with-systemd \
%else %else
@ -265,7 +239,8 @@ autoreconf -f -i
%else %else
--disable-split-authentication \ --disable-split-authentication \
%endif %endif
--disable-scrollkeeper --disable-scrollkeeper \
--with-initial-vt=7
%__make %{?jobs:-j%jobs} V=1 %__make %{?jobs:-j%jobs} V=1
%install %install
@ -290,7 +265,11 @@ cp %{SOURCE1} $RPM_BUILD_ROOT/etc/pam.d/gdm
# Pam config for autologin # Pam config for autologin
cp %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/gdm-autologin cp %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/gdm-autologin
# Pam config for the greeter session # Pam config for the greeter session
cp %{SOURCE3} $RPM_BUILD_ROOT/etc/pam.d/gdm-welcome cp %{SOURCE3} $RPM_BUILD_ROOT/etc/pam.d/gdm-launch-environment
# Pam config for fingerprint authentication
cp %{SOURCE6} $RPM_BUILD_ROOT/etc/pam.d/gdm-fingerprint
# Pam config for smartcard authentication
cp %{SOURCE7} $RPM_BUILD_ROOT/etc/pam.d/gdm-smartcard
# The default gdm pam configuration is the one to be used as pam-password too # The default gdm pam configuration is the one to be used as pam-password too
%if %{enable_split_authentication} %if %{enable_split_authentication}
rm $RPM_BUILD_ROOT/etc/pam.d/gdm-password rm $RPM_BUILD_ROOT/etc/pam.d/gdm-password
@ -301,9 +280,6 @@ ln -s gdm $RPM_BUILD_ROOT/etc/pam.d/gdm-password
## Install other files ## Install other files
# Install PostLogin script. # Install PostLogin script.
mv $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default.sample $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default mv $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default.sample $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default
# Move gdmflexiserver to libexecdir and replace it with the compatibility wrapper
mv $RPM_BUILD_ROOT%{_bindir}/gdmflexiserver $RPM_BUILD_ROOT%{_libexecdir}/gdm/gdmflexiserver
install -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/gdmflexiserver
# Install /etc/xinit.d/xdm integration script # Install /etc/xinit.d/xdm integration script
install -D -m 644 %{SOURCE5} %{buildroot}%{_libexecdir}/X11/displaymanagers/gdm install -D -m 644 %{SOURCE5} %{buildroot}%{_libexecdir}/X11/displaymanagers/gdm
# Install other files # Install other files
@ -357,9 +333,9 @@ dconf update
%glib2_gsettings_schema_postun %glib2_gsettings_schema_postun
%icon_theme_cache_postun %icon_theme_cache_postun
%post -n libgdmgreeter1 -p /sbin/ldconfig %post -n libgdm1 -p /sbin/ldconfig
%postun -n libgdmgreeter1 -p /sbin/ldconfig %postun -n libgdm1 -p /sbin/ldconfig
%post -n libgdmsimplegreeter1 -p /sbin/ldconfig %post -n libgdmsimplegreeter1 -p /sbin/ldconfig
@ -368,13 +344,7 @@ dconf update
%files %files
%defattr(-,root,root) %defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README %doc AUTHORS COPYING ChangeLog NEWS README
%dir %{_datadir}/gnome/ %doc %{_datadir}/help/C/%{name}/
%dir %{_datadir}/gnome/help/
%dir %{_datadir}/gnome/help/%{name}/
%doc %{_datadir}/gnome/help/%{name}/C/
%dir %{_datadir}/omf/
%dir %{_datadir}/omf/%{name}/
%doc %{_datadir}/omf/%{name}/%{name}-C.omf
%dir %config %{_sysconfdir}/gdm %dir %config %{_sysconfdir}/gdm
%config %{_sysconfdir}/gdm/[IPXl]* %config %{_sysconfdir}/gdm/[IPXl]*
%{_sbindir}/gdm %{_sbindir}/gdm
@ -388,7 +358,6 @@ dconf update
%{_datadir}/pixmaps/*.png %{_datadir}/pixmaps/*.png
%dir %{_libexecdir}/gdm %dir %{_libexecdir}/gdm
%{_libexecdir}/gdm/gdm-* %{_libexecdir}/gdm/gdm-*
%{_libexecdir}/gdm/gdmflexiserver
%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm %attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm
%ghost %attr(751,gdm,gdm) %dir %{_localstatedir}/run/gdm %ghost %attr(751,gdm,gdm) %dir %{_localstatedir}/run/gdm
%attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm %attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm
@ -398,7 +367,7 @@ dconf update
%config /etc/pam.d/gdm-fingerprint %config /etc/pam.d/gdm-fingerprint
%config /etc/pam.d/gdm-password %config /etc/pam.d/gdm-password
%config /etc/pam.d/gdm-smartcard %config /etc/pam.d/gdm-smartcard
%config /etc/pam.d/gdm-welcome %config /etc/pam.d/gdm-launch-environment
%config %{_sysconfdir}/dbus-1/system.d/gdm.conf %config %{_sysconfdir}/dbus-1/system.d/gdm.conf
%dir %config %{_sysconfdir}/dconf/db/gdm.d %dir %config %{_sysconfdir}/dconf/db/gdm.d
%dir %config %{_sysconfdir}/dconf/db/gdm.d/locks %dir %config %{_sysconfdir}/dconf/db/gdm.d/locks
@ -412,13 +381,13 @@ dconf update
# Exclude simple-greeter extensions # Exclude simple-greeter extensions
%exclude %{_datadir}/gdm/simple-greeter/extensions %exclude %{_datadir}/gdm/simple-greeter/extensions
%files -n libgdmgreeter1 %files -n libgdm1
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libgdmgreeter.so.* %{_libdir}/libgdm.so.*
%files -n typelib-1_0-GdmGreeter-1_0 %files -n typelib-1_0-Gdm-1_0
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/girepository-1.0/GdmGreeter-1.0.typelib %{_libdir}/girepository-1.0/Gdm-1.0.typelib
%files -n libgdmsimplegreeter1 %files -n libgdmsimplegreeter1
%defattr(-,root,root) %defattr(-,root,root)
@ -452,20 +421,16 @@ dconf update
%files devel %files devel
%defattr(-,root,root) %defattr(-,root,root)
%{_includedir}/gdm/ %{_includedir}/gdm/
%{_libdir}/libgdmgreeter.so %{_libdir}/libgdm.so
%{_libdir}/libgdmsimplegreeter.so %{_libdir}/libgdmsimplegreeter.so
%{_libdir}/pkgconfig/gdmgreeter.pc %{_libdir}/pkgconfig/gdm.pc
%{_libdir}/pkgconfig/gdmsimplegreeter.pc %{_libdir}/pkgconfig/gdmsimplegreeter.pc
%{_datadir}/gir-1.0/GdmGreeter-1.0.gir %{_datadir}/gir-1.0/Gdm-1.0.gir
%files branding-upstream %files branding-upstream
%defattr(-,root,root) %defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/gdm/custom.conf %config(noreplace) %{_sysconfdir}/gdm/custom.conf
%files -n gdmflexiserver
%defattr(-,root,root)
%{_bindir}/gdmflexiserver
%files lang -f %{name}.lang %files lang -f %{name}.lang
%changelog %changelog

View File

@ -1,8 +0,0 @@
#!/bin/sh
if test ! -x "${GDMFLEXISERVER:-/usr/lib/gdm/gdmflexiserver}"; then
echo "No gdmflexiserver implementation found. Maybe install gdm?" >&2
exit 1
else
exec "${GDMFLEXISERVER:-/usr/lib/gdm/gdmflexiserver}"
fi