SHA256
1
0
forked from pool/gdm

Accepting request 81650 from GNOME:Factory

Update to 3.1.90

OBS-URL: https://build.opensuse.org/request/show/81650
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdm?expand=0&rev=121
This commit is contained in:
Sascha Peilicke 2011-09-09 10:01:48 +00:00 committed by Git OBS Bridge
commit a5231dfb07
12 changed files with 454 additions and 136 deletions

24
X11-displaymanager-gdm Normal file
View File

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

View File

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

3
gdm-3.1.90.tar.bz2 Normal file
View File

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

View File

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

View File

@ -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
" <signal name=\"SetSessionName\">\n"
" <arg name=\"session_name\" type=\"s\"/>\n"
@@ -1425,6 +1461,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"

View File

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

7
gdm-welcome.pamd Normal file
View File

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

View File

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

View File

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

View File

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

201
gdm.spec
View File

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

8
gdmflexiserver-wrapper Normal file
View File

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