public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gnome:master commit in: gnome-base/gdm/files/3.4.1/, gnome-base/gdm/, gnome-base/gdm/files/
@ 2012-09-27  7:53 Alexandre Rostovtsev
  0 siblings, 0 replies; only message in thread
From: Alexandre Rostovtsev @ 2012-09-27  7:53 UTC (permalink / raw
  To: gentoo-commits

commit:     7cfe0a72d50b95281121707d00818866ac015f16
Author:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 27 07:40:20 2012 +0000
Commit:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
CommitDate: Thu Sep 27 07:52:01 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=7cfe0a72

gnome-base/gdm: 3.5.92.1 → 3.6.0 with daemonization

Rewrite daemonization patch so it really works (and use libdaemon to get
it right). Ensure that "/etc/init.d/xdm stop" works by starting a new
process group if gdm is in daemon mode, and killing it in the signal
handler callback. Rewrite pam.d files to hopefully address some of the
problems that systemd users have been having (see bug #435042). And ship
the pam.d files and other auxilliary stuff in a separate tarball (which
will be shared with 3.4.x) to keep FILESDIR a bit cleaner.

---
 gnome-base/gdm/files/3.4.1/gdm                     |   12 -
 gnome-base/gdm/files/3.4.1/gdm-autologin           |   11 -
 gnome-base/gdm/files/3.4.1/gdm-fingerprint         |   15 -
 gnome-base/gdm/files/3.4.1/gdm-password            |   12 -
 gnome-base/gdm/files/3.4.1/gdm-smartcard           |   16 -
 gnome-base/gdm/files/3.4.1/gdm-welcome             |   11 -
 gnome-base/gdm/files/3.4.1/gdm.service             |   11 -
 gnome-base/gdm/files/49-keychain-r1                |    9 -
 gnome-base/gdm/files/50-ssh-agent-r1               |   10 -
 gnome-base/gdm/files/gdm-3.4.1-plymouth.patch      |  338 --------------------
 .../gdm/files/gdm-3.4.1-save-root-window.patch     |  141 --------
 .../files/gdm-3.6.0-fix-daemonize-regression.patch |  192 +++++++++++
 .../gdm/files/gdm-3.6.0-selinux-automagic.patch    |   31 ++
 .../gdm/{gdm-3.5.92.1.ebuild => gdm-3.6.0.ebuild}  |   64 ++--
 gnome-base/gdm/gdm-9999.ebuild                     |   64 ++--
 15 files changed, 289 insertions(+), 648 deletions(-)

diff --git a/gnome-base/gdm/files/3.4.1/gdm b/gnome-base/gdm/files/3.4.1/gdm
deleted file mode 100644
index bdce065..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm
+++ /dev/null
@@ -1,12 +0,0 @@
-#%PAM-1.0
-auth       optional		pam_env.so
-auth       include		system-login
-auth       required		pam_nologin.so
-
-account    include		system-login
-
-password   include		system-login
-
-session    include		system-auth
-#Systemd=-session   optional		pam_systemd.so
-#Keyring=session    optional		pam_gnome_keyring.so auto_start

diff --git a/gnome-base/gdm/files/3.4.1/gdm-autologin b/gnome-base/gdm/files/3.4.1/gdm-autologin
deleted file mode 100644
index 26e3193..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm-autologin
+++ /dev/null
@@ -1,11 +0,0 @@
-#%PAM-1.0
-auth       optional		pam_env.so
-auth       required		pam_nologin.so
-auth       required		pam_permit.so
-account    include		system-login
-password   include		system-login
-session    include		system-auth
-#Systemd=-session   optional		pam_systemd.so
-# For the keyring to unlock with autologin, you need to set an empty
-# password on the keyring.
-#Keyring=session    optional		pam_gnome_keyring.so auto_start

diff --git a/gnome-base/gdm/files/3.4.1/gdm-fingerprint b/gnome-base/gdm/files/3.4.1/gdm-fingerprint
deleted file mode 100644
index 635fdd9..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm-fingerprint
+++ /dev/null
@@ -1,15 +0,0 @@
-#%PAM-1.0
-# Note: no pam_gnome_keyring.so support since the login password is not used
-auth       optional		pam_env.so
-auth       required             pam_tally2.so onerr=succeed
-auth       required             pam_shells.so
-auth       required		pam_nologin.so
-auth       required             pam_fprintd.so
-auth       optional             pam_permit.so
-
-account    include		system-login
-
-password   required             pam_deny.so
-
-session    include		system-auth
-#Systemd=-session   optional		pam_systemd.so

diff --git a/gnome-base/gdm/files/3.4.1/gdm-password b/gnome-base/gdm/files/3.4.1/gdm-password
deleted file mode 100644
index bdce065..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm-password
+++ /dev/null
@@ -1,12 +0,0 @@
-#%PAM-1.0
-auth       optional		pam_env.so
-auth       include		system-login
-auth       required		pam_nologin.so
-
-account    include		system-login
-
-password   include		system-login
-
-session    include		system-auth
-#Systemd=-session   optional		pam_systemd.so
-#Keyring=session    optional		pam_gnome_keyring.so auto_start

diff --git a/gnome-base/gdm/files/3.4.1/gdm-smartcard b/gnome-base/gdm/files/3.4.1/gdm-smartcard
deleted file mode 100644
index 64e960e..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm-smartcard
+++ /dev/null
@@ -1,16 +0,0 @@
-#%PAM-1.0
-auth       optional		pam_env.so
-auth       required             pam_tally2.so onerr=succeed
-auth       required             pam_shells.so
-auth       required		pam_nologin.so
-auth       [success=done ignore=ignore default=die] pam_pkcs11.so wait_for_card card_only
-auth       optional             pam_permit.so
-
-account    include		system-login
-
-password   optional             pam_pkcs11.so
-password   required             pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
-password   optional             pam_permit.so
-
-session    include		system-auth
-#Systemd=-session   optional		pam_systemd.so

diff --git a/gnome-base/gdm/files/3.4.1/gdm-welcome b/gnome-base/gdm/files/3.4.1/gdm-welcome
deleted file mode 100644
index a409a63..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm-welcome
+++ /dev/null
@@ -1,11 +0,0 @@
-#%PAM-1.0
-auth       required    pam_env.so
-# Allows greeter to list ldap users; bug #430740
-#LDAP=-auth      sufficient  pam_ldap.so try_first_pass ignore_authinfo_unavail
-auth       required    pam_permit.so
-account    required    pam_nologin.so
-account    include     system-services
-password   include     system-services
-session    required    pam_loginuid.so
-session    optional    pam_keyinit.so force revoke
-session    include     system-services

diff --git a/gnome-base/gdm/files/3.4.1/gdm.service b/gnome-base/gdm/files/3.4.1/gdm.service
deleted file mode 100644
index 63bb08e..0000000
--- a/gnome-base/gdm/files/3.4.1/gdm.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=GNOME Display Manager
-After=systemd-user-sessions.service
-
-[Service]
-ExecStart=/usr/bin/gdm --nodaemon
-Type=dbus
-BusName=org.gnome.DisplayManager
-
-[Install]
-WantedBy=graphical.target

diff --git a/gnome-base/gdm/files/49-keychain-r1 b/gnome-base/gdm/files/49-keychain-r1
deleted file mode 100644
index 51a1ca8..0000000
--- a/gnome-base/gdm/files/49-keychain-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# source keychain variables
-
-keychain="`which keychain 2>/dev/null`"
-if [ -n "$keychain" ] && [ -x "$keychain" ] && [ -f "$HOME/.bash_profile" ]
-then
-	. "${HOME}/.bash_profile"
-fi

diff --git a/gnome-base/gdm/files/50-ssh-agent-r1 b/gnome-base/gdm/files/50-ssh-agent-r1
deleted file mode 100644
index 4d94fb0..0000000
--- a/gnome-base/gdm/files/50-ssh-agent-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# add ssh-agent if found
-
-sshagent="`which ssh-agent 2>/dev/null`"
-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
-	command="$sshagent -- $command"
-elif [ -z "$sshagent" ] ; then
-	echo "$0: ssh-agent not found!"
-fi

diff --git a/gnome-base/gdm/files/gdm-3.4.1-plymouth.patch b/gnome-base/gdm/files/gdm-3.4.1-plymouth.patch
deleted file mode 100644
index edd6220..0000000
--- a/gnome-base/gdm/files/gdm-3.4.1-plymouth.patch
+++ /dev/null
@@ -1,338 +0,0 @@
-From c56fbb65277e8a17db5e0939f0b02e41c4ec784c Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 27 Nov 2009 18:52:54 -0500
-Subject: [PATCH] daemon: enable smooth transition between plymouth and X
-
-This commit adds optional support for interacting with plymouth
-from gdm. This feature can be enabled by passing --with-plymouth
-to configure.
-
-Hopefully, this will enable the various distributions that use
-plymouth to drop a patch.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=572173
----
- configure.ac              |   32 +++++++++++++
- daemon/gdm-server.c       |   60 +++++++++++++++++++++++++
- daemon/gdm-server.h       |    3 +
- daemon/gdm-simple-slave.c |  106 ++++++++++++++++++++++++++++++++++++++++++++-
- 4 files changed, 200 insertions(+), 1 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 35e6e04..81ea23e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -264,6 +264,10 @@ AC_ARG_WITH(systemd,
-             AS_HELP_STRING([--with-systemd],
-                            [Add systemd support @<:@default=auto@:>@]),
-             [with_systemd=$withval], [with_systemd=auto])
-+AC_ARG_WITH(plymouth,
-+            AS_HELP_STRING([--with-plymouth],
-+                           [Add plymouth support @<:@default=auto@:>@]),
-+            [with_plymouth=$withval], [with_plymouth=auto])
- 
- AC_ARG_WITH(at-spi-registryd-directory,
-             AS_HELP_STRING([--with-at-spi-registryd-directory],
-@@ -952,6 +956,33 @@ AC_SUBST(SYSTEMD_X_SERVER)
- AC_DEFINE_UNQUOTED(SYSTEMD_X_SERVER,"$SYSTEMD_X_SERVER",[Path to systemd X server wrapper])
- 
- dnl ---------------------------------------------------------------------------
-+dnl - Check for plymouth support
-+dnl ---------------------------------------------------------------------------
-+PKG_CHECK_MODULES(PLYMOUTH,
-+                  [ply-boot-client],
-+                  [have_plymouth=yes], [have_plymouth=no])
-+
-+if test "x$with_plymouth" = "xauto" ; then
-+        if test x$have_plymouth = xno ; then
-+                use_plymouth=no
-+        else
-+                use_plymouth=yes
-+        fi
-+else
-+        use_plymouth="$with_plymouth"
-+fi
-+
-+if test "x$use_plymouth" != "xno" ; then
-+        if test "x$have_plymouth" = "xno"; then
-+                AC_MSG_ERROR([Plymouth support explicitly required, but plymouth not found])
-+        fi
-+
-+        AC_DEFINE(WITH_PLYMOUTH, 1, [Define to enable plymouth support])
-+fi
-+AC_SUBST(PLYMOUTH_CFLAGS)
-+AC_SUBST(PLYMOUTH_LIBS)
-+
-+dnl ---------------------------------------------------------------------------
- dnl - Check for D-Bus
- dnl ---------------------------------------------------------------------------
- 
-@@ -1537,6 +1568,7 @@ echo \
-         SELinux support:          ${with_selinux}
-         ConsoleKit support:       ${use_console_kit}
-         systemd support:          ${use_systemd}
-+        plymouth support:         ${use_plymouth}
-         UPower support:           ${have_upower}
-         Build with RBAC:          ${msg_rbac_shutdown}
- "
-diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
-index d0d8ff9..6f2a939 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
-@@ -42,6 +43,10 @@
- #include <systemd/sd-daemon.h>
- #endif
- 
-+#ifdef WITH_PLYMOUTH
-+#include <linux/vt.h>
-+#endif
-+
- #include <glib.h>
- #include <glib/gi18n.h>
- #include <glib/gstdio.h>
-@@ -751,6 +756,61 @@ gdm_server_spawn (GdmServer  *server,
-         return ret;
- }
- 
-+#ifdef WITH_PLYMOUTH
-+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);
-+}
-+
-+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;
-+}
-+#endif
-+
- /**
-  * gdm_server_start:
-  * @disp: Pointer to a GdmDisplay structure
-diff --git a/daemon/gdm-server.h b/daemon/gdm-server.h
-index b53d68e..827f7fa 100644
---- a/daemon/gdm-server.h
-+++ b/daemon/gdm-server.h
-@@ -57,6 +57,9 @@ GdmServer *         gdm_server_new       (const char *display_id,
-                                           const char *seat_id,
-                                           const char *auth_file);
- gboolean            gdm_server_start     (GdmServer   *server);
-+#ifdef HAVE_PLYMOUTH
-+gboolean            gdm_server_start_on_active_vt (GdmServer   *server);
-+#endif
- 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..7c709a6 100644
---- a/daemon/gdm-simple-slave.c
-+++ b/daemon/gdm-simple-slave.c
-@@ -93,6 +93,9 @@ struct GdmSimpleSlavePrivate
- #ifdef  HAVE_LOGINDEVPERM
-         gboolean           use_logindevperm;
- #endif
-+#ifdef  WITH_PLYMOUTH
-+        guint              plymouth_is_running : 1;
-+#endif
- };
- 
- enum {
-@@ -1204,6 +1207,74 @@ on_start_session_later (GdmGreeterServer *session,
-         slave->priv->start_session_when_ready = FALSE;
- }
- 
-+#ifdef  WITH_PLYMOUTH
-+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;
-+}
-+#endif
-+
- static void
- setup_server (GdmSimpleSlave *slave)
- {
-@@ -1223,6 +1294,12 @@ setup_server (GdmSimpleSlave *slave)
-          */
-         gdm_slave_save_root_windows (GDM_SLAVE (slave));
- 
-+#ifdef WITH_PLYMOUTH
-+        /* Plymouth is waiting for the go-ahead to exit */
-+        if (slave->priv->plymouth_is_running) {
-+                plymouth_quit_with_transition (slave);
-+        }
-+#endif
- }
- 
- static void
-@@ -1426,6 +1503,12 @@ on_server_exited (GdmServer      *server,
-         g_debug ("GdmSimpleSlave: server exited with code %d\n", exit_code);
- 
-         gdm_slave_stopped (GDM_SLAVE (slave));
-+
-+#ifdef WITH_PLYMOUTH
-+        if (slave->priv->plymouth_is_running) {
-+                plymouth_quit_without_transition (slave);
-+        }
-+#endif
- }
- 
- static void
-@@ -1438,6 +1521,12 @@ on_server_died (GdmServer      *server,
-                  g_strsignal (signal_number));
- 
-         gdm_slave_stopped (GDM_SLAVE (slave));
-+
-+#ifdef WITH_PLYMOUTH
-+        if (slave->priv->plymouth_is_running) {
-+                plymouth_quit_without_transition (slave);
-+        }
-+#endif
- }
- 
- static gboolean
-@@ -1484,7 +1573,17 @@ gdm_simple_slave_run (GdmSimpleSlave *slave)
-                                   G_CALLBACK (on_server_ready),
-                                   slave);
- 
--                res = gdm_server_start (slave->priv->server);
-+#ifdef WITH_PLYMOUTH
-+                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
-+#endif
-+                {
-+                        res = gdm_server_start (slave->priv->server);
-+                }
-                 if (! res) {
-                         g_warning (_("Could not start the X "
-                                      "server (your graphical environment) "
-@@ -1494,6 +1593,11 @@ gdm_simple_slave_run (GdmSimpleSlave *slave)
-                                      "In the meantime this display will be "
-                                      "disabled.  Please restart GDM when "
-                                      "the problem is corrected."));
-+#ifdef WITH_PLYMOUTH
-+                        if (slave->priv->plymouth_is_running) {
-+                                plymouth_quit_without_transition (slave);
-+                        }
-+#endif
-                         exit (1);
-                 }
- 
--- 
-1.7.8.6
-

