diff --git a/X11-displaymanager-gdm b/X11-displaymanager-gdm new file mode 100644 index 0000000..8fc43db --- /dev/null +++ b/X11-displaymanager-gdm @@ -0,0 +1,24 @@ +gdm_start_proc () { + if test "$DISPLAYMANAGER_REMOTE_ACCESS" = "yes" -a \ + "$DISPLAYMANAGER_STARTS_XSERVER" = "no"; then + XDMOPTIONS="--no-console" + fi + + splashcopy 0 6 + + return 0 +} + +gdm_vars() { + case "${DISPLAYMANAGER##*/}" in + gdm|GDM|Gnome|GNOME) + RELOADSIGNAL="-USR1" + DISPLAYMANAGER=/usr/sbin/gdm + STARTPROC=gdm_start_proc + return 0 ;; + ;; + *) return 1 ;; + esac + + return 1 +} diff --git a/gdm-3.1.2.tar.bz2 b/gdm-3.1.2.tar.bz2 deleted file mode 100644 index fcbca31..0000000 --- a/gdm-3.1.2.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c591d2e9cf8cde0c5d92b82adcd0d0a176a6141b8c337c09126ac8572bfa87f1 -size 2351352 diff --git a/gdm-3.1.90.tar.bz2 b/gdm-3.1.90.tar.bz2 new file mode 100644 index 0000000..223902f --- /dev/null +++ b/gdm-3.1.90.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6d06207343a9fd80b120ac177bd12bdfdaf198328faaf2d1438b176d8fd5a3b +size 2371439 diff --git a/gdm-autologin.pamd b/gdm-autologin.pamd index bc5148e..8931018 100644 --- a/gdm-autologin.pamd +++ b/gdm-autologin.pamd @@ -1,4 +1,5 @@ #%PAM-1.0 +# GDM PAM configuration for autologin auth required pam_permit.so account include common-account password include common-password diff --git a/gdm-desktop-session-env-pam.patch b/gdm-desktop-session-env-pam.patch index 60a102f..83efec6 100644 --- a/gdm-desktop-session-env-pam.patch +++ b/gdm-desktop-session-env-pam.patch @@ -1,16 +1,46 @@ -Index: gdm-2.91.6/daemon/gdm-session-worker.c +Index: gdm-3.1.90/daemon/gdm-session-worker.c =================================================================== ---- gdm-2.91.6.orig/daemon/gdm-session-worker.c -+++ gdm-2.91.6/daemon/gdm-session-worker.c -@@ -2163,11 +2163,28 @@ static void +--- gdm-3.1.90.orig/daemon/gdm-session-worker.c ++++ gdm-3.1.90/daemon/gdm-session-worker.c +@@ -139,6 +139,8 @@ struct GdmSessionWorkerPrivate + + GdmSessionAuditor *auditor; + GdmSessionSettings *user_settings; ++ ++ char *suse_session_name; + }; + + enum { +@@ -152,6 +154,11 @@ static void gdm_session_worker_final + + 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 **, +@@ -1166,6 +1173,9 @@ gdm_session_worker_initialize_pam (GdmSe + } + #endif + ++ if (worker->priv->suse_session_name) ++ gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", worker->priv->suse_session_name); ++ + g_debug ("GdmSessionWorker: state SETUP_COMPLETE"); + worker->priv->state = GDM_SESSION_WORKER_STATE_SETUP_COMPLETE; + +@@ -2011,11 +2021,26 @@ static void gdm_session_worker_set_session_name (GdmSessionWorker *worker, const char *session_name) { -+ char *env; -+ -+ env = g_strdup_printf ("DESKTOP_SESSION=%s", session_name); -+ pam_putenv (worker->priv->pam_handle, env); -+ g_free (env); ++ if (worker->priv->pam_handle != NULL) ++ gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", session_name); ++ g_free (worker->priv->suse_session_name); ++ worker->priv->suse_session_name = g_strdup (session_name); + gdm_session_settings_set_session_name (worker->priv->user_settings, session_name); @@ -20,18 +50,17 @@ Index: gdm-2.91.6/daemon/gdm-session-worker.c +gdm_session_worker_set_default_session_name (GdmSessionWorker *worker, + const char *session_name) +{ -+ char *env; -+ -+ env = g_strdup_printf ("DESKTOP_SESSION=%s", session_name); -+ pam_putenv (worker->priv->pam_handle, env); -+ g_free (env); ++ if (worker->priv->pam_handle != NULL) ++ gdm_session_worker_set_environment_variable (worker, "DESKTOP_SESSION", session_name); ++ g_free (worker->priv->suse_session_name); ++ worker->priv->suse_session_name = g_strdup (session_name); +} + +static void on_set_session_name (GdmSessionWorker *worker, DBusMessage *message) { -@@ -2190,6 +2207,28 @@ on_set_session_name (GdmSessionWorker *w +@@ -2068,6 +2093,28 @@ on_set_session_type (GdmSessionWorker *w } static void @@ -60,20 +89,29 @@ Index: gdm-2.91.6/daemon/gdm-session-worker.c gdm_session_worker_set_language_name (GdmSessionWorker *worker, const char *language_name) { -@@ -2761,6 +2800,8 @@ worker_dbus_handle_message (DBusConnecti - on_set_language_name (worker, message); - } else if (dbus_message_is_signal (message, GDM_SESSION_DBUS_INTERFACE, "SetSessionName")) { +@@ -2774,6 +2821,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; } -Index: gdm-2.91.6/daemon/gdm-session-direct.c +@@ -2944,6 +2993,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_OBJECT_CLASS (gdm_session_worker_parent_class)->finalize (object); + } + +Index: gdm-3.1.90/daemon/gdm-session-direct.c =================================================================== ---- gdm-2.91.6.orig/daemon/gdm-session-direct.c -+++ gdm-2.91.6/daemon/gdm-session-direct.c -@@ -120,6 +120,8 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirec +--- gdm-3.1.90.orig/daemon/gdm-session-direct.c ++++ gdm-3.1.90/daemon/gdm-session-direct.c +@@ -131,6 +131,8 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirec G_IMPLEMENT_INTERFACE (GDM_TYPE_SESSION, gdm_session_iface_init)) @@ -82,26 +120,42 @@ Index: gdm-2.91.6/daemon/gdm-session-direct.c static gboolean send_dbus_message (GdmSessionConversation *conversation, DBusMessage *message) -@@ -707,10 +709,14 @@ get_default_session_name (GdmSessionDire +@@ -770,10 +772,27 @@ get_default_session_name (GdmSessionDire static void gdm_session_direct_defaults_changed (GdmSessionDirect *session) { + GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); ++ GHashTableIter iter; ++ gpointer key, value; ++ const char *text; + _gdm_session_default_language_name_changed (GDM_SESSION (session), get_default_language_name (session)); _gdm_session_default_session_name_changed (GDM_SESSION (session), get_default_session_name (session)); -+ send_dbus_string_signal (impl, "SetDefaultSessionName", -+ get_session_name (impl)); ++ ++ text = get_session_name (impl); ++ ++ g_hash_table_iter_init (&iter, impl->priv->conversations); ++ while (g_hash_table_iter_next (&iter, &key, &value)) { ++ GdmSessionConversation *conversation; ++ ++ conversation = (GdmSessionConversation *) value; ++ ++ send_dbus_string_signal (conversation, "SetDefaultSessionName", ++ text); ++ } } static void -@@ -1164,11 +1170,16 @@ gdm_session_direct_handle_saved_session_ +@@ -1226,11 +1245,28 @@ gdm_session_direct_handle_saved_session_ if (strcmp (session_name, get_default_session_name (session)) != 0) { + GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); ++ GHashTableIter iter; ++ gpointer key, value; ++ const char *text; + g_free (session->priv->saved_session); session->priv->saved_session = g_strdup (session_name); @@ -109,14 +163,23 @@ Index: gdm-2.91.6/daemon/gdm-session-direct.c _gdm_session_default_session_name_changed (GDM_SESSION (session), session_name); + -+ send_dbus_string_signal (impl, "SetDefaultSessionName", -+ get_session_name (impl)); ++ text = get_session_name (impl); ++ ++ g_hash_table_iter_init (&iter, impl->priv->conversations); ++ while (g_hash_table_iter_next (&iter, &key, &value)) { ++ GdmSessionConversation *conversation; ++ ++ conversation = (GdmSessionConversation *) value; ++ ++ send_dbus_string_signal (conversation, "SetDefaultSessionName", ++ text); ++ } } out: return DBUS_HANDLER_RESULT_HANDLED; -@@ -1349,6 +1360,9 @@ do_introspect (DBusConnection *connectio - " \n" - " \n" +@@ -1425,6 +1461,9 @@ do_introspect (DBusConnection *connectio + " \n" + " \n" " \n" + " \n" + " \n" diff --git a/gdm-helper-directory.patch b/gdm-helper-directory.patch index 7142f58..b4730bb 100644 --- a/gdm-helper-directory.patch +++ b/gdm-helper-directory.patch @@ -1,19 +1,11 @@ -Index: gdm-2.91.6/configure.ac +Index: gdm-3.1.90/configure.ac =================================================================== ---- gdm-2.91.6.orig/configure.ac -+++ gdm-2.91.6/configure.ac -@@ -1006,6 +1006,30 @@ fi +--- 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(gnome-settings-daemon-directory, -+ [AC_HELP_STRING([--with-gnome-settings-daemon-directory], -+ [Specify the directory of gnome-settings-daemon @<:@default=libexecdir@:>@])],, -+ [with_gnome_settings_daemon_directory="\${libexecdir}"]) -+ -+GNOME_SETTINGS_DAEMON_DIR=$with_gnome_settings_daemon_directory -+AC_SUBST(GNOME_SETTINGS_DAEMON_DIR) -+ +AC_ARG_WITH(consolekit-directory, + [AC_HELP_STRING([--with-consolekit-directory], + [Specify the directory of ck-get-x11-display-device @<:@default=libexecdir@:>@])],, @@ -22,31 +14,30 @@ Index: gdm-2.91.6/configure.ac +CONSOLEKIT_DIR=$with_consolekit_directory +AC_SUBST(CONSOLEKIT_DIR) + -+AC_ARG_WITH(polkit-gnome-directory, -+ [AC_HELP_STRING([--with-polkit-gnome-directory], -+ [Specify the directory of polkit-gnome-authentication-agent-1 @<:@default=libexecdir@:>@])],, -+ [with_polkit_gnome_directory="\${libexecdir}"]) ++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}"]) + -+POLKIT_GNOME_DIR=$with_polkit_gnome_directory -+AC_SUBST(POLKIT_GNOME_DIR) ++CHECK_ACCELERATED_DIR=$with_check_accelerated_directory ++AC_SUBST(CHECK_ACCELERATED_DIR) + dnl --------------------------------------------------------------------------- dnl - Check for XEvIE extension support dnl --------------------------------------------------------------------------- -@@ -1449,6 +1473,9 @@ echo " +@@ -1497,6 +1513,8 @@ echo " dmconfdir: ${dmconfdir} localstatedir: ${localstatedir} datadir: ${datadir} -+ g-s-d location: ${with_gnome_settings_daemon_directory} + consolekit location: ${with_consolekit_directory} -+ polkit-gnome location: ${with_polkit_gnome_directory} ++ gnome-session-check-accel location: ${with_check_accelerated_directory} source code location: ${srcdir} compiler: ${CC} cflags: ${CFLAGS} -Index: gdm-2.91.6/daemon/Makefile.am +Index: gdm-3.1.90/daemon/Makefile.am =================================================================== ---- gdm-2.91.6.orig/daemon/Makefile.am -+++ gdm-2.91.6/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"\" \ @@ -55,10 +46,10 @@ Index: gdm-2.91.6/daemon/Makefile.am $(DISABLE_DEPRECATED_CFLAGS) \ $(DAEMON_CFLAGS) \ $(XLIB_CFLAGS) \ -Index: gdm-2.91.6/daemon/gdm-server.c +Index: gdm-3.1.90/daemon/gdm-server.c =================================================================== ---- gdm-2.91.6.orig/daemon/gdm-server.c -+++ gdm-2.91.6/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); @@ -68,44 +59,26 @@ Index: gdm-2.91.6/daemon/gdm-server.c server->priv->display_name); g_debug ("GdmServer: Running helper %s", command); -Index: gdm-2.91.6/data/greeter-autostart/Makefile.am +Index: gdm-3.1.90/data/gdm-shell.session.in =================================================================== ---- gdm-2.91.6.orig/data/greeter-autostart/Makefile.am -+++ gdm-2.91.6/data/greeter-autostart/Makefile.am -@@ -5,7 +5,9 @@ edit = sed \ - -e 's|@SYSCONFDIR[@]|$(sysconfdir)|g' \ - -e 's|@LIBDIR[@]|$(libdir)|g' \ - -e 's|@LIBEXECDIR[@]|$(libexecdir)|g' \ -- -e 's|@LOCALSTATEDIR[@]|$(localstatedir)|g' -+ -e 's|@LOCALSTATEDIR[@]|$(localstatedir)|g' \ -+ -e 's|@GNOME_SETTINGS_DAEMON_DIR[@]|$(GNOME_SETTINGS_DAEMON_DIR)|g' \ -+ -e 's|@POLKIT_GNOME_DIR[@]|$(POLKIT_GNOME_DIR)|g' - - %.desktop.in: %.desktop.in.in Makefile - $(edit) $< >$@ -Index: gdm-2.91.6/data/greeter-autostart/gnome-settings-daemon.desktop.in.in -=================================================================== ---- gdm-2.91.6.orig/data/greeter-autostart/gnome-settings-daemon.desktop.in.in -+++ gdm-2.91.6/data/greeter-autostart/gnome-settings-daemon.desktop.in.in -@@ -1,8 +1,8 @@ - [Desktop Entry] - Type=Application - _Name=GNOME Settings Daemon --TryExec=@LIBEXECDIR@/gnome-settings-daemon --Exec=@LIBEXECDIR@/gnome-settings-daemon -+TryExec=@GNOME_SETTINGS_DAEMON_DIR@/gnome-settings-daemon -+Exec=@GNOME_SETTINGS_DAEMON_DIR@/gnome-settings-daemon - OnlyShowIn=GNOME; - X-GNOME-Autostart-Phase=Initialization - X-GNOME-Autostart-Notify=true -Index: gdm-2.91.6/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in -=================================================================== ---- gdm-2.91.6.orig/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in -+++ gdm-2.91.6/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in +--- gdm-3.1.90.orig/data/gdm-shell.session.in ++++ gdm-3.1.90/data/gdm-shell.session.in @@ -1,5 +1,5 @@ - [Desktop Entry] - Type=Application - _Name=PolicyKit Authentication Agent --Exec=@LIBEXECDIR@/polkit-gnome-authentication-agent-1 -+Exec=@POLKIT_GNOME_DIR@/polkit-gnome-authentication-agent-1 - OnlyShowIn=GNOME; + [GNOME Session] + Name=Display Manager + RequiredComponents=gnome-shell;gnome-settings-daemon; +-IsRunnableHelper=bash -c "gnome-shell --help | grep -q gdm-mode && (gnome-shell --version | grep -q '3.1.90$' && false || true) && (mutter --version | grep -q '3.1.90$' && false || true) && @libexecdir@/gnome-session-check-accelerated" ++IsRunnableHelper=bash -c "gnome-shell --help | grep -q gdm-mode && (gnome-shell --version | grep -q '3.1.90$' && false || true) && (mutter --version | grep -q '3.1.90$' && false || true) && @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 diff --git a/gdm-welcome.pamd b/gdm-welcome.pamd new file mode 100644 index 0000000..c788c3b --- /dev/null +++ b/gdm-welcome.pamd @@ -0,0 +1,7 @@ +#%PAM-1.0 +# GDM PAM configuration used only for the greeter session +auth required pam_permit.so +account include common-account +password include common-password +session required pam_loginuid.so +session include common-session diff --git a/gdm-xauthlocalhostname.patch b/gdm-xauthlocalhostname.patch index 4b0454e..855cf05 100644 --- a/gdm-xauthlocalhostname.patch +++ b/gdm-xauthlocalhostname.patch @@ -26,7 +26,7 @@ Index: daemon/gdm-session-direct.c } -+ if (session->priv->display_is_local) { ++ if (session_direct->priv->display_is_local) { + gdm_session_direct_set_environment_variable (session, + "XAUTHLOCALHOSTNAME", + "localhost"); diff --git a/gdm.changes b/gdm.changes index 40c64f4..80c458a 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,3 +1,113 @@ +------------------------------------------------------------------- +Wed Sep 7 01:32:23 UTC 2011 - vuntz@opensuse.org + +- Update to version 3.1.90: + + Register greeter session with PAM + + Add framework for gnome-shell based greeter + + Plug xdmcp chooser leak + + Fix problem with --disable-split-authentication + + Switch to --enable-split-authentication by default + + Misc other fixes and cleanups + + Updated translations. +- Rebase gdm-helper-directory.patch: we don't need as many specific + libexecdirs as before, as several autostart files got removed. + Also add a --with-check-accelerated-directory flag, to specify + where to find gnome-session-check-accelerated. +- Update gdm-desktop-session-env-pam.patch: rebase/port for pam + multistack support, using some new function that appeared in + the meantime to simplify. +- Rebase gdm-xauthlocalhostname.patch. +- Add explicit dbus-1-glib-devel BuildRequires: it used to be + brought in by something else before. +- Add gobject-introspection-devel BuildRequires: new dependency for + introspection data. +- Remove fdupes BuildRequires and %fdupes call as it's not useful + for this package. +- Add gnome-shell Recommends for the new gnome-session-based + non-fallback greeter session used by gdm. It's only a Recommends + and not a Requires so people can install gdm without pulling all + of GNOME (as gdm will fallback to the old greeter if gnome-shell + is missing). +- Add orca Recommends: this makes it possible to have a screen + reader in the greeter session. This is not mandatory for the + greeter session to work, therefore it's not a Requires. +- Create a libgdmgreeter1 subpackage for the new libgdmgreeter + library. +- Rename libgdmsimplegreeter-devel to gdm-devel, with appropriate + Provides/Obsoletes. This is needed as it also covers the + libgdmgreeter library now. +- Stop passing --with-gnome-settings-daemon-directory and + --with-polkit-gnome-directory to configure as we removed those + options from gdm-helper-directory.patch. However, add the + --with-check-accelerated-directory configure flag that got added + to the patch. +- Add a enable_split_authentication define, to easily enable the + split authentication feature (see bnc#699999): + + Pass --enable-split-authentication or + --disable-split-authentication to configure, depending on the + value of the macro. + + Create simple-greeter-extensions subpackage, that contains + non-essential (but useful) extensions for the greeter + (fingerprint and smartcard support) when + %enable_split_authentication is set. + + Stop manually creating %{_libdir}/gdm/simple-greeter/extensions + in %install if %enable_split_authentication is set since it'll + be there already. + + Remove /etc/pam.d/gdm-password in %install as it will get + replaced by our own configuration. + + Fail the build in %install since we need to investigate what to + put in /etc/pam.d/gdm-{fingerprint,smartcard}. +- Fix a typo: %{_localstatedir} instead of {_localstatedir}. +- Make sure to not package simple-greeter extensions data files + twice, thanks to an %exclude in the main subpackage. +- Add gdm-welcome.pamd as source file: this is the pam + configuration file that is being used to register the gdm greeter + session. It is actually using the same configuration as + gdm-autologin.pamd. +- Link /etc/pam.d/gdm-password to /etc/pam.d/gdm: our standard gdm + PAM configuration is what we want to use for password-based PAM + conversations. We need to provide it, even if we don't built with + split authentication as the GNOME Shell-based greeter session is + using it. +- Add comments to gdm.pamd and gdm-autologin.pamd to explain how + those pam configuration files are used. + +------------------------------------------------------------------- +Wed Sep 7 01:15:11 UTC 2011 - vuntz@opensuse.org + +- Slightly improve gdmflexiserver-wrapper: report an error if no + gdmflexiserver implementation is found. +- Add a gdm Suggests to the gdmflexiserver subpackage, to give a + hint about the default implementation, if people only install the + gdmflexiserver package. +- Reformat X11-displaymanager-gdm shell code. + +------------------------------------------------------------------- +Mon Sep 5 21:35:19 UTC 2011 - eich@suse.com + +- Add /etc/init.d/xdm integration (bnc#714003): + + Add X11-displaymanager-gdm as source file, that gets installed + to %{_libdir}/X11/displaymanagers/gdm. + + This enables /etc/init.d/xdm to not know anything about gdm: + the new file is sourced by the init script, and provides + information about how gdm should be started. + +------------------------------------------------------------------- +Wed Aug 31 15:15:06 UTC 2011 - gber@opensuse.org + +- Add a wrapper script for gdmflexiserver to enable alternative + gdmflexiserver implementations from other display managers (like + LightDM): + + Add gdmflexiserver-wrapper as source file: the wrapper simply + checks for the GDMFLEXISERVER environment variable, and falls + back to gdm's implementation. + + Move gdm's implementation to %{_libexecdir}/gdm/gdmflexiserver. + + Install the wrapper as %{_bindir}/gdmflexiserver. + + Create a gdmflexiserver subpackage, that contains the wrapper, + so that other display managers can depend on it without pulling + all of gdm. + + Add gdmflexiserver Requires to gdm. + ------------------------------------------------------------------- Mon Jul 25 23:04:14 CEST 2011 - vuntz@opensuse.org diff --git a/gdm.pamd b/gdm.pamd index 6dcaffa..ccbac7b 100644 --- a/gdm.pamd +++ b/gdm.pamd @@ -1,4 +1,5 @@ #%PAM-1.0 +# GDM PAM standard configuration (with passwords) auth include common-auth account include common-account password include common-password diff --git a/gdm.spec b/gdm.spec index 51890ba..b4ce1fc 100644 --- a/gdm.spec +++ b/gdm.spec @@ -15,24 +15,29 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # -# norootforbuild - +# FIXME: need to check what should be done to enable this (at least adapt the pam files). See bnc#699999 +%define enable_split_authentication 0 Name: gdm License: GPLv2+ Group: System/GUI/GNOME -Version: 3.1.2 -Release: 4 +Version: 3.1.90 +Release: 1 Summary: The GNOME Display Manager Url: http://projects.gnome.org/gdm/ -Source: %{name}-%{version}.tar.bz2 +Source: http://download.gnome.org/sources/gdm/3.1/%{name}-%{version}.tar.bz2 Source1: gdm.pamd Source2: gdm-autologin.pamd +Source3: gdm-welcome.pamd +# gdmflexiserver wrapper, to enable other display managers to abuse the gdmflexiserver namespace (like lightdm) +Source4: gdmflexiserver-wrapper +# /etc/xinit.d/xdm integration script +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-plymouth-X-nr.patch vuntz@opensuse.org -- Patch on top of the previous patch (we keep it separate so it's easy to sync with Fedora) to use -nr when starting X Patch1: gdm-plymouth-X-nr.patch -# PATCH-FIX-UPSTREAM gdm-helper-directory.patch bgo582320 vuntz@novell.com -- Add --with-gnome-settings-daemon-directory, --with-consolekit-directory, --with-at-spi-registryd-directory +# 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 Patch3: gdm-is-not-unstable-unless.patch @@ -64,14 +69,15 @@ 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: dbus-1-glib-devel # needed for directory ownership BuildRequires: dconf -BuildRequires: fdupes BuildRequires: gconf2-devel BuildRequires: gnome-doc-utils-devel BuildRequires: gnome-patch-translation # needed for directory ownership BuildRequires: gnome-session-core +BuildRequires: gobject-introspection-devel >= 0.9.12 BuildRequires: intltool BuildRequires: iso-codes-devel BuildRequires: libattr-devel @@ -90,13 +96,23 @@ BuildRequires: pkgconfig(accountsservice) BuildRequires: pkgconfig(nss) Requires: %{name}-branding = %{version} Requires: ConsoleKit-x11 +Requires: gdmflexiserver Requires: gnome-session-core Requires: klogd Requires: xorg-x11-server-extra -# Packages for the gdm session (see /usr/share/gnome-session/sessions/gdm.session) -Requires: gnome-settings-daemon +### Packages for the gdm session (see /usr/share/gnome-session/sessions/{gdm,gdm-fallback}.session and /usr/share/gdm/greeter/applications) +## Fallback Requires: metacity Requires: polkit-gnome +## Non-fallback +# Use Recommends, since we do not want to force people to install gnome-shell, and if it's not there, the fallback session will be used +Recommends: gnome-shell +## All sessions +Requires: gnome-settings-daemon +# Those accessibility features rely on deprecated modules that we don't ship :/ See bgo#658429. +#Recommends: gnome-mag +#Recommends: gok +Recommends: orca # For groupadd, useradd, usermod PreReq: pwdutils PreReq: %insserv_prereq @@ -114,9 +130,19 @@ DocDir: %{_defaultdocdir} The GNOME Display Manager is a system service that is responsible for providing graphical log-ins and managing local and remote displays. +%package -n libgdmgreeter1 +License: GPLv2+ +Summary: Client Library for Communicating with GDM Greeter Server +Group: System/Libraries +Recommends: gdm + +%description -n libgdmgreeter1 +The GNOME Display Manager is a system service that is responsible for +providing graphical log-ins and managing local and remote displays. + %package -n libgdmsimplegreeter1 License: GPLv2+ -Summary: Library for GDM Simple Greeter Plugins +Summary: Library for GDM Simple Greeter Extensions Group: System/Libraries Recommends: gdm @@ -124,13 +150,29 @@ Recommends: gdm The GNOME Display Manager is a system service that is responsible for providing graphical log-ins and managing local and remote displays. -%package -n libgdmsimplegreeter-devel +%if %{enable_split_authentication} +%package simple-greeter-extensions License: GPLv2+ -Summary: Library for GDM Simple Greeter Plugins -- Development Files -Group: Development/Libraries/GNOME -Requires: libgdmsimplegreeter1 = %{version} +Summary: GDM Simple Greeter Extensions -- Fingerprint and Smartcard Support +Group: System/Libraries +Supplements: gdm +%glib2_gsettings_schema_requires -%description -n libgdmsimplegreeter-devel +%description simple-greeter-extensions +The GNOME Display Manager is a system service that is responsible for +providing graphical log-ins and managing local and remote displays. +%endif + +%package devel +License: GPLv2+ +Summary: Libraries for GDM -- Development Files +Group: Development/Libraries/GNOME +Requires: libgdmgreeter1 = %{version} +Requires: libgdmsimplegreeter1 = %{version} +Provides: libgdmsimplegreeter-devel = %{version} +Obsoletes: libgdmsimplegreeter-devel < %{version} + +%description devel The GNOME Display Manager is a system service that is responsible for providing graphical log-ins and managing local and remote displays. @@ -153,6 +195,19 @@ providing graphical log-ins and managing local and remote displays. This package provides the upstream default configuration for gdm. +%package -n gdmflexiserver +License: GPLv2+ +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 %prep %setup -q @@ -168,9 +223,9 @@ translation-update-upstream %patch7 -p1 %patch8 -p1 %patch9 -p1 -#%patch10 -p1 +#%%patch10 -p1 # needs rebase (bnc#689552) -##%patch15 -p1 +#%%patch15 -p1 %patch18 -p1 %patch31 -p1 %patch34 -p1 @@ -187,11 +242,15 @@ autoreconf -f -i --libexecdir=%{_prefix}/lib/gdm \ --localstatedir=%{_localstatedir} \ --with-at-spi-registryd-directory=%{_libexecdir}/at-spi \ - --with-gnome-settings-daemon-directory=%{_libexecdir}/gnome-settings-daemon-3.0 \ --with-consolekit-directory=%{_libexecdir}/ConsoleKit \ - --with-polkit-gnome-directory=%{_libexecdir}/polkit-gnome \ + --with-check-accelerated-directory=%{_libexecdir} \ --with-selinux \ --enable-ipv6 \ +%if %{enable_split_authentication} + --enable-split-authentication \ +%else + --disable-split-authentication \ +%endif --disable-scrollkeeper %__make %{?jobs:-j%jobs} V=1 @@ -202,23 +261,42 @@ autoreconf -f -i %endif find %{buildroot}%{_libdir} -name '*.la' -type f -delete -print %find_gconf_schemas +%if ! %{enable_split_authentication} # Create extensions directory if it's not there yet, so we can package it test ! -d %{buildroot}%{_libdir}/gdm/simple-greeter/extensions mkdir -p %{buildroot}%{_libdir}/gdm/simple-greeter/extensions +%endif # Remove wrapper, it is not needed. mv $RPM_BUILD_ROOT%{_sbindir}/gdm-binary $RPM_BUILD_ROOT%{_sbindir}/gdm -# Install PAM files. +## Install PAM files. mkdir -p $RPM_BUILD_ROOT/etc/pam.d -cp %{S:1} $RPM_BUILD_ROOT/etc/pam.d/gdm -cp %{S:2} $RPM_BUILD_ROOT/etc/pam.d/gdm-autologin +# Generic pam config +cp %{SOURCE1} $RPM_BUILD_ROOT/etc/pam.d/gdm +# Pam config for autologin +cp %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/gdm-autologin +# Pam config for the greeter session +cp %{SOURCE3} $RPM_BUILD_ROOT/etc/pam.d/gdm-welcome +# The default gdm pam configuration is the one to be used as pam-password too +%if %{enable_split_authentication} +rm $RPM_BUILD_ROOT/etc/pam.d/gdm-password +echo "We are not ready for this, we need to know what to put in gdm-fingerprint and gdm-smartcard pam config files." +false +%endif +ln -s gdm $RPM_BUILD_ROOT/etc/pam.d/gdm-password +## Install other files # Install PostLogin script. mv $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default.sample $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default -mkdir -p $RPM_BUILD_ROOT{_localstatedir}/log/gdm -mkdir -p $RPM_BUILD_ROOT{_localstatedir}/run/gdm -%find_lang %{name} %{?no_lang_C} +# 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 -D -m 644 %{SOURCE5} %{buildroot}%{_libdir}/X11/displaymanagers/gdm +# Install other files +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/gdm +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/gdm mkdir -p $RPM_BUILD_ROOT%{_bindir} ln -s ../sbin/gdm $RPM_BUILD_ROOT%{_bindir}/gdm -%fdupes $RPM_BUILD_ROOT +%find_lang %{name} %{?no_lang_C} %clean rm -rf $RPM_BUILD_ROOT @@ -262,10 +340,22 @@ fi %insserv_cleanup %icon_theme_cache_postun +%post -n libgdmgreeter1 -p /sbin/ldconfig + +%postun -n libgdmgreeter1 -p /sbin/ldconfig + %post -n libgdmsimplegreeter1 -p /sbin/ldconfig %postun -n libgdmsimplegreeter1 -p /sbin/ldconfig +%if %{enable_split_authentication} +%post simple-greeter-extensions +%glib2_gsettings_schema_post + +%postun simple-greeter-extensions +%glib2_gsettings_schema_postun +%endif + %files -f %{name}.schemas_list %defattr(-,root,root) %doc AUTHORS COPYING ChangeLog NEWS README @@ -279,29 +369,44 @@ fi %dir %config %{_sysconfdir}/gdm %config %{_sysconfdir}/gdm/[IPXl]* %{_sbindir}/gdm -%{_bindir}/* +%{_bindir}/gdm +%{_bindir}/gdm-screenshot %{_datadir}/gdm/ -%{_datadir}/gnome-session/sessions/gdm.session +%{_datadir}/gnome-session/sessions/gdm-fallback.session +%{_datadir}/gnome-session/sessions/gdm-shell.session %{_datadir}/icons/*/*/*/*.* %{_datadir}/pixmaps/*.png %dir %{_libexecdir}/gdm %{_libexecdir}/gdm/gdm-* +%{_libexecdir}/gdm/gdmflexiserver %attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm %ghost %attr(751,gdm,gdm) %dir %{_localstatedir}/run/gdm %attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm %attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm/.gconf.mandatory %attr(640,gdm,gdm) %{_localstatedir}/lib/gdm/.gconf.mandatory/%gconf-tree.xml %attr(640,gdm,gdm) %{_localstatedir}/lib/gdm/.gconf.path -%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm/.local -%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm/.local/share -%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm/.local/share/applications -%attr(640,gdm,gdm) %{_localstatedir}/lib/gdm/.local/share/applications/mime-dummy-handler.desktop -%attr(640,gdm,gdm) %{_localstatedir}/lib/gdm/.local/share/applications/mimeapps.list %dir %{_localstatedir}/cache/gdm -%config /etc/pam.d/* +%config /etc/pam.d/gdm +%config /etc/pam.d/gdm-autologin +%config /etc/pam.d/gdm-password +%config /etc/pam.d/gdm-welcome +%if %{enable_split_authentication} +%config /etc/pam.d/gdm-fingerprint +%config /etc/pam.d/gdm-smartcart +%endif %config %{_sysconfdir}/dbus-1/system.d/gdm.conf %{_sysconfdir}/dconf/db/gdm %{_sysconfdir}/dconf/profile/gdm +# /etc/xinit.d/xdm integration +%dir %{_libdir}/X11/displaymanagers +%{_libdir}/X11/displaymanagers/gdm +# Exclude simple-greeter extensions +%exclude %{_datadir}/gdm/simple-greeter/extensions + +%files -n libgdmgreeter1 +%defattr(-,root,root) +%{_libdir}/libgdmgreeter.so.* +%{_libdir}/girepository-1.0/GdmGreeter-1.0.typelib %files -n libgdmsimplegreeter1 %defattr(-,root,root) @@ -313,17 +418,43 @@ fi %dir %{_libdir}/gdm %dir %{_libdir}/gdm/simple-greeter %dir %{_libdir}/gdm/simple-greeter/extensions +# The extension for non-split authentication +%{_datadir}/gdm/simple-greeter/extensions/unified/ +%if %{enable_split_authentication} +%{_datadir}/gdm/simple-greeter/extensions/password/ +%{_libdir}/gdm/simple-greeter/extensions/libpassword.so +%endif -%files -n libgdmsimplegreeter-devel +%if %{enable_split_authentication} +%files simple-greeter-extensions +%defattr(-,root,root) +# fingerprint +%{_datadir}/gdm/simple-greeter/extensions/fingerprint/ +%{_libdir}/gdm/simple-greeter/extensions/libfingerprint.so +%{_datadir}/glib-2.0/schemas/org.gnome.display-manager.extensions.fingerprint.gschema.xml +# smartcard +%{_datadir}/gdm/simple-greeter/extensions/smartcard/ +%{_libdir}/gdm/simple-greeter/extensions/libsmartcard.so +%{_datadir}/glib-2.0/schemas/org.gnome.display-manager.extensions.smartcard.gschema.xml +%endif + +%files devel %defattr(-,root,root) %{_includedir}/gdm/ +%{_libdir}/libgdmgreeter.so %{_libdir}/libgdmsimplegreeter.so +%{_libdir}/pkgconfig/gdmgreeter.pc %{_libdir}/pkgconfig/gdmsimplegreeter.pc +%{_datadir}/gir-1.0/GdmGreeter-1.0.gir %files branding-upstream %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/gdm/custom.conf +%files -n gdmflexiserver +%defattr(-,root,root) +%{_bindir}/gdmflexiserver + %files lang -f %{name}.lang %changelog diff --git a/gdmflexiserver-wrapper b/gdmflexiserver-wrapper new file mode 100644 index 0000000..3943b69 --- /dev/null +++ b/gdmflexiserver-wrapper @@ -0,0 +1,8 @@ +#!/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