summaryrefslogtreecommitdiff
path: root/gnome-base/gdm
diff options
context:
space:
mode:
authorBlackNoxis <steven.darklight@gmail.com>2014-02-15 23:46:38 +0200
committerBlackNoxis <steven.darklight@gmail.com>2014-02-15 23:46:38 +0200
commit539ab2c329ef87cb855c5965a4e3995af9b1cad3 (patch)
treeeb48abd2bb1152d7a5a6e8e048d20f76b0057c9e /gnome-base/gdm
parentbf9f773fb3fcefed199cd8af38b65f77b347c80c (diff)
Added gnome already splitted ebuilds. will split later if needed to improve deps heaven
Diffstat (limited to 'gnome-base/gdm')
-rw-r--r--gnome-base/gdm/Manifest3
-rw-r--r--gnome-base/gdm/files/49-keychain-r19
-rw-r--r--gnome-base/gdm/files/50-ssh-agent-r110
-rw-r--r--gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch32
-rw-r--r--gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch12
-rw-r--r--gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch51
-rw-r--r--gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch192
-rw-r--r--gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch31
-rwxr-xr-xgnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch34
-rwxr-xr-xgnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch134
-rw-r--r--gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch29
-rwxr-xr-xgnome-base/gdm/files/gdm-set-session52
-rw-r--r--gnome-base/gdm/gdm-3.10.0.1.ebuild241
-rw-r--r--gnome-base/gdm/gdm-3.8.4.ebuild264
14 files changed, 1094 insertions, 0 deletions
diff --git a/gnome-base/gdm/Manifest b/gnome-base/gdm/Manifest
new file mode 100644
index 00000000..37239df5
--- /dev/null
+++ b/gnome-base/gdm/Manifest
@@ -0,0 +1,3 @@
+DIST gdm-3.10.0.1.tar.xz 1552460 SHA256 549a42009af9c79a4e07632e405dcb71ba2e876e766cff02471511ad641b6ae7 SHA512 9c108fd70324c17bd93c1f9ad74a87404350041c4d0c45f72c233a1414202b107502f0154486d8c8cceb9f0826275608045539c8bc96cbc6ef5350fc55d5462a WHIRLPOOL 34dd4595ad94822703b4c9d49ce413b64a93e0ccd50bd757dbdf79b592fb714b24d9c9b87d852d04d62750bec3daa3039e5d0d70ff03611c698f63b3b91c9404
+DIST gdm-3.8.4.tar.xz 1677040 SHA256 db40fb66bf476721b6d333abe0bfed7feacdca7d492f971c86a3f1e5cccdb447 SHA512 a64df8a4b7e1000aadfe1433b1d0f5d9bd16eeca45f1fdf36adc207a9f1dd410cf8e888553205135952a6da30b8c9efd4a240fc3f454636e0c9e4f86414a3283 WHIRLPOOL 4d3fe4cbd084a169bce29481271c99a8e9523cd6b1d163e4e1dc5cd829097daf9339de538d43998109596b41bde34ff798d2eaf607f38c5c859ee3b526f7e04e
+DIST gdm-gentoo-2012.09.25.tar.xz 1448 SHA256 f5978e4309e5486be41fec437a6e538dbfca3451757f3282a557941c4e70700d SHA512 c9d1a4699c34ce8708a4e7eed1b38d66ead507a4a2a6b45f2ef6254d54b46c755c9195db0593d6aa6785a8986e2ef5235592071c0cae8c1c8963951ecdb7c079 WHIRLPOOL c0efd131977b0036431b9edd6932025247323f198dc1bd7195efb55d31fd6b106ebdf391944b0009cf7a3261e99160fa6041a26348fe020badf26d0785f5dcc8
diff --git a/gnome-base/gdm/files/49-keychain-r1 b/gnome-base/gdm/files/49-keychain-r1
new file mode 100644
index 00000000..51a1ca87
--- /dev/null
+++ b/gnome-base/gdm/files/49-keychain-r1
@@ -0,0 +1,9 @@
+#!/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
new file mode 100644
index 00000000..4d94fb04
--- /dev/null
+++ b/gnome-base/gdm/files/50-ssh-agent-r1
@@ -0,0 +1,10 @@
+#!/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-2.32.0-xinitrc-ssh-agent.patch b/gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch
new file mode 100644
index 00000000..b1cddf17
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-2.32.0-xinitrc-ssh-agent.patch
@@ -0,0 +1,32 @@
+From 1cb1841da3a8fedc1671637e2828d5e361af21fa Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 2 Nov 2010 23:19:31 +0100
+Subject: [PATCH 5/6] ssh-agent handling must be done at xinitrc.d
+
+Gentoo bug: #220603
+---
+ data/Xsession.in | 8 --------
+ 1 files changed, 0 insertions(+), 8 deletions(-)
+
+diff --git a/data/Xsession.in b/data/Xsession.in
+index 0da187d..aa49b90 100755
+--- a/data/Xsession.in
++++ b/data/Xsession.in
+@@ -189,14 +189,6 @@ if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ done
+ fi
+
+-# add ssh-agent if found
+-sshagent="`gdmwhich ssh-agent`"
+-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
+- command="$sshagent -- $command"
+-elif [ -z "$sshagent" ] ; then
+- echo "$0: ssh-agent not found!"
+-fi
+-
+ echo "$0: Setup done, will execute: $command"
+
+ eval exec $command
+--
+1.7.3.1
+
diff --git a/gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch b/gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch
new file mode 100644
index 00000000..3fea17be
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch
@@ -0,0 +1,12 @@
+--- a/data/gdm.service.in
++++ b/data/gdm.service.in
+@@ -1,7 +1,7 @@
+ [Unit]
+ Description=GNOME Display Manager
+-Conflicts=getty@tty@GDM_INITIAL_VT@.service plymouth-quit.service
+-After=systemd-user-sessions.service getty@tty@GDM_INITIAL_VT@.service plymouth-quit.service
++Conflicts=getty@tty@GDM_INITIAL_VT@.service
++After=systemd-user-sessions.service getty@tty@GDM_INITIAL_VT@.service plymouth-quit.service plymouth-quit-wait.service
+
+ [Service]
+ ExecStart=@sbindir@/gdm
diff --git a/gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch b/gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch
new file mode 100644
index 00000000..0642f7c0
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.2.1.1-custom-session.patch
@@ -0,0 +1,51 @@
+From b96c19976b6876648fd91949f78f06cf5d269b18 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 2 Nov 2010 23:19:07 +0100
+Subject: [PATCH] make custom session work
+
+Gentoo bug: #216984
+
+fix custom sessions not doing sourcing in the proper order.
+---
+ data/Xsession.in | 18 +++++++++---------
+ 1 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/data/Xsession.in b/data/Xsession.in
+index 118518c..201be92 100755
+--- a/data/Xsession.in
++++ b/data/Xsession.in
+@@ -155,15 +155,6 @@ fi
+
+ xhost +si:localuser:`id -un` || :
+
+-# run all system xinitrc shell scripts.
+-if [ -d /etc/X11/xinit/xinitrc.d ]; then
+- for i in /etc/X11/xinit/xinitrc.d/* ; do
+- if [ -x "$i" -a ! -d "$i" ]; then
+- . "$i"
+- fi
+- done
+-fi
+-
+ if [ "x$command" = "xcustom" ] ; then
+ if [ -x "$HOME/.xsession" ]; then
+ command="$HOME/.xsession"
+@@ -191,6 +182,15 @@ if [ "x$command" = "xdefault" ] ; then
+ fi
+ fi
+
++# run all system xinitrc shell scripts.
++if [ -d /etc/X11/xinit/xinitrc.d ]; then
++ for i in /etc/X11/xinit/xinitrc.d/* ; do
++ if [ -x "$i" -a ! -d "$i" ]; then
++ . "$i"
++ fi
++ done
++fi
++
+ # add ssh-agent if found
+ sshagent="`gdmwhich ssh-agent`"
+ if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
+--
+1.7.7
+
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 00000000..27f20797
--- /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 00000000..035d0fa4
--- /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/files/gdm-3.7.3.1-disable-accessibility.patch b/gnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch
new file mode 100755
index 00000000..bf684640
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.7.3.1-disable-accessibility.patch
@@ -0,0 +1,34 @@
+From 07fb1b31d818f308beb1c3800c4b90830b57d01b Mon Sep 17 00:00:00 2001
+From: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
+Date: Fri, 25 Jan 2013 10:03:31 +0330
+Subject: [PATCH] don't load accessbility
+
+---
+ data/00-upstream-settings | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/00-upstream-settings b/data/00-upstream-settings
+index 660a295..3993786 100644
+--- a/data/00-upstream-settings
++++ b/data/00-upstream-settings
+@@ -7,7 +7,7 @@
+ #
+
+ [org/gnome/desktop/a11y/keyboard]
+-enable=true
++enable=false
+
+ [org/gnome/desktop/background]
+ show-desktop-icons=false
+@@ -16,7 +16,7 @@ show-desktop-icons=false
+ exec='/bin/true'
+
+ [org/gnome/desktop/interface]
+-toolkit-accessibility=true
++toolkit-accessibility=false
+
+ [org/gnome/desktop/lockdown]
+ disable-application-handlers=true
+--
+1.8.1
+
diff --git a/gnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch b/gnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch
new file mode 100755
index 00000000..810bd6e8
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.7.90-fix-daemonize-regression.patch
@@ -0,0 +1,134 @@
+From bda248c1e184f92aedf9f8d932ebd20746910d52 Mon Sep 17 00:00:00 2001
+From: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
+Date: Mon, 4 Mar 2013 21:23:45 +0330
+Subject: [PATCH] gdm-3.7.90 fix daemonize regression
+
+---
+ configure.ac | 4 ++++
+ daemon/Makefile.am | 1 +
+ daemon/main.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 50 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 0918060..d4ea271 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 ead9096..b810089 100644
+--- a/daemon/Makefile.am
++++ b/daemon/Makefile.am
+@@ -385,6 +385,7 @@ gdm_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 8176fe3..0151862 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>
+@@ -329,8 +331,10 @@ main (int argc,
+ 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 },
+
+@@ -343,6 +347,15 @@ main (int argc,
+
+ ret = 1;
+
++ /* preprocess the arguments to support the xdm style
++ * -nodaemon option
++ */
++ int i;
++ 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);
+@@ -369,6 +382,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 ();
+@@ -418,6 +458,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...");
+@@ -433,6 +476,8 @@ main (int argc,
+ ret = 0;
+
+ out:
++ if (!no_daemon)
++ daemon_retval_send (ret);
+ if (error) {
+ g_printerr ("%s\n", error->message);
+ g_clear_error (&error);
+--
+1.8.1.2
+
diff --git a/gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch b/gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch
new file mode 100644
index 00000000..3b56daf2
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.8.4-fingerprint-auth.patch
@@ -0,0 +1,29 @@
+From 6139570c977561549747d5200b33be9786e95529 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 30 Jul 2013 22:56:30 -0400
+Subject: [PATCH] Gentoo does not have a fingerprint-auth pam stack
+
+---
+ data/pam-exherbo/gdm-fingerprint.pam | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/data/pam-exherbo/gdm-fingerprint.pam b/data/pam-exherbo/gdm-fingerprint.pam
+index 41639ec..d9633fb 100644
+--- a/data/pam-exherbo/gdm-fingerprint.pam
++++ b/data/pam-exherbo/gdm-fingerprint.pam
+@@ -1,6 +1,11 @@
+ account include system-login
+
+-auth substack fingerprint-auth
++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 required pam_permit.so
+ auth optional pam_gnome_keyring.so
+
+ password required pam_deny.so
+--
+1.8.3.2
+
diff --git a/gnome-base/gdm/files/gdm-set-session b/gnome-base/gdm/files/gdm-set-session
new file mode 100755
index 00000000..491b9a67
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-set-session
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+"""Simple script that updates the default session in AccountServices"""
+
+import sys
+import time
+
+from gi.repository import GLib as glib
+
+import dbus
+from dbus.mainloop.glib import DBusGMainLoop
+
+ACCOUNTS_DBUS_NAME = "org.freedesktop.Accounts"
+ACCOUNTS_DBUS_PATH = "/org/freedesktop/Accounts"
+ACCOUNTS_USER_DBUS_NAME = "org.freedesktop.Accounts.User"
+
+if __name__ == "__main__":
+
+ try:
+ username = sys.argv[1]
+ session = sys.argv[2]
+ except IndexError:
+ sys.stderr.write("%s <username> <default session>\n")
+ raise SystemExit(1)
+
+ dbus_loop = DBusGMainLoop(set_as_default = True)
+ loop = glib.MainLoop()
+ glib.threads_init()
+
+ def setup():
+ try:
+ system_bus = dbus.SystemBus(mainloop=dbus_loop)
+ dbus_object = system_bus.get_object(
+ ACCOUNTS_DBUS_NAME, ACCOUNTS_DBUS_PATH)
+
+ iface = dbus.Interface(
+ dbus_object, dbus_interface=ACCOUNTS_DBUS_NAME)
+
+ user_path = iface.FindUserByName(username)
+
+ dbus_object = system_bus.get_object(
+ ACCOUNTS_DBUS_NAME, user_path)
+
+ iface_usr = dbus.Interface(
+ dbus_object, dbus_interface=ACCOUNTS_USER_DBUS_NAME)
+
+ iface_usr.SetXSession(session)
+
+ finally:
+ loop.quit()
+
+ glib.timeout_add(0, setup)
+ loop.run()
diff --git a/gnome-base/gdm/gdm-3.10.0.1.ebuild b/gnome-base/gdm/gdm-3.10.0.1.ebuild
new file mode 100644
index 00000000..d3e7c777
--- /dev/null
+++ b/gnome-base/gdm/gdm-3.10.0.1.ebuild
@@ -0,0 +1,241 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+GNOME2_LA_PUNT="yes"
+
+inherit autotools eutils gnome2 pam readme.gentoo systemd user
+
+DESCRIPTION="GNOME Display Manager"
+HOMEPAGE="https://live.gnome.org/GDM"
+
+LICENSE="GPL-2+"
+
+SLOT="0"
+IUSE="accessibility audit fprint +gnome-shell +introspection ipv6 plymouth selinux smartcard tcpd test xinerama"
+KEYWORDS="~amd64 ~arm ~ppc64 ~sh ~x86"
+
+# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# systemd needed for proper restarting, bug #463784
+COMMON_DEPEND="
+ app-text/iso-codes
+ >=dev-libs/glib-2.35:2
+ >=x11-libs/gtk+-2.91.1:3
+ >=x11-libs/pango-1.3
+ dev-libs/nspr
+ >=dev-libs/nss-3.11.1
+ >=gnome-base/dconf-0.11.6
+ >=gnome-base/gnome-settings-daemon-3.1.4
+ gnome-base/gsettings-desktop-schemas
+ >=media-libs/fontconfig-2.5.0
+ >=media-libs/libcanberra-0.4[gtk3]
+ sys-apps/dbus
+ >=sys-apps/accountsservice-0.6.12
+ >=sys-power/upower-0.9
+
+ x11-apps/sessreg
+ x11-base/xorg-server
+ x11-libs/libXi
+ x11-libs/libXau
+ x11-libs/libX11
+ x11-libs/libXdmcp
+ x11-libs/libXext
+ x11-libs/libXft
+ x11-libs/libXrandr
+ >=x11-misc/xdg-utils-1.0.2-r3
+
+ virtual/pam
+ >=sys-apps/systemd-186[pam]
+ sys-auth/pambase[systemd]
+
+ accessibility? ( x11-libs/libXevie )
+ audit? ( sys-process/audit )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
+ plymouth? ( sys-boot/plymouth )
+ selinux? ( sys-libs/libselinux )
+ 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-3.6
+ x11-apps/xhost
+ x11-themes/gnome-icon-theme-symbolic
+
+ accessibility? (
+ app-accessibility/gnome-mag
+ app-accessibility/gok
+ app-accessibility/orca
+ gnome-extra/at-spi:1 )
+ fprint? (
+ sys-auth/fprintd
+ sys-auth/pam_fprint )
+ gnome-shell? ( >=gnome-base/gnome-shell-3.1.90 )
+ !gnome-shell? ( x11-wm/metacity )
+ smartcard? (
+ app-crypt/coolkey
+ sys-auth/pam_pkcs11 )
+
+ !gnome-extra/fast-user-switch-applet
+"
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xml-dtd:4.1.2
+ >=dev-util/intltool-0.40.0
+ >=sys-devel/gettext-0.17
+ virtual/pkgconfig
+ x11-proto/inputproto
+ x11-proto/randrproto
+ test? ( >=dev-libs/check-0.9.4 )
+ xinerama? ( x11-proto/xineramaproto )
+"
+
+DOC_CONTENTS="
+ To make GDM start at boot, run:\n
+ # systemctl enable gdm.service\n
+ \n
+ For passwordless login to unlock your keyring, you need to install
+ sys-auth/pambase with USE=gnome-keyring and set an empty password
+ on your keyring. Use app-crypt/seahorse for that.
+"
+
+pkg_setup() {
+ enewgroup gdm
+ enewgroup video # Just in case it hasn't been created yet
+ enewuser gdm -1 -1 /var/lib/gdm gdm,video
+
+ # For compatibility with certain versions of nvidia-drivers, etc., need to
+ # ensure that gdm user is in the video group
+ if ! egetent group video | grep -q gdm; then
+ # FIXME XXX: is this at all portable, ldap-safe, etc.?
+ # XXX: egetent does not have a 1-argument form, so we can't use it to
+ # get the list of gdm's groups
+ local g=$(groups gdm)
+ elog "Adding user gdm to video group"
+ usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
+ fi
+}
+
+src_prepare() {
+ # 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"
+
+ # Fix automagic selinux, upstream bug #704188
+ #FIXME
+ #epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch"
+
+ # Gentoo does not have a fingerprint-auth pam stack
+ epatch "${FILESDIR}/${PN}-3.8.4-fingerprint-auth.patch"
+
+ # don't load accessibility support at runtime when USE=-accessibility
+ use accessibility || epatch "${FILESDIR}/${PN}-3.7.3.1-disable-accessibility.patch"
+
+ # Correctly set systemd unit dependencies if plymouth is disabled
+ # This avoids screwing up VT1
+ use plymouth || epatch "${FILESDIR}/gdm-3.10.0.1-fix-systemd-unit-if-plymouth-disabled.patch"
+
+ mkdir -p "${S}"/m4
+ sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.ac || die
+ eautoreconf
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # PAM is the only auth scheme supported
+ # even though configure lists shadow and crypt
+ # they don't have any corresponding code.
+ # --with-at-spi-registryd-directory= needs to be passed explicitly because
+ # of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
+ # If plymouth integration is enabled, gdm expects to be always run
+ # on vt1. If using VT7 worked with 3.8, with 3.10 we incur in an almost deadlock
+ # at boot. See Gentoo bug #453392
+ gnome2_src_configure \
+ --with-run-dir=/run/gdm \
+ --localstatedir="${EPREFIX}"/var \
+ --disable-static \
+ --with-xdmcp=yes \
+ --enable-authentication-scheme=pam \
+ --with-default-pam-config=exherbo \
+ --with-at-spi-registryd-directory="${EPREFIX}"/usr/libexec \
+ $(use plymouth || echo -n --with-initial-vt=7) \
+ --with-systemd \
+ --enable-systemd-journal \
+ --without-console-kit \
+ $(use_with accessibility xevie) \
+ $(use_with audit libaudit) \
+ $(use_enable ipv6) \
+ $(use_with plymouth) \
+ $(use_with selinux) \
+ $(systemd_with_unitdir) \
+ $(use_with tcpd tcp-wrappers) \
+ $(use_with xinerama) \
+ ITSTOOL=$(type -P true)
+}
+
+src_install() {
+ gnome2_src_install
+
+ insinto /etc/X11/xinit/xinitrc.d
+ newins "${FILESDIR}/49-keychain-r1" 49-keychain
+ newins "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
+
+ # log, etc.
+ keepdir /var/log/gdm
+
+ # gdm user's home directory
+ keepdir /var/lib/gdm
+ fowners gdm:gdm /var/lib/gdm
+
+ # install XDG_DATA_DIRS gdm changes
+ echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+ doenvd 99xdg-gdm
+
+ # Sabayon: install our own script to set the gdm session via dbus
+ # AccountServices interface. This is useful for live booting to select
+ # xbmc or fluxbox.
+ exeinto /usr/libexec
+ doexe "${FILESDIR}/gdm-set-session"
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ local d ret
+
+ gnome2_pkg_postinst
+
+ dbus-launch dconf update || die "'dconf update' failed"
+
+ # bug #436456; gdm crashes if /var/lib/gdm subdirs are not owned by gdm:gdm
+ ret=0
+ ebegin "Fixing "${EROOT}"var/lib/gdm ownership"
+ chown gdm:gdm "${EROOT}var/lib/gdm" || ret=1
+ for d in "${EROOT}var/lib/gdm/"{.cache,.config,.local}; do
+ [[ ! -e "${d}" ]] || chown -R gdm:gdm "${d}" || ret=1
+ done
+ eend ${ret}
+
+ readme.gentoo_print_elog
+
+ if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then
+ elog "You had /etc/X11/gdm/gdm.conf which is the old configuration"
+ elog "file. It has been moved to /etc/X11/gdm/gdm-pre-gnome-2.16"
+ mv /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm-pre-gnome-2.16
+ fi
+
+ if ! systemd_is_booted; then
+ ewarn "${PN} needs Systemd to be *running* for working"
+ ewarn "properly. Please follow the this guide to migrate:"
+ ewarn "http://wiki.gentoo.org/wiki/Systemd"
+ ewarn "https://wiki.sabayon.org/index.php?title=En:HOWTO:_systemd"
+ fi
+}
diff --git a/gnome-base/gdm/gdm-3.8.4.ebuild b/gnome-base/gdm/gdm-3.8.4.ebuild
new file mode 100644
index 00000000..e382c3f1
--- /dev/null
+++ b/gnome-base/gdm/gdm-3.8.4.ebuild
@@ -0,0 +1,264 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gdm/gdm-3.8.0.ebuild,v 1.1 2013/03/28 22:47:35 pacho Exp $
+
+EAPI="5"
+GNOME2_LA_PUNT="yes"
+
+inherit autotools eutils gnome2 pam systemd user
+
+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 +introspection ipv6 ldap plymouth selinux smartcard systemd tcpd test xinerama"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+
+# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# libdaemon needed for our fix-daemonize-regression.patch
+COMMON_DEPEND="
+ app-text/iso-codes
+ >=dev-libs/glib-2.35:2
+ >=x11-libs/gtk+-2.91.1:3
+ dev-libs/libdaemon
+ >=x11-libs/pango-1.3
+ dev-libs/nspr
+ >=dev-libs/nss-3.11.1
+ >=gnome-base/dconf-0.11.6
+ >=gnome-base/gnome-settings-daemon-3.1.4
+ gnome-base/gsettings-desktop-schemas
+ >=media-libs/fontconfig-2.5.0
+ >=media-libs/libcanberra-0.4[gtk3]
+ sys-apps/dbus
+ >=sys-apps/accountsservice-0.6.12
+ >=sys-power/upower-0.9
+
+ x11-apps/sessreg
+ x11-base/xorg-server
+ x11-libs/libXi
+ x11-libs/libXau
+ x11-libs/libX11
+ x11-libs/libXdmcp
+ x11-libs/libXext
+ x11-libs/libXft
+ x11-libs/libXrandr
+ >=x11-misc/xdg-utils-1.0.2-r3
+
+ virtual/pam
+ sys-auth/pambase
+
+ accessibility? ( x11-libs/libXevie )
+ audit? ( sys-process/audit )
+ consolekit? ( >=sys-auth/consolekit-0.4.5_p20120320-r2[pam] )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
+ plymouth? ( sys-boot/plymouth )
+ selinux? ( sys-libs/libselinux )
+ systemd? ( >=sys-apps/systemd-186[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-3.6
+ x11-apps/xhost
+ x11-themes/gnome-icon-theme-symbolic
+
+ accessibility? (
+ app-accessibility/gnome-mag
+ app-accessibility/gok
+ app-accessibility/orca
+ gnome-extra/at-spi:1 )
+ consolekit? ( gnome-extra/polkit-gnome )
+ fallback? ( x11-wm/metacity )
+ fprint? (
+ sys-auth/fprintd
+ sys-auth/pam_fprint )
+ gnome-shell? ( >=gnome-base/gnome-shell-3.1.90 )
+ !gnome-shell? ( x11-wm/metacity )
+ smartcard? (
+ app-crypt/coolkey
+ sys-auth/pam_pkcs11 )
+
+ !gnome-extra/fast-user-switch-applet
+"
+DEPEND="${COMMON_DEPEND}
+ app-text/docbook-xml-dtd:4.1.2
+ >=dev-util/intltool-0.40.0
+ >=sys-devel/gettext-0.17
+ virtual/pkgconfig
+ x11-proto/inputproto
+ x11-proto/randrproto
+ test? ( >=dev-libs/check-0.9.4 )
+ xinerama? ( x11-proto/xineramaproto )
+"
+
+pkg_setup() {
+ enewgroup gdm
+ enewgroup video # Just in case it hasn't been created yet
+ enewuser gdm -1 -1 /var/lib/gdm gdm,video
+
+ # For compatibility with certain versions of nvidia-drivers, etc., need to
+ # ensure that gdm user is in the video group
+ if ! egetent group video | grep -q gdm; then
+ # FIXME XXX: is this at all portable, ldap-safe, etc.?
+ # XXX: egetent does not have a 1-argument form, so we can't use it to
+ # get the list of gdm's groups
+ local g=$(groups gdm)
+ elog "Adding user gdm to video group"
+ usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
+ fi
+}
+
+src_prepare() {
+ # GDM grabs VT2 instead of VT7, bug 261339, bug 284053, bug 288852
+ # XXX: We can now pass a hard-coded initial value; temporary
+ # FIXME
+# epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch"
+
+ # daemonize so that the boot process can continue, bug #236701
+ epatch "${FILESDIR}/${PN}-3.7.90-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"
+
+ # make gdm-fallback session the default if USE=-gnome-shell
+ if ! use gnome-shell; then
+ sed -e "s:'gdm-shell':'gdm-fallback':" \
+ -i data/00-upstream-settings || die "sed failed"
+ fi
+
+ # don't load accessibility support at runtime when USE=-accessibility
+ use accessibility || epatch "${FILESDIR}/${PN}-3.7.3.1-disable-accessibility.patch"
+
+ mkdir -p "${S}"/m4
+ eautoreconf
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # PAM is the only auth scheme supported
+ # even though configure lists shadow and crypt
+ # they don't have any corresponding code.
+ # --with-at-spi-registryd-directory= needs to be passed explicitly because
+ # of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
+ G2CONF="${G2CONF}
+ --disable-static
+ --localstatedir=${EPREFIX}/var
+ --with-xdmcp=yes
+ --enable-authentication-scheme=pam
+ --with-pam-prefix=${EPREFIX}/etc
+ --with-default-pam-config=none
+ --with-at-spi-registryd-directory=${EPREFIX}/usr/libexec
+ --with-consolekit-directory=${EPREFIX}/usr/lib/ConsoleKit
+ --with-initial-vt=7
+ $(use_with accessibility xevie)
+ $(use_with audit libaudit)
+ $(use_enable ipv6)
+ $(use_with consolekit console-kit)
+ $(use_with plymouth)
+ $(use_with selinux)
+ $(use_with systemd)
+ $(systemd_with_unitdir)
+ $(use_with tcpd tcp-wrappers)
+ $(use_with xinerama)
+ ITSTOOL=$(type -P true)"
+ gnome2_src_configure
+}
+
+src_install() {
+ gnome2_src_install
+
+ # our x11's scripts point to /usr/bin/gdm
+ dosym /usr/sbin/gdm /usr/bin/gdm
+
+ # log, etc.
+ keepdir /var/log/gdm
+
+ # gdm user's home directory
+ keepdir /var/lib/gdm
+ fowners gdm:gdm /var/lib/gdm
+
+ # install XDG_DATA_DIRS gdm changes
+ echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+ doenvd 99xdg-gdm
+
+ 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
+
+ # Sabayon: install our own script to set the gdm session via dbus
+ # AccountServices interface. This is useful for live booting to select
+ # xbmc or fluxbox.
+ exeinto /usr/libexec
+ doexe "${FILESDIR}/gdm-set-session"
+}
+
+pkg_postinst() {
+ local d ret
+
+ gnome2_pkg_postinst
+
+ dbus-launch dconf update || die "'dconf update' failed"
+
+ # bug #436456; gdm crashes if /var/lib/gdm subdirs are not owned by gdm:gdm
+ ret=0
+ ebegin "Fixing ${EROOT}var/lib/gdm ownership"
+ chown gdm:gdm "${EROOT}var/lib/gdm" || ret=1
+ for d in "${EROOT}var/lib/gdm/"{.cache,.config,.local}; do
+ [[ ! -e "${d}" ]] || chown -R gdm:gdm "${d}" || ret=1
+ done
+ eend ${ret}
+
+ elog "To make GDM start at boot, edit /etc/conf.d/xdm"
+ elog "and then execute 'rc-update add xdm default'."
+ elog "If you already have GDM running, you will need to restart it."
+
+ elog
+ elog "GDM ignores most non-localization environment variables. If you"
+ elog "need GDM to launch gnome-session with a particular environment,"
+ elog "you need to use pam_env.so in /etc/pam.d/gdm-welcome; see"
+ elog "the pam_env man page for more information."
+ elog
+
+ 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
+ elog "You had /etc/X11/gdm/gdm.conf which is the old configuration"
+ elog "file. It has been moved to /etc/X11/gdm/gdm-pre-gnome-2.16"
+ mv /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm-pre-gnome-2.16
+ fi
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+
+ if rc-config list default | grep -q xdm; then
+ elog "To remove GDM from startup please execute"
+ elog "'rc-update del xdm default'"
+ fi
+}