diff --git a/gnome-base/gdm/files/gdm-3.4.1-save-root-window.patch b/gnome-base/gdm/files/gdm-3.4.1-save-root-window.patch
deleted file mode 100644
index 2d9c314..0000000
--- a/gnome-base/gdm/files/gdm-3.4.1-save-root-window.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From c93d98b646a9a4fce3052260a1f08808d62d7155 Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 27 Nov 2009 18:27:53 -0500
-Subject: [PATCH] daemon: save root window to pixmap at _XROOTPMAP_ID
-
-This combined with starting the X server with
--background none will give distros using plymouth
-(or potentially other boot splashes) a a nice fade
-transition when g-s-d starts.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=572173
----
- 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 a5ce62f..53633c0 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.8.6
-

diff --git a/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch b/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch
new file mode 100644
index 0000000..27f2079
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch
@@ -0,0 +1,192 @@
+From 722d31dc8823090b651b103f0194b6380f2d458e Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 25 Sep 2012 22:30:29 -0400
+Subject: [PATCH] daemonize so that the boot process can continue
+
+Gentoo bug: #236701
+
+Based on original patch by Dan Nicholson <dbn.lists@gmail.com> and
+Gilles Dartiguelongue <eva@gentoo.org>.
+
+Fork gdm-binary, except when -nodaemon is used
+
+Makes the gdm main binary fork and daemonize unless the -nodaemon or
+--nodaemon options are used. Provides compatibility with xdm. Fixes
+bug #550170.
+
+In daemonized mode, start a new process group, and kill it in our signal
+handlers, so that killing gdm kills its spawned processes, and so that
+"/etc/init.d/xdm stop" actually works.
+---
+ configure.ac       |  4 ++++
+ daemon/Makefile.am |  1 +
+ daemon/main.c      | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 65 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 61a43d6..a851ba5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -99,6 +99,10 @@ PKG_CHECK_MODULES(DAEMON,
+ AC_SUBST(DAEMON_CFLAGS)
+ AC_SUBST(DAEMON_LIBS)
+ 
++PKG_CHECK_MODULES(LIBDAEMON, libdaemon)
++AC_SUBST(LIBDAEMON_CFLAGS)
++AC_SUBST(LIBDAEMON_LIBS)
++
+ GLIB_GSETTINGS
+ 
+ PKG_CHECK_MODULES(NSS,
+diff --git a/daemon/Makefile.am b/daemon/Makefile.am
+index bb84765..cf89b47 100644
+--- a/daemon/Makefile.am
++++ b/daemon/Makefile.am
+@@ -380,6 +380,7 @@ gdm_binary_LDADD = \
+ 	$(top_builddir)/common/libgdmcommon.la	\
+ 	$(XLIB_LIBS)				\
+ 	$(DAEMON_LIBS)				\
++	$(LIBDAEMON_LIBS)			\
+ 	$(XDMCP_LIBS)                           \
+ 	$(LIBWRAP_LIBS)                         \
+ 	$(SYSTEMD_LIBS)				\
+diff --git a/daemon/main.c b/daemon/main.c
+index 3b8572c..c2fe4fe 100644
+--- a/daemon/main.c
++++ b/daemon/main.c
+@@ -34,6 +34,8 @@
+ #include <locale.h>
+ #include <signal.h>
+ 
++#include <libdaemon/dfork.h>
++
+ #include <glib.h>
+ #include <glib/gi18n.h>
+ #include <glib/gstdio.h>
+@@ -336,16 +338,26 @@ signal_cb (int      signo,
+            gpointer data)
+ {
+         int ret;
++        static gboolean ignore_signals = FALSE;
+ 
+         g_debug ("Got callback for signal %d", signo);
+ 
+         ret = TRUE;
+ 
++        /* don't commit suicide before killing everyone in our process group */
++        if (ignore_signals)
++                return ret;
++
+         switch (signo) {
+         case SIGFPE:
+         case SIGPIPE:
+                 /* let the fatal signals interrupt us */
+                 g_debug ("Caught signal %d, shutting down abnormally.", signo);
++                /* if we daemonized, kill all the processes we spawned */
++                ignore_signals = TRUE;
++                kill (-getpid (), signo);
++                ignore_signals = FALSE;
++
+                 ret = FALSE;
+ 
+                 break;
+@@ -354,6 +366,11 @@ signal_cb (int      signo,
+         case SIGTERM:
+                 /* let the fatal signals interrupt us */
+                 g_debug ("Caught signal %d, shutting down normally.", signo);
++                /* if we daemonized, kill all the processes we spawned */
++                ignore_signals = TRUE;
++                kill (-getpid (), signo);
++                ignore_signals = FALSE;
++
+                 ret = FALSE;
+ 
+                 break;
+@@ -418,13 +435,16 @@ main (int    argc,
+         GOptionContext     *context;
+         GError             *error;
+         int                 ret;
++        int                 i;
+         gboolean            res;
+         GdmSignalHandler   *signal_handler;
+         static gboolean     do_timed_exit    = FALSE;
+         static gboolean     print_version    = FALSE;
+         static gboolean     fatal_warnings   = FALSE;
++        static gboolean     no_daemon        = FALSE;
+         static GOptionEntry entries []   = {
+                 { "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL },
++                { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL },
+                 { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL },
+                 { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL },
+ 
+@@ -439,6 +459,14 @@ main (int    argc,
+ 
+         g_type_init ();
+ 
++        /* preprocess the arguments to support the xdm style
++         * -nodaemon option
++         */
++        for (i = 0; i < argc; i++) {
++                if (strcmp (argv[i], "-nodaemon") == 0)
++                        argv[i] = "--nodaemon";
++        }
++
+         context = g_option_context_new (_("GNOME Display Manager"));
+         g_option_context_add_main_entries (context, entries, NULL);
+         g_option_context_set_ignore_unknown_options (context, TRUE);
+@@ -465,6 +493,33 @@ main (int    argc,
+                 g_log_set_always_fatal (fatal_mask);
+         }
+ 
++        if (!no_daemon) {
++                pid_t pid;
++                if (daemon_retval_init () < 0) {
++                        g_warning ("Failed to create pipe");
++                        exit (-1);
++                }
++                if ((pid = daemon_fork ()) < 0) {
++                        /* Fork failed */
++                        daemon_retval_done ();
++                        exit (1);
++                } else if (pid) {
++                        /* Parent process: wait 20s for daemon_retval_send() in the daemon process */
++                        if ((ret = daemon_retval_wait (20)) < 0) {
++                            g_warning ("Timed out waiting for daemon process: %s", strerror(errno));
++                            exit (255);
++                        } else if (ret > 0) {
++                            g_warning ("Daemon process returned error code %d", ret);
++                            exit (ret);
++                        }
++                        exit (0);
++                }
++                /* Daemon process */
++                daemon_close_all (-1);
++                /* Start a new process group so that killing the daemon will kill the processes that it spawned */
++                setsid ();
++        }
++
+         gdm_log_init ();
+ 
+         settings = gdm_settings_new ();
+@@ -519,6 +574,9 @@ main (int    argc,
+                 g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, main_loop);
+         }
+ 
++        if (!no_daemon)
++                daemon_retval_send (0);
++
+         g_main_loop_run (main_loop);
+ 
+         g_debug ("GDM finished, cleaning up...");
+@@ -535,6 +593,8 @@ main (int    argc,
+         ret = 0;
+ 
+  out:
++        if (!no_daemon)
++                daemon_retval_send (ret);
+ 
+         return ret;
+ }
+-- 
+1.7.12
+

diff --git a/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch b/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch
new file mode 100644
index 0000000..035d0fa
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch
@@ -0,0 +1,31 @@
+From 8f9bf7b053fc7a6c2e5b33fc43c168ba7250cb98 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 25 Sep 2012 17:38:37 -0400
+Subject: [PATCH] configure: Make selinux check non-automagic
+
+---
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 80a1fd4..61a43d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -142,9 +142,13 @@ AC_SUBST(UPOWER)
+ AC_SUBST(UPOWER_CFLAGS)
+ AC_SUBST(UPOWER_LIBS)
+ 
++AC_ARG_WITH(selinux,
++	    AS_HELP_STRING([--with-selinux],
++	                   [Add SELinux support]))
++
+ PKG_CHECK_MODULES(LIBSELINUX, libselinux, have_selinux=yes, have_selinux=no)
+ 
+-if test "x$have_selinux" = "xyes" ; then
++if test "x$have_selinux" = "xyes" && test "x$with_selinux" != "xno" ; then
+         AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
+ fi
+ AC_SUBST(LIBSELINUX_CFLAGS)
+-- 
+1.7.12
+

diff --git a/gnome-base/gdm/gdm-3.5.92.1.ebuild b/gnome-base/gdm/gdm-3.6.0.ebuild
similarity index 84%
rename from gnome-base/gdm/gdm-3.5.92.1.ebuild
rename to gnome-base/gdm/gdm-3.6.0.ebuild
index 1aa6515..8beba36 100644
--- a/gnome-base/gdm/gdm-3.5.92.1.ebuild
+++ b/gnome-base/gdm/gdm-3.6.0.ebuild
@@ -10,12 +10,16 @@ if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
 
+G_PV="2012.09.25"
+G_P="gdm-gentoo-${G_PV}"
 DESCRIPTION="GNOME Display Manager"
 HOMEPAGE="https://live.gnome.org/GDM"
+SRC_URI="${SRC_URI}
+	http://dev.gentoo.org/~tetromino/distfiles/${PN}/${G_P}.tar.xz"
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell gnome-keyring +introspection ipv6 ldap plymouth smartcard systemd tcpd test xinerama"
+IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell +introspection ipv6 ldap plymouth selinux smartcard systemd tcpd test xinerama"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
@@ -26,6 +30,7 @@ fi
 # nspr used by smartcard extension
 # dconf, dbus and g-s-d are needed at install time for dconf update
 # selinux support is now automagic. Not sure if that really matters.
+# libdaemon needed for our fix-daemonize-regression.patch
 COMMON_DEPEND="
 	>=dev-libs/glib-2.33.2:2
 	>=x11-libs/gtk+-2.91.1:3
@@ -56,21 +61,25 @@ COMMON_DEPEND="
 	x11-apps/sessreg
 
 	virtual/pam
-	consolekit? ( sys-auth/consolekit )
+	sys-auth/pambase[consolekit?,systemd?]
+
+	dev-libs/libdaemon
 
 	accessibility? ( x11-libs/libXevie )
 	audit? ( sys-process/audit )
-	gnome-keyring? ( >=gnome-base/gnome-keyring-2.22[pam] )
+	consolekit? ( sys-auth/consolekit[pam] )
 	introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
 	plymouth? ( sys-boot/plymouth )
-	systemd? ( >=sys-apps/systemd-39 )
+	selinux? ( sys-libs/libselinux )
+	systemd? ( >=sys-apps/systemd-39[pam] )
 	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
 	xinerama? ( x11-libs/libXinerama )"
 # XXX: These deps are from session and desktop files in data/ directory
 # at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser)
 # fprintd is used via dbus by gdm-fingerprint-extension
+# gnome-session-3.6 needed to avoid freezing with orca
 RDEPEND="${COMMON_DEPEND}
-	>=gnome-base/gnome-session-2.91.92
+	>=gnome-base/gnome-session-3.6
 	x11-apps/xhost
 	x11-themes/gnome-icon-theme-symbolic
 
@@ -109,8 +118,6 @@ fi
 pkg_setup() {
 	DOCS="AUTHORS ChangeLog NEWS README TODO"
 
-	# SELinux support is automagic for some reason
-	#
 	# PAM is the only auth scheme supported
 	# even though configure lists shadow and crypt
 	# they don't have any corresponding code.
@@ -130,6 +137,7 @@ pkg_setup() {
 		$(use_enable ipv6)
 		$(use_with consolekit console-kit)
 		$(use_with plymouth)
+		$(use_with selinux)
 		$(use_with systemd)
 		$(use_with tcpd tcp-wrappers)
 		$(use_with xinerama)"
@@ -156,12 +164,18 @@ src_prepare() {
 	# XXX: We can now pass a hard-coded initial value; temporary fix
 	#epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch"
 
+	# daemonize so that the boot process can continue, bug #236701
+	epatch "${FILESDIR}/${PN}-3.6.0-fix-daemonize-regression.patch"
+
 	# make custom session work, bug #216984
 	epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch"
 
 	# ssh-agent handling must be done at xinitrc.d, bug #220603
 	epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
 
+	# automagic selinux :/
+	epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch"
+
 	# don't load accessibility support at runtime when USE=-accessibility
 	use accessibility || epatch "${FILESDIR}/${PN}-3.3.92.1-disable-accessibility.patch"
 
@@ -183,36 +197,21 @@ src_prepare() {
 src_install() {
 	gnome2_src_install
 
-	# Install the systemd unit file
-	systemd_dounit "${FILESDIR}/3.4.1/gdm.service"
-
-	# Install a shell script that runs gdm-binary in the background
-	cp "${FILESDIR}/gdm.sh" "${ED}/usr/sbin/gdm"
-	chmod 755 "${ED}/usr/sbin/gdm"
 	# our x11's scripts point to /usr/bin/gdm
-	ln -sfn /usr/sbin/gdm "${ED}/usr/bin/gdm"
+	dosym /usr/sbin/gdm-binary /usr/bin/gdm
 
 	# log, etc.
 	keepdir /var/log/gdm
 
-	# add xinitrc.d scripts
-	exeinto /etc/X11/xinit/xinitrc.d
-	newexe "${FILESDIR}/49-keychain-r1" 49-keychain
-	newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
-
 	# install XDG_DATA_DIRS gdm changes
 	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
 	doenvd 99xdg-gdm
 
-	# install PAM files
-	mkdir "${T}/pam.d" || die "mkdir failed"
-	cp "${FILESDIR}/3.4.1"/gdm{,-autologin,-password,-fingerprint,-smartcard} \
-		"${T}/pam.d" || die "cp failed"
-	cp "${FILESDIR}/3.4.1/gdm-welcome" "${T}/pam.d/gdm-launch-environment" || die "cp failed"
-	use gnome-keyring && sed -i "s:#Keyring=::g" "${T}/pam.d"/*
-	use ldap && sed -i "s:#LDAP=::g" "${T}/pam.d"/*
-	use systemd && sed -i "s:#Systemd=::g" "${T}/pam.d"/*
-	dopamd "${T}/pam.d"/*
+	cd "${WORKDIR}/${G_P}"
+	local LDAP
+	use ldap && LDAP=yes
+	emake GDM_WELCOME="gdm-launch-environment" LDAP=${LDAP} EPREFIX="${EPREFIX}" \
+		SYSTEMD_UNITDIR="$(systemd_get_unitdir)" DESTDIR="${D}" install
 }
 
 pkg_postinst() {
@@ -236,9 +235,12 @@ pkg_postinst() {
 	elog "the pam_env man page for more information."
 	elog
 
-	if use gnome-keyring; then
-		elog "For autologin to unlock your keyring, you need to set an empty"
-		elog "password on your keyring. Use app-crypt/seahorse for that."
+	if has_version sys-auth/pambase[gnome-keyring]; then
+		elog "For passwordless login to unlock your keyring, you need to set an"
+		elog "empty password on your keyring. Use app-crypt/seahorse for that."
+	else
+		elog "To unlock your keyring on login, install sys-auth/pambase"
+		elog "with USE=gnome-keyring"
 	fi
 
 	if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then

diff --git a/gnome-base/gdm/gdm-9999.ebuild b/gnome-base/gdm/gdm-9999.ebuild
index 1aa6515..8beba36 100644
--- a/gnome-base/gdm/gdm-9999.ebuild
+++ b/gnome-base/gdm/gdm-9999.ebuild
@@ -10,12 +10,16 @@ if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
 
+G_PV="2012.09.25"
+G_P="gdm-gentoo-${G_PV}"
 DESCRIPTION="GNOME Display Manager"
 HOMEPAGE="https://live.gnome.org/GDM"
+SRC_URI="${SRC_URI}
+	http://dev.gentoo.org/~tetromino/distfiles/${PN}/${G_P}.tar.xz"
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell gnome-keyring +introspection ipv6 ldap plymouth smartcard systemd tcpd test xinerama"
+IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell +introspection ipv6 ldap plymouth selinux smartcard systemd tcpd test xinerama"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
@@ -26,6 +30,7 @@ fi
 # nspr used by smartcard extension
 # dconf, dbus and g-s-d are needed at install time for dconf update
 # selinux support is now automagic. Not sure if that really matters.
+# libdaemon needed for our fix-daemonize-regression.patch
 COMMON_DEPEND="
 	>=dev-libs/glib-2.33.2:2
 	>=x11-libs/gtk+-2.91.1:3
@@ -56,21 +61,25 @@ COMMON_DEPEND="
 	x11-apps/sessreg
 
 	virtual/pam
-	consolekit? ( sys-auth/consolekit )
+	sys-auth/pambase[consolekit?,systemd?]
+
+	dev-libs/libdaemon
 
 	accessibility? ( x11-libs/libXevie )
 	audit? ( sys-process/audit )
-	gnome-keyring? ( >=gnome-base/gnome-keyring-2.22[pam] )
+	consolekit? ( sys-auth/consolekit[pam] )
 	introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
 	plymouth? ( sys-boot/plymouth )
-	systemd? ( >=sys-apps/systemd-39 )
+	selinux? ( sys-libs/libselinux )
+	systemd? ( >=sys-apps/systemd-39[pam] )
 	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
 	xinerama? ( x11-libs/libXinerama )"
 # XXX: These deps are from session and desktop files in data/ directory
 # at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser)
 # fprintd is used via dbus by gdm-fingerprint-extension
+# gnome-session-3.6 needed to avoid freezing with orca
 RDEPEND="${COMMON_DEPEND}
-	>=gnome-base/gnome-session-2.91.92
+	>=gnome-base/gnome-session-3.6
 	x11-apps/xhost
 	x11-themes/gnome-icon-theme-symbolic
 
@@ -109,8 +118,6 @@ fi
 pkg_setup() {
 	DOCS="AUTHORS ChangeLog NEWS README TODO"
 
-	# SELinux support is automagic for some reason
-	#
 	# PAM is the only auth scheme supported
 	# even though configure lists shadow and crypt
 	# they don't have any corresponding code.
@@ -130,6 +137,7 @@ pkg_setup() {
 		$(use_enable ipv6)
 		$(use_with consolekit console-kit)
 		$(use_with plymouth)
+		$(use_with selinux)
 		$(use_with systemd)
 		$(use_with tcpd tcp-wrappers)
 		$(use_with xinerama)"
@@ -156,12 +164,18 @@ src_prepare() {
 	# XXX: We can now pass a hard-coded initial value; temporary fix
 	#epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch"
 
+	# daemonize so that the boot process can continue, bug #236701
+	epatch "${FILESDIR}/${PN}-3.6.0-fix-daemonize-regression.patch"
+
 	# make custom session work, bug #216984
 	epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch"
 
 	# ssh-agent handling must be done at xinitrc.d, bug #220603
 	epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
 
+	# automagic selinux :/
+	epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch"
+
 	# don't load accessibility support at runtime when USE=-accessibility
 	use accessibility || epatch "${FILESDIR}/${PN}-3.3.92.1-disable-accessibility.patch"
 
@@ -183,36 +197,21 @@ src_prepare() {
 src_install() {
 	gnome2_src_install
 
-	# Install the systemd unit file
-	systemd_dounit "${FILESDIR}/3.4.1/gdm.service"
-
-	# Install a shell script that runs gdm-binary in the background
-	cp "${FILESDIR}/gdm.sh" "${ED}/usr/sbin/gdm"
-	chmod 755 "${ED}/usr/sbin/gdm"
 	# our x11's scripts point to /usr/bin/gdm
-	ln -sfn /usr/sbin/gdm "${ED}/usr/bin/gdm"
+	dosym /usr/sbin/gdm-binary /usr/bin/gdm
 
 	# log, etc.
 	keepdir /var/log/gdm
 
-	# add xinitrc.d scripts
-	exeinto /etc/X11/xinit/xinitrc.d
-	newexe "${FILESDIR}/49-keychain-r1" 49-keychain
-	newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
-
 	# install XDG_DATA_DIRS gdm changes
 	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
 	doenvd 99xdg-gdm
 
-	# install PAM files
-	mkdir "${T}/pam.d" || die "mkdir failed"
-	cp "${FILESDIR}/3.4.1"/gdm{,-autologin,-password,-fingerprint,-smartcard} \
-		"${T}/pam.d" || die "cp failed"
-	cp "${FILESDIR}/3.4.1/gdm-welcome" "${T}/pam.d/gdm-launch-environment" || die "cp failed"
-	use gnome-keyring && sed -i "s:#Keyring=::g" "${T}/pam.d"/*
-	use ldap && sed -i "s:#LDAP=::g" "${T}/pam.d"/*
-	use systemd && sed -i "s:#Systemd=::g" "${T}/pam.d"/*
-	dopamd "${T}/pam.d"/*
+	cd "${WORKDIR}/${G_P}"
+	local LDAP
+	use ldap && LDAP=yes
+	emake GDM_WELCOME="gdm-launch-environment" LDAP=${LDAP} EPREFIX="${EPREFIX}" \
+		SYSTEMD_UNITDIR="$(systemd_get_unitdir)" DESTDIR="${D}" install
 }
 
 pkg_postinst() {
@@ -236,9 +235,12 @@ pkg_postinst() {
 	elog "the pam_env man page for more information."
 	elog
 
-	if use gnome-keyring; then
-		elog "For autologin to unlock your keyring, you need to set an empty"
-		elog "password on your keyring. Use app-crypt/seahorse for that."
+	if has_version sys-auth/pambase[gnome-keyring]; then
+		elog "For passwordless login to unlock your keyring, you need to set an"
+		elog "empty password on your keyring. Use app-crypt/seahorse for that."
+	else
+		elog "To unlock your keyring on login, install sys-auth/pambase"
+		elog "with USE=gnome-keyring"
 	fi
 
 	if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-09-27  7:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-27  7:53 [gentoo-commits] proj/gnome:master commit in: gnome-base/gdm/files/3.4.1/, gnome-base/gdm/, gnome-base/gdm/files/ Alexandre Rostovtsev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox