summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059>2010-01-03 03:53:23 +0800
committerkwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059>2010-01-03 03:53:23 +0800
commitff2cddb63c8765854c9bc091851daa77d3e1e0ba (patch)
tree3452c60388a1c88c5851c152f7841a5fb165482b
parent912396dcd52792a3b5b8eb3c61118fdc8bad7550 (diff)
downloadmarcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.tar
marcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.tar.gz
marcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.tar.bz2
marcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.tar.lz
marcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.tar.xz
marcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.tar.zst
marcuscom-ports-ff2cddb63c8765854c9bc091851daa77d3e1e0ba.zip
Update to 2.29.4.
Merge the patch-hal-keyboard and patch-hal-keyboard.2 into 1 patch. git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@13342 df743ca5-7f9a-e211-a948-0013205c9059
-rw-r--r--x11/gdm/Makefile106
-rw-r--r--x11/gdm/distinfo3
-rw-r--r--x11/gdm/files/gdm.in62
-rw-r--r--x11/gdm/files/gdm.pam.in22
-rw-r--r--x11/gdm/files/patch-common_Makefile.in20
-rw-r--r--x11/gdm/files/patch-common_gdm-address.c45
-rw-r--r--x11/gdm/files/patch-common_gdm-address.h11
-rw-r--r--x11/gdm/files/patch-common_gdm-common.c13
-rw-r--r--x11/gdm/files/patch-config.h.in12
-rw-r--r--x11/gdm/files/patch-configure58
-rw-r--r--x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c48
-rw-r--r--x11/gdm/files/patch-daemon_Makefile.in18
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session-worker.c71
-rw-r--r--x11/gdm/files/patch-data_Xsession.in39
-rw-r--r--x11/gdm/files/patch-data_gconf.path9
-rw-r--r--x11/gdm/files/patch-data_gdm.schemas.in.in11
-rw-r--r--x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in7
-rw-r--r--x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c20
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_Makefile.in11
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c27
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c10
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c64
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-user.c34
-rw-r--r--x11/gdm/files/patch-hal-keyboard123
-rw-r--r--x11/gdm/pkg-descr4
-rw-r--r--x11/gdm/pkg-install39
-rw-r--r--x11/gdm/pkg-message6
-rw-r--r--x11/gdm/pkg-plist294
28 files changed, 1187 insertions, 0 deletions
diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile
new file mode 100644
index 000000000..d655188b9
--- /dev/null
+++ b/x11/gdm/Makefile
@@ -0,0 +1,106 @@
+# New ports collection makefile for: gdm2
+# Date created: 20 May 2002
+# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom$
+#
+
+PORTNAME= gdm
+PORTVERSION= 2.29.4
+CATEGORIES= x11 gnome
+MASTER_SITES= GNOME
+DIST_SUBDIR= gnome2
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= GNOME 2 version of xdm display manager
+
+BUILD_DEPENDS= zenity:${PORTSDIR}/x11/zenity
+LIB_DEPENDS= ck-connector.0:${PORTSDIR}/sysutils/consolekit \
+ polkit-gtk-1.0:${PORTSDIR}/sysutils/polkit-gnome \
+ execinfo:${PORTSDIR}/devel/libexecinfo \
+ devkit-power-gobject.1:${PORTSDIR}/sysutils/devicekit-power \
+ hal.1:${PORTSDIR}/sysutils/hal \
+ xklavier.12:${PORTSDIR}/x11/libxklavier \
+ canberra-gtk.0:${PORTSDIR}/audio/libcanberra
+RUN_DEPENDS= zenity:${PORTSDIR}/x11/zenity \
+ ${LOCALBASE}/libexec/gnome-settings-daemon:${PORTSDIR}/sysutils/gnome-settings-daemon \
+ gnome-session:${PORTSDIR}/x11/gnome-session
+
+USERS= gdm
+GROUPS= gdm
+
+USE_BZIP2= yes
+USE_GETTEXT= yes
+USE_LDCONFIG= yes
+USE_XORG= dmx dmxproto
+INSTALLS_ICONS= yes
+USE_RC_SUBR= gdm
+USE_GNOME_SUBR= yes
+USE_GMAKE= yes
+USE_GNOME= gnomehack intlhack gnomehier gconf2 libglade2 librsvg2 \
+ gnomedocutils gnomeprefix gnomepanel
+GCONF_SCHEMAS= gdm-simple-greeter.schemas
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --with-working-directory=${PREFIX}/etc/gdm/home
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include -DHAS_SA_LEN" \
+ LDFLAGS="-L${LOCALBASE}/lib" \
+ LIBS="-lm" \
+ GTKDOC="false"
+
+SUB_FILES+= gdm.pam
+
+GDMDIR?= ${PREFIX}/etc/gdm
+PKGMESSAGE= ${WRKDIR}/pkg-message
+
+GNOME_LOCALSTATEDIR= /var
+
+OPTIONS= IPV6 "Enable IPv6 support" off \
+ KEYRING "Enable GnomeKeyring/PAM integration" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITHOUT_KEYRING)
+SUB_LIST+= PAM_KEYRING=\#
+.else
+RUN_DEPENDS+= ${LOCALBASE}/lib/pam_gnome_keyring.so:${PORTSDIR}/security/gnome-keyring
+SUB_LIST+= PAM_KEYRING=
+.endif
+
+.if defined(WITH_IPV6)
+CONFIGURE_ARGS+= --enable-ipv6
+.else
+CONFIGURE_ARGS+= --disable-ipv6
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|root:root|root:wheel|g' \
+ ${WRKSRC}/data/Makefile.in
+ @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
+ -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+ ${WRKSRC}/daemon/gdm-session-worker.c \
+ ${WRKSRC}/data/gconf.path
+ @${REINPLACE_CMD} -e 's|/bin/true|/usr/bin/true|g' \
+ ${WRKSRC}/data/session-setup.entries
+ @${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
+ ${WRKSRC}/configure ${WRKSRC}/daemon/*.c ${WRKSRC}/po/*.po
+ @${REINPLACE_CMD} -e 's|/usr/lib|${LOCALBASE}/lib|g' \
+ ${WRKSRC}/data/greeter-autostart/*.desktop.in*
+
+post-install:
+ ${INSTALL_DATA} ${WRKSRC}/data/gconf.path \
+ ${PREFIX}/share/gdm/gconf.path
+ ${INSTALL_DATA} ${WRKSRC}/data/session-setup.entries \
+ ${PREFIX}/share/gdm/session-setup.entries
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+ ${INSTALL_DATA} ${WRKSRC}/data/gdm.conf-custom \
+ ${PREFIX}/etc/gdm/custom.conf.default
+ ${MKDIR} ${PREFIX}/share/xsessions
+ ${INSTALL_DATA} ${WRKDIR}/gdm.pam ${PREFIX}/etc/pam.d/gdm
+ @${SED} -e 's|%%PREFIX%%|${PREFIX}|g' < ${PKGDIR}/pkg-message \
+ | /usr/bin/fmt 75 79 > ${PKGMESSAGE}
+ @${CAT} ${PKGMESSAGE}
+
+.include <bsd.port.post.mk>
diff --git a/x11/gdm/distinfo b/x11/gdm/distinfo
new file mode 100644
index 000000000..843dd897d
--- /dev/null
+++ b/x11/gdm/distinfo
@@ -0,0 +1,3 @@
+MD5 (gnome2/gdm-2.29.4.tar.bz2) = 70c6a4ea694662cf8d5da8b82c4e6cff
+SHA256 (gnome2/gdm-2.29.4.tar.bz2) = cb0b2a7d8c832afb275a3a4c95b91097f18e9e2c0acc6bdbaa63ec466507c320
+SIZE (gnome2/gdm-2.29.4.tar.bz2) = 2360981
diff --git a/x11/gdm/files/gdm.in b/x11/gdm/files/gdm.in
new file mode 100644
index 000000000..f90664751
--- /dev/null
+++ b/x11/gdm/files/gdm.in
@@ -0,0 +1,62 @@
+#!/bin/sh
+# $FreeBSD: ports/x11/gdm/files/gdm.in,v 1.17 2009/11/28 20:06:09 marcus Exp $
+# $MCom: ports/x11/gdm/files/gdm.in,v 1.38 2009/09/26 13:42:01 marcus Exp $
+
+# PROVIDE: gdm
+# REQUIRE: LOGIN cleanvar moused syscons dbus hald
+#
+# Add the following to /etc/rc.conf to start GDM at boot time:
+#
+# gdm_enable="YES"
+#
+
+. %%RC_SUBR%%
+. %%GNOME_SUBR%%
+
+gdm_enable=${gdm_enable-${gnome_enable}}
+gdm_preserve_base_pam_conf=${gdm_preserve_base_pam_conf-NO}
+gdm_lang=${gdm_lang-${LANG}}
+
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin:%%LOCALBASE%%/bin:%%LOCALBASE%%/sbin
+
+name="gdm"
+rcvar=`set_rcvar`
+command="%%PREFIX%%/sbin/${name}"
+pidfile="/var/run/${name}.pid"
+procname="%%PREFIX%%/sbin/gdm-binary"
+start_cmd="gdm_start"
+
+gdm_start()
+{
+ if ! checkyesno gdm_enable ; then
+ return 0
+ fi
+ echo "Starting ${name}."
+
+ # make sure there is no pam configuration for gdm service in base system
+ if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then
+ cp -p /etc/pam.d/gdm /etc/pam.d/gdm_disabled
+ rm -f /etc/pam.d/gdm
+ fi
+
+ ( iter=0
+ while ! ps -axoargs | grep "^/usr/libexec/getty " | grep -qv grep >/dev/null 2>&1; do
+ if [ ${iter} -eq 60 ]; then
+ break
+ fi
+ sleep 1
+ iter=$(expr ${iter} + 1)
+ done
+ iter=0
+ while ! %%LOCALBASE%%/bin/lshal >/dev/null 2>&1 ; do
+ if [ ${iter} -eq 60 ]; then
+ break
+ fi
+ sleep 1
+ iter=$(expr ${iter} + 1)
+ done
+ LANG=${gdm_lang} ${command} ${gdm_flags} ) &
+}
+
+load_rc_config ${name}
+run_rc_command "$1"
diff --git a/x11/gdm/files/gdm.pam.in b/x11/gdm/files/gdm.pam.in
new file mode 100644
index 000000000..3119d024b
--- /dev/null
+++ b/x11/gdm/files/gdm.pam.in
@@ -0,0 +1,22 @@
+#
+# $FreeBSD: ports/x11/gdm/files/gdm.pam.in,v 1.5 2009/11/28 20:06:09 marcus Exp $
+# $MCom: ports/x11/gdm/files/gdm.pam.in,v 1.8 2009/09/26 13:42:01 marcus Exp $
+#
+# PAM configuration for the "gdm" service
+#
+
+# auth
+#auth sufficient pam_krb5.so no_warn try_first_pass
+#auth sufficient pam_ssh.so no_warn try_first_pass
+auth required pam_unix.so no_warn try_first_pass
+%%PAM_KEYRING%%auth optional %%LOCALBASE%%/lib/pam_gnome_keyring.so
+
+# account
+account required pam_nologin.so
+#account required pam_krb5.so
+account required pam_unix.so
+
+# session
+#session optional pam_ssh.so
+session required pam_permit.so
+%%PAM_KEYRING%%session optional %%LOCALBASE%%/lib/pam_gnome_keyring.so auto_start
diff --git a/x11/gdm/files/patch-common_Makefile.in b/x11/gdm/files/patch-common_Makefile.in
new file mode 100644
index 000000000..2ab0a5001
--- /dev/null
+++ b/x11/gdm/files/patch-common_Makefile.in
@@ -0,0 +1,20 @@
+--- common/Makefile.in.orig 2008-08-20 14:34:16.000000000 -0400
++++ common/Makefile.in 2008-08-20 14:36:50.000000000 -0400
+@@ -428,7 +428,8 @@ gdm_crash_logger_CPPFLAGS = \
+ -DLOCALSTATEDIR=\"$(localstatedir)\" \
+ $(NULL)
+
+-gdm_crash_logger_LDADD = $(GTHREAD_LIBS)
++gdm_crash_logger_LDADD = $(GTHREAD_LIBS) \
++ -lexecinfo
+ @MKDTEMP_MISSING_FALSE@MKDTEMP_FILES =
+ @MKDTEMP_MISSING_TRUE@MKDTEMP_FILES = mkdtemp.c mkdtemp.h
+ libgdmcommon_la_SOURCES = \
+@@ -473,6 +474,7 @@ libgdmcommon_la_CFLAGS = \
+ $(NULL)
+
+ libgdmcommon_la_LIBADD = \
++ -lexecinfo \
+ $(NULL)
+
+ libgdmcommon_la_LDFLAGS = \
diff --git a/x11/gdm/files/patch-common_gdm-address.c b/x11/gdm/files/patch-common_gdm-address.c
new file mode 100644
index 000000000..a827d4b6d
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-address.c
@@ -0,0 +1,45 @@
+--- common/gdm-address.c.orig 2009-02-19 21:45:13.000000000 -0500
++++ common/gdm-address.c 2009-05-11 02:38:17.000000000 -0400
+@@ -29,6 +29,8 @@
+ #include <stropts.h>
+ #endif
+ #include <string.h>
++#include <sys/types.h>
++#include <sys/param.h>
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+@@ -37,7 +39,6 @@
+ #endif
+ #include <netdb.h>
+ #include <sys/ioctl.h>
+-#include <net/if.h>
+
+ #ifndef G_OS_WIN32
+ #include <sys/select.h>
+@@ -47,6 +48,7 @@
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
+ #endif
++#include <net/if.h>
+
+ #include <glib-object.h>
+
+@@ -206,7 +208,7 @@ gdm_address_get_hostname (GdmAddress *ad
+
+ host [0] = '\0';
+ res = getnameinfo ((const struct sockaddr *)address->ss,
+- sizeof (struct sockaddr_storage),
++ gdm_sockaddr_len (address->ss),
+ host, sizeof (host),
+ NULL, 0,
+ 0);
+@@ -245,7 +247,7 @@ gdm_address_get_numeric_info (GdmAddress
+ host [0] = '\0';
+ serv [0] = '\0';
+ res = getnameinfo ((const struct sockaddr *)address->ss,
+- sizeof (struct sockaddr_storage),
++ gdm_sockaddr_len (address->ss),
+ host, sizeof (host),
+ serv, sizeof (serv),
+ NI_NUMERICHOST | NI_NUMERICSERV);
diff --git a/x11/gdm/files/patch-common_gdm-address.h b/x11/gdm/files/patch-common_gdm-address.h
new file mode 100644
index 000000000..a4fd39310
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-address.h
@@ -0,0 +1,11 @@
+--- common/gdm-address.h.orig 2009-05-09 21:08:07.000000000 -0400
++++ common/gdm-address.h 2009-05-09 21:08:34.000000000 -0400
+@@ -36,6 +36,8 @@ G_BEGIN_DECLS
+
+ #define GDM_TYPE_ADDRESS (gdm_address_get_type ())
+
++#define gdm_sockaddr_len(sa) (((struct sockaddr *)sa)->sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in))
++
+ typedef struct _GdmAddress GdmAddress;
+
+ GType gdm_address_get_type (void);
diff --git a/x11/gdm/files/patch-common_gdm-common.c b/x11/gdm/files/patch-common_gdm-common.c
new file mode 100644
index 000000000..9fa4acafa
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-common.c
@@ -0,0 +1,13 @@
+--- common/gdm-common.c.orig 2007-12-23 10:29:20.000000000 +0100
++++ common/gdm-common.c 2007-12-23 10:29:34.000000000 +0100
+@@ -33,6 +33,10 @@
+
+ #include "gdm-common.h"
+
++#ifndef ENODATA
++#define ENODATA EAGAIN
++#endif
++
+ void
+ gdm_set_fatal_warnings_if_unstable (void)
+ {
diff --git a/x11/gdm/files/patch-config.h.in b/x11/gdm/files/patch-config.h.in
new file mode 100644
index 000000000..d17901da1
--- /dev/null
+++ b/x11/gdm/files/patch-config.h.in
@@ -0,0 +1,12 @@
+--- config.h.in.orig 2007-11-02 20:48:28.000000000 -0400
++++ config.h.in 2007-11-02 20:49:39.000000000 -0400
+@@ -23,6 +23,9 @@
+ #undef HAVE_LC_MESSAGES
+ #undef HAVE_LIBSM
+ #undef HAVE_LIBXDMCP
++#undef HAVE_LOGIN
++#undef HAVE_LOGOUT
++#undef HAVE_LOGWTMP
+ #undef HAVE_LOGINCAP
+ #undef HAVE_LOGINDEVPERM
+ #undef HAVE_LOGINRESTRICTIONS
diff --git a/x11/gdm/files/patch-configure b/x11/gdm/files/patch-configure
new file mode 100644
index 000000000..5cde5fb64
--- /dev/null
+++ b/x11/gdm/files/patch-configure
@@ -0,0 +1,58 @@
+--- configure.orig 2010-01-02 20:46:18.000000000 +0100
++++ configure 2010-01-02 20:48:16.000000000 +0100
+@@ -16972,10 +16972,12 @@ if test -n "$DAEMON_CFLAGS"; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= \$GLIB_REQUIRED_VERSION
+ gio-2.0 >= \$GLIB_REQUIRED_VERSION
++ hal
+ \""; } >&5
+ ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ ") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+@@ -16983,6 +16985,7 @@ if test -n "$DAEMON_CFLAGS"; then
+ pkg_cv_DAEMON_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ " 2>/dev/null`
+ else
+ pkg_failed=yes
+@@ -16997,10 +17000,12 @@ if test -n "$DAEMON_LIBS"; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= \$GLIB_REQUIRED_VERSION
+ gio-2.0 >= \$GLIB_REQUIRED_VERSION
++ hal
+ \""; } >&5
+ ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ ") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+@@ -17029,11 +17034,13 @@ fi
+ DAEMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ " 2>&1`
+ else
+ DAEMON_PKG_ERRORS=`$PKG_CONFIG --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ " 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+@@ -17042,6 +17049,7 @@ fi
+ as_fn_error "Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ ) were not met:
+
+ $DAEMON_PKG_ERRORS
diff --git a/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c b/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c
new file mode 100644
index 000000000..ede7f2c2f
--- /dev/null
+++ b/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c
@@ -0,0 +1,48 @@
+--- daemon/gdm-xdmcp-display-factory.c.orig 2009-12-21 17:36:30.000000000 +0100
++++ daemon/gdm-xdmcp-display-factory.c 2009-12-26 23:26:24.000000000 +0100
+@@ -35,6 +35,7 @@
+ #include <netdb.h>
+ #include <arpa/inet.h>
+ #include <net/if.h>
++#include <netinet/in.h>
+ #ifdef HAVE_SYS_SOCKIO_H
+ #include <sys/sockio.h>
+ #endif
+@@ -76,7 +77,7 @@
+ #define DEFAULT_USE_MULTICAST FALSE
+ #define DEFAULT_MULTICAST_ADDRESS "ff02::1"
+ #define DEFAULT_HONOR_INDIRECT TRUE
+-#define DEFAULT_MAX_DISPLAYS_PER_HOST 1
++#define DEFAULT_MAX_DISPLAYS_PER_HOST 2
+ #define DEFAULT_MAX_DISPLAYS 16
+ #define DEFAULT_MAX_PENDING_DISPLAYS 4
+ #define DEFAULT_MAX_WAIT 30
+@@ -404,6 +405,11 @@
+ create_socket (struct addrinfo *ai)
+ {
+ int sock;
++#ifdef ENABLE_IPV6
++#ifdef IPV6_V6ONLY
++ int off = 0;
++#endif
++#endif
+
+ sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+ if (sock < 0) {
+@@ -411,6 +417,16 @@
+ return sock;
+ }
+
++#ifdef ENABLE_IPV6
++#ifdef IPV6_V6ONLY
++ if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&off, sizeof (off)) < 0) {
++ g_warning ("setsockopt: %s", g_strerror (errno));
++ close (sock);
++ return -1;
++ }
++#endif
++#endif
++
+ if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) {
+ g_warning ("bind: %s", g_strerror (errno));
+ close (sock);
diff --git a/x11/gdm/files/patch-daemon_Makefile.in b/x11/gdm/files/patch-daemon_Makefile.in
new file mode 100644
index 000000000..137352970
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_Makefile.in
@@ -0,0 +1,18 @@
+--- daemon/Makefile.in.orig 2009-05-31 15:51:18.000000000 -0400
++++ daemon/Makefile.in 2009-05-31 15:56:32.000000000 -0400
+@@ -525,6 +525,7 @@ test_session_LDADD = \
+ $(XLIB_LIBS) \
+ $(EXTRA_DAEMON_LIBS) \
+ $(DAEMON_LIBS) \
++ $(EXTRA_DAEMON_LIBS) \
+ $(PAM_LIBS) \
+ $(NULL)
+
+@@ -660,6 +661,7 @@ gdm_session_worker_SOURCES = session-wor
+ gdm_session_worker_LDFLAGS = \
+ $(XLIB_LIBS) \
+ $(PAM_LIBS) \
++ $(EXTRA_DAEMON_LIBS) \
+ $(NULL)
+
+ gdm_session_worker_LDADD = \
diff --git a/x11/gdm/files/patch-daemon_gdm-session-worker.c b/x11/gdm/files/patch-daemon_gdm-session-worker.c
new file mode 100644
index 000000000..362a116ea
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session-worker.c
@@ -0,0 +1,71 @@
+--- daemon/gdm-session-worker.c.orig 2009-09-21 22:05:27.000000000 +0200
++++ daemon/gdm-session-worker.c 2009-09-22 12:33:59.000000000 +0200
+@@ -31,6 +31,9 @@
+ #include <errno.h>
+ #include <grp.h>
+ #include <pwd.h>
++#ifdef HAVE_LOGINCAP
++#include <login_cap.h>
++#endif
+
+ #ifdef HAVE_LOGINDEVPERM
+ #include <libdevinfo.h>
+@@ -340,7 +343,7 @@ gdm_session_execute (const char *file,
+ * what to search if PATH is unset. POSIX may, dunno.
+ */
+
+- path = "/bin:/usr/bin:.";
++ path = "/bin:/usr/bin:/usr/local/bin:.";
+ }
+
+ len = strlen (file) + 1;
+@@ -1995,15 +1998,16 @@ gdm_session_worker_start_user_session (G
+ char *cachedirname;
+ char *home_dir;
+ int fd;
++#ifdef HAVE_LOGINCAP
++ char *login = worker->priv->username;
++ struct passwd *pwent = getpwnam (login);
++#endif
+
+ /* Make sure cachedir gets created before we drop to user */
+ cachedirname = gdm_session_worker_create_cachedir (worker);
+ g_free (cachedirname);
+
+- if (setuid (worker->priv->uid) < 0) {
+- g_debug ("GdmSessionWorker: could not reset uid - %s", g_strerror (errno));
+- _exit (1);
+- }
++ /* Call setsid() before setusercontext() */
+
+ if (setsid () < 0) {
+ g_debug ("GdmSessionWorker: could not set pid '%u' as leader of new session and process group - %s",
+@@ -2011,6 +2015,28 @@ gdm_session_worker_start_user_session (G
+ _exit (2);
+ }
+
++#ifdef HAVE_LOGINCAP
++ if (setusercontext (NULL, pwent, pwent->pw_uid,
++ LOGIN_SETLOGIN | LOGIN_SETPATH |
++ LOGIN_SETPRIORITY | LOGIN_SETRESOURCES |
++ LOGIN_SETUMASK | LOGIN_SETUSER |
++ LOGIN_SETENV) < 0) {
++ g_debug ("%s: setusercontext () failed for %s. "
++ "Aborting.", "gdm_session_worker_start_user_session",
++ login ? login : "(null)");
++ }
++
++ /* Propagate PATH environment variable from user context to child processes */
++
++ gdm_session_worker_set_environment_variable (worker, "PATH", getenv ("PATH"));
++
++#else
++ if (setuid (worker->priv->uid) < 0) {
++ g_debug ("GdmSessionWorker: could not reset uid - %s", g_strerror (errno));
++ _exit (1);
++ }
++#endif
++
+ environment = gdm_session_worker_get_environment (worker);
+
+ g_assert (geteuid () == getuid ());
diff --git a/x11/gdm/files/patch-data_Xsession.in b/x11/gdm/files/patch-data_Xsession.in
new file mode 100644
index 000000000..894c97d16
--- /dev/null
+++ b/x11/gdm/files/patch-data_Xsession.in
@@ -0,0 +1,39 @@
+--- data/Xsession.in.orig 2008-05-12 20:25:54.000000000 -0400
++++ data/Xsession.in 2008-06-09 01:29:59.000000000 -0400
+@@ -231,12 +231,31 @@ if [ "x$command" = "xdefault" ] ; then
+ fi
+ fi
+
++is_gnome=0
++if [ "x$command" = "xgnome-session" ]; then
++ is_gnome=1
++fi
++
++# add seahorse-agent if found
++if [ ${is_gnome} = 1 ]; then
++ seahorseagent="`gdmwhich seahorse-agent`"
++ if [ -n "$seahorseagent" ] && [ -x "$seahorseagent" ] && [ -z "$GPG_AGENT_INFO" ] ; then
++ command="dbus-launch --exit-with-session $seahorseagent --execute $command"
++ elif [ -z "$seahorseagent" ] ; then
++ echo "$0: seahorse-agent not found!"
++ fi
++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!"
++# ssh-agent functionality is handled by gnome-keyring-daemon which is launched
++# from gnome-session
++if [ ${is_gnome} != 1 ]; then
++ 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
+ fi
+
+ echo "$0: Setup done, will execute: $command"
diff --git a/x11/gdm/files/patch-data_gconf.path b/x11/gdm/files/patch-data_gconf.path
new file mode 100644
index 000000000..2efdb3cc9
--- /dev/null
+++ b/x11/gdm/files/patch-data_gconf.path
@@ -0,0 +1,9 @@
+--- data/gconf.path.orig 2008-12-26 17:04:03.000000000 -0500
++++ data/gconf.path 2008-12-26 17:04:13.000000000 -0500
+@@ -1,5 +1,5 @@
+ # treat system-wide settings as mandatory
+-xml:readonly:/etc/gconf/gconf.xml.system
++xml:readonly:%%LOCALBASE%%/etc/gconf/gconf.xml.system
+
+ # override some settings
+ # we treat settings in this location as
diff --git a/x11/gdm/files/patch-data_gdm.schemas.in.in b/x11/gdm/files/patch-data_gdm.schemas.in.in
new file mode 100644
index 000000000..f52dd8bd5
--- /dev/null
+++ b/x11/gdm/files/patch-data_gdm.schemas.in.in
@@ -0,0 +1,11 @@
+--- data/gdm.schemas.in.in.orig 2009-05-16 18:17:53.000000000 -0400
++++ data/gdm.schemas.in.in 2009-05-16 18:18:01.000000000 -0400
+@@ -77,7 +77,7 @@
+ <schema>
+ <key>xdmcp/DisplaysPerHost</key>
+ <signature>i</signature>
+- <default>1</default>
++ <default>2</default>
+ </schema>
+ <schema>
+ <key>xdmcp/Port</key>
diff --git a/x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in b/x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in
new file mode 100644
index 000000000..7febf5165
--- /dev/null
+++ b/x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in
@@ -0,0 +1,7 @@
+--- data/greeter-autostart/gdm-simple-greeter.desktop.in.in.orig 2008-11-23 22:22:04.000000000 -0500
++++ data/greeter-autostart/gdm-simple-greeter.desktop.in.in 2008-11-23 22:22:09.000000000 -0500
+@@ -5,4 +5,3 @@ Exec=@LIBEXECDIR@/gdm-simple-greeter
+ OnlyShowIn=GNOME;
+ X-GNOME-Autostart-Phase=Application
+ X-GNOME-Autostart-Notify=true
+-X-GNOME-AutoRestart=true
diff --git a/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c b/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c
new file mode 100644
index 000000000..dc9a766fa
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c
@@ -0,0 +1,20 @@
+--- gui/simple-chooser/gdm-host-chooser-widget.c.orig 2009-12-21 17:36:30.000000000 +0100
++++ gui/simple-chooser/gdm-host-chooser-widget.c 2009-12-26 23:31:52.000000000 +0100
+@@ -443,7 +443,7 @@ find_broadcast_addresses (GdmHostChooser
+ /* paranoia */
+ ifreq.ifr_name[sizeof (ifreq.ifr_name) - 1] = '\0';
+
+- if (ioctl (sock, SIOCGIFFLAGS, &ifreq) < 0) {
++ if ((ioctl (sock, SIOCGIFFLAGS, &ifreq) < 0) && (errno != ENXIO)) {
+ g_warning ("Could not get SIOCGIFFLAGS for %s", ifr[i].ifr_name);
+ }
+
+@@ -543,6 +543,8 @@ xdmcp_init (GdmHostChooserWidget *widget
+ #ifdef ENABLE_IPV6
+ widget->priv->socket_fd = socket (AF_INET6, SOCK_DGRAM, 0);
+ if (widget->priv->socket_fd != -1) {
++ int off = 0;
++ setsockopt(widget->priv->socket_fd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&off, sizeof (off));
+ widget->priv->have_ipv6 = TRUE;
+ }
+ #endif
diff --git a/x11/gdm/files/patch-gui_simple-greeter_Makefile.in b/x11/gdm/files/patch-gui_simple-greeter_Makefile.in
new file mode 100644
index 000000000..e8a958e66
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_Makefile.in
@@ -0,0 +1,11 @@
+--- gui/simple-greeter/Makefile.in.orig 2008-02-13 01:57:37.000000000 -0500
++++ gui/simple-greeter/Makefile.in 2008-02-13 01:57:44.000000000 -0500
+@@ -445,7 +445,7 @@ INCLUDES = \
+ -DGDMCONFDIR=\"$(gdmconfdir)\" \
+ -DDATADIR=\""$(datadir)"\" \
+ -DSYSCONFDIR=\""$(sysconfdir)"\" \
+- -DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \
++ -DLIBLOCALEDIR=\""/usr/share/locale"\" \
+ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+ -DGLADEDIR=\""$(pkgdatadir)"\" \
+ -DLIBEXECDIR=\""$(libexecdir)"\" \
diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c
new file mode 100644
index 000000000..83a029a19
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c
@@ -0,0 +1,27 @@
+--- gui/simple-greeter/gdm-languages.c.orig 2009-07-20 03:09:09.000000000 +0200
++++ gui/simple-greeter/gdm-languages.c 2009-07-20 10:02:41.000000000 +0200
+@@ -168,13 +168,13 @@ gdm_parse_language_name (const char *nam
+ *codesetp = NULL;
+ }
+
+- if (*codesetp != NULL) {
++/* if (*codesetp != NULL) {
+ char *codeset;
+
+ codeset = normalize_codeset (*codesetp);
+ g_free (*codesetp);
+ *codesetp = codeset;
+- }
++ }*/
+ }
+
+ if (modifierp != NULL) {
+@@ -352,7 +352,7 @@ add_locale (const char *language_name)
+ if (language_name_is_utf8 (language_name)) {
+ name = g_strdup (language_name);
+ } else {
+- name = g_strdup_printf ("%s.utf8", language_name);
++ name = g_strdup_printf ("%s.UTF-8", language_name);
+
+ if (!language_name_is_utf8 (name)) {
+ g_free (name);
diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c
new file mode 100644
index 000000000..059d72cf4
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c
@@ -0,0 +1,10 @@
+--- gui/simple-greeter/gdm-remote-login-window.c.orig 2008-03-24 11:27:13.000000000 +0100
++++ gui/simple-greeter/gdm-remote-login-window.c 2008-03-24 11:27:31.000000000 +0100
+@@ -25,6 +25,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
++#include <sys/signal.h>
+ #include <errno.h>
+
+ #include <glib.h>
diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c
new file mode 100644
index 000000000..b0b8ed37d
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c
@@ -0,0 +1,64 @@
+--- gui/simple-greeter/gdm-user-manager.c.orig 2009-12-21 17:36:30.000000000 +0100
++++ gui/simple-greeter/gdm-user-manager.c 2009-12-27 22:34:26.000000000 +0100
+@@ -66,6 +66,8 @@
+
+ #ifdef __sun
+ #define DEFAULT_MINIMAL_UID 100
++#elif defined(__FreeBSD__)
++#define DEFAULT_MINIMAL_UID 1000
+ #else
+ #define DEFAULT_MINIMAL_UID 500
+ #endif
+@@ -1414,17 +1416,24 @@ reload_passwd (GdmUserManager *manager)
+ GSList *new_users;
+ GSList *list;
+ GSList *dup;
++#ifndef __FreeBSD__
+ FILE *fp;
++#endif
+
+ old_users = NULL;
+ new_users = NULL;
+
++#ifdef __FreeBSD__
++ setpwent ();
++#else
++
+ errno = 0;
+ fp = fopen (PATH_PASSWD, "r");
+ if (fp == NULL) {
+ g_warning ("Unable to open %s: %s", PATH_PASSWD, g_strerror (errno));
+ goto out;
+ }
++#endif
+
+ g_hash_table_foreach (manager->priv->users, listify_hash_values_hfunc, &old_users);
+ g_slist_foreach (old_users, (GFunc) g_object_ref, NULL);
+@@ -1443,9 +1452,15 @@ reload_passwd (GdmUserManager *manager)
+ } else {
+ g_debug ("GdmUserManager: include_all is TRUE");
+
++#ifdef __FreeBSD__
++ for (pwent = getpwent ();
++ pwent != NULL;
++ pwent = getpwent()) {
++#else
+ for (pwent = fgetpwent (fp);
+ pwent != NULL;
+ pwent = fgetpwent (fp)) {
++#endif
+ GdmUser *user;
+
+ user = NULL;
+@@ -1521,7 +1536,11 @@ reload_passwd (GdmUserManager *manager)
+ out:
+ /* Cleanup */
+
++#ifdef __FreeBSD__
++ endpwent ();
++#else
+ fclose (fp);
++#endif
+
+ g_slist_foreach (new_users, (GFunc) g_object_thaw_notify, NULL);
+ g_slist_foreach (new_users, (GFunc) g_object_unref, NULL);
diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-user.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-user.c
new file mode 100644
index 000000000..e5fb649c6
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-user.c
@@ -0,0 +1,34 @@
+--- gui/simple-greeter/gdm-user.c.orig 2009-12-16 17:52:36.000000000 -0500
++++ gui/simple-greeter/gdm-user.c 2009-12-18 21:43:38.000000000 -0500
+@@ -425,6 +425,7 @@ _gdm_user_update (GdmUser *u
+ /* Display Name */
+ if (pwent->pw_gecos && pwent->pw_gecos[0] != '\0') {
+ gchar *first_comma = NULL;
++ gchar *ampersand;
+ gchar *valid_utf8_name = NULL;
+
+ if (g_utf8_validate (pwent->pw_gecos, -1, NULL)) {
+@@ -449,6 +450,23 @@ _gdm_user_update (GdmUser *u
+ g_free (real_name);
+ real_name = NULL;
+ }
++
++ while (real_name != NULL && (ampersand = strchr (real_name, '&')) != NULL) {
++ gchar *temp_real_name1;
++ gchar *temp_real_name2;
++ gchar *temp_name;
++
++ temp_real_name1 = g_strndup (real_name,
++ (ampersand - real_name));
++ temp_real_name2 = g_strdup (ampersand + 1);
++ temp_name = g_strdup (pwent->pw_name);
++ temp_name[0] = toupper (temp_name[0]);
++ g_free (real_name);
++ real_name = g_strdup_printf ("%s%s%s", temp_real_name1, temp_name, temp_real_name2);
++ g_free (temp_real_name1);
++ g_free (temp_real_name2);
++ g_free (temp_name);
++ }
+ } else {
+ real_name = NULL;
+ }
diff --git a/x11/gdm/files/patch-hal-keyboard b/x11/gdm/files/patch-hal-keyboard
new file mode 100644
index 000000000..06e21e892
--- /dev/null
+++ b/x11/gdm/files/patch-hal-keyboard
@@ -0,0 +1,123 @@
+--- daemon/gdm-session-direct.c.orig 2010-01-02 20:41:23.000000000 +0100
++++ daemon/gdm-session-direct.c 2010-01-02 20:41:31.000000000 +0100
+@@ -45,6 +45,8 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+
++#include <libhal.h>
++
+ #include "gdm-session-direct.h"
+ #include "gdm-session.h"
+ #include "gdm-session-private.h"
+@@ -595,14 +597,85 @@ get_default_language_name (GdmSessionDir
+ return setlocale (LC_MESSAGES, NULL);
+ }
+
++static char *
++get_system_default_layout (GdmSessionDirect *session)
++{
++ DBusConnection *connection;
++ LibHalContext *ctx;
++ char **devices;
++ int n_devices;
++ char *layout;
++ char *variant;
++ char *result;
++
++ result = NULL;
++
++ connection = dbus_g_connection_get_connection (session->priv->connection);
++ ctx = libhal_ctx_new ();
++ libhal_ctx_set_dbus_connection (ctx, connection);
++
++ if (!libhal_ctx_init (ctx, NULL)) {
++ goto out;
++ }
++
++ devices = libhal_find_device_by_capability (ctx,
++ "input.keyboard",
++ &n_devices,
++ NULL);
++ if (n_devices > 0) {
++ layout = libhal_device_get_property_string (ctx,
++ devices[0],
++ "input.x11_options.XkbLayout",
++ NULL);
++ if (!layout) {
++ layout = libhal_device_get_property_string (ctx,
++ devices[0],
++ "input.xkb.layout",
++ NULL);
++ }
++
++ variant = libhal_device_get_property_string (ctx,
++ devices[0],
++ "input.x11_options.XkbVariant",
++ NULL);
++
++ if (!variant) {
++ variant = libhal_device_get_property_string (ctx,
++ devices[0],
++ "input.xkb.variant",
++ NULL);
++ }
++
++ if(layout && variant)
++ result = g_strdup_printf("%s\t%s", layout, variant);
++ else
++ result = g_strdup (layout);
++
++ libhal_free_string (layout);
++ libhal_free_string (variant);
++ }
++
++ libhal_free_string_array (devices);
++
++ libhal_ctx_shutdown (ctx, NULL);
++ libhal_ctx_free (ctx);
++
++out:
++ if (!result) {
++ result = g_strdup ("us");
++ }
++
++ return result;
++}
++
+ static const char *
+ get_default_layout_name (GdmSessionDirect *session)
+ {
+- if (session->priv->saved_layout != NULL) {
+- return session->priv->saved_layout;
++ if (!session->priv->saved_layout) {
++ session->priv->saved_layout = get_system_default_layout (session);
+ }
+
+- return "us";
++ return session->priv->saved_layout;
+ }
+
+ static char *
+@@ -1933,8 +2006,8 @@ setup_session_environment (GdmSessionDir
+ "GDM_LANG",
+ get_language_name (session));
+
+- if (strcmp (get_layout_name (session),
+- get_default_layout_name (session)) == 0) {
++ if (g_strcmp0 (get_layout_name (session),
++ get_default_layout_name (session)) != 0) {
+ gdm_session_direct_set_environment_variable (session,
+ "GDM_KEYBOARD_LAYOUT",
+ get_layout_name (session));
+--- daemon/gdm-session-settings.c.orig 2010-01-02 20:40:37.000000000 +0100
++++ daemon/gdm-session-settings.c 2010-01-02 20:40:42.000000000 +0100
+@@ -149,8 +149,7 @@ gdm_session_settings_set_layout_name (Gd
+ {
+ g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings));
+
+- if (settings->priv->layout_name == NULL ||
+- strcmp (settings->priv->layout_name, layout_name) != 0) {
++ if (g_strcmp0 (settings->priv->layout_name, layout_name) != 0) {
+ settings->priv->layout_name = g_strdup (layout_name);
+ g_object_notify (G_OBJECT (settings), "layout-name");
+ }
diff --git a/x11/gdm/pkg-descr b/x11/gdm/pkg-descr
new file mode 100644
index 000000000..1699cf5b7
--- /dev/null
+++ b/x11/gdm/pkg-descr
@@ -0,0 +1,4 @@
+The GNOME 2.0 version of the xdm display manager. It supports user
+icons, multiple sessions, and clean system shutdowns.
+
+WWW: http://www.gnome.org/projects/gdm/
diff --git a/x11/gdm/pkg-install b/x11/gdm/pkg-install
new file mode 100644
index 000000000..97ae6b483
--- /dev/null
+++ b/x11/gdm/pkg-install
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+case $2 in
+POST-INSTALL)
+ USER=gdm
+ GROUP=${USER}
+ CHMOD=/bin/chmod
+ CHOWN=/usr/sbin/chown
+ MKDIR=/bin/mkdir
+
+ ${MKDIR} -p /var/gdm
+ ${MKDIR} -p /var/log/gdm
+ ${CHMOD} 0755 /var/log/gdm
+ ${CHOWN} root:wheel /var/log/gdm
+ ${CHOWN} -R root:${GROUP} /var/gdm
+ ${CHMOD} 1770 /var/gdm
+ ${MKDIR} -p /var/run/gdm
+ ${CHOWN} root:${GROUP} /var/run/gdm
+ ${CHMOD} 1777 /var/run/gdm
+ ${MKDIR} -p /var/cache/gdm
+ ${CHMOD} 1755 /var/cache/gdm
+ ${CHOWN} root:${GROUP} /var/cache/gdm
+ ${CHOWN} root:wheel ${PKG_PREFIX}/share/gdm
+ ${CHMOD} 0755 ${PKG_PREFIX}/share/gdm
+ ${MKDIR} -p ${PKG_PREFIX}/etc/gdm/home
+ ${CHOWN} root:${GROUP} ${PKG_PREFIX}/etc/gdm/home
+ ${CHMOD} 1770 ${PKG_PREFIX}/etc/gdm/home
+ install -o root -g wheel -m 444 ${PKG_PREFIX}/share/gdm/gconf.path ${PKG_PREFIX}/etc/gdm/home/.gconf.path
+ gconftool-2 --direct --config-source=xml:merged:${PKG_PREFIX}/etc/gdm/home/.gconf.mandatory --recursive-unset /
+ gconftool-2 --direct --config-source=xml:merged:${PKG_PREFIX}/etc/gdm/home/.gconf.mandatory --load ${PKG_PREFIX}/share/gdm/session-setup.entries
+ ${CHOWN} -R root:gdm ${PKG_PREFIX}/etc/gdm/home/.gconf.mandatory
+ ${CHMOD} 1750 ${PKG_PREFIX}/etc/gdm/home/.gconf.mandatory
+ ${CHMOD} 1640 ${PKG_PREFIX}/etc/gdm/home/.gconf.mandatory/*.xml
+
+ ${MKDIR} -p ${PKG_PREFIX}/etc/gdm/Sessions
+ ${MKDIR} -p ${PKG_PREFIX}/etc/dm/Sessions
+ exit 0
+ ;;
+esac
diff --git a/x11/gdm/pkg-message b/x11/gdm/pkg-message
new file mode 100644
index 000000000..038101552
--- /dev/null
+++ b/x11/gdm/pkg-message
@@ -0,0 +1,6 @@
+GDM is installed.
+
+Do _NOT_ use /etc/ttys to start gdm at boot time. This will result in gdm
+hanging or restarting constantly. Instead, add gdm_enable="YES" to
+/etc/rc.conf. GDM will be started automatic on the next reboot.
+
diff --git a/x11/gdm/pkg-plist b/x11/gdm/pkg-plist
new file mode 100644
index 000000000..f338e6928
--- /dev/null
+++ b/x11/gdm/pkg-plist
@@ -0,0 +1,294 @@
+bin/gdm-screenshot
+bin/gdmflexiserver
+etc/dbus-1/system.d/gdm.conf
+etc/gdm/Init/Default
+etc/gdm/PostLogin/Default.sample
+etc/gdm/PostSession/Default
+etc/gdm/PreSession/Default
+etc/gdm/Xsession
+@unexec if cmp -s %D/etc/gdm/custom.conf %D/etc/gdm/custom.conf.default; then rm -f %D/etc/gdm/custom.conf; fi
+etc/gdm/custom.conf.default
+@exec [ -f %B/custom.conf ] || cp %B/%f %B/custom.conf
+etc/gdm/gdm.schemas
+etc/pam.d/gdm
+libdata/bonobo/servers/GNOME_FastUserSwitchApplet.server
+libexec/gdm-crash-logger
+libexec/gdm-factory-slave
+libexec/gdm-host-chooser
+libexec/gdm-product-slave
+libexec/gdm-session-worker
+libexec/gdm-simple-chooser
+libexec/gdm-simple-greeter
+libexec/gdm-simple-slave
+libexec/gdm-user-switch-applet
+libexec/gdm-xdmcp-chooser-slave
+sbin/gdm
+sbin/gdm-binary
+sbin/gdm-restart
+sbin/gdm-safe-restart
+sbin/gdm-stop
+%%DATADIR%%/autostart/LoginWindow/at-spi-registryd-wrapper.desktop
+%%DATADIR%%/autostart/LoginWindow/gdm-simple-greeter.desktop
+%%DATADIR%%/autostart/LoginWindow/gnome-mag.desktop
+%%DATADIR%%/autostart/LoginWindow/gnome-power-manager.desktop
+%%DATADIR%%/autostart/LoginWindow/gnome-settings-daemon.desktop
+%%DATADIR%%/autostart/LoginWindow/gok.desktop
+%%DATADIR%%/autostart/LoginWindow/metacity.desktop
+%%DATADIR%%/autostart/LoginWindow/orca-screen-reader.desktop
+%%DATADIR%%/autostart/LoginWindow/polkit-gnome-authentication-agent-1.desktop
+%%DATADIR%%/gconf.path
+%%DATADIR%%/gdb-cmd
+%%DATADIR%%/gdm-greeter-login-window.glade
+%%DATADIR%%/session-setup.entries
+share/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml
+share/gnome/help/gdm/C/gdm.xml
+share/gnome/help/gdm/C/legal.xml
+share/gnome/help/gdm/de/gdm.xml
+share/gnome/help/gdm/el/gdm.xml
+share/gnome/help/gdm/en_GB/gdm.xml
+share/gnome/help/gdm/es/gdm.xml
+share/gnome/help/gdm/fr/gdm.xml
+share/gnome/help/gdm/it/gdm.xml
+share/gnome/help/gdm/ko/gdm.xml
+share/gnome/help/gdm/oc/gdm.xml
+share/gnome/help/gdm/ru/gdm.xml
+share/gnome/help/gdm/sv/gdm.xml
+share/gnome/help/gdm/uk/gdm.xml
+share/gnome/help/gdm/zh_CN/gdm.xml
+share/icons/hicolor/16x16/apps/gdm-xnest.png
+share/icons/hicolor/32x32/apps/gdm-setup.png
+share/icons/hicolor/32x32/apps/gdm-xnest.png
+share/locale/af/LC_MESSAGES/gdm.mo
+share/locale/am/LC_MESSAGES/gdm.mo
+share/locale/ar/LC_MESSAGES/gdm.mo
+share/locale/as/LC_MESSAGES/gdm.mo
+share/locale/ast/LC_MESSAGES/gdm.mo
+share/locale/az/LC_MESSAGES/gdm.mo
+share/locale/be/LC_MESSAGES/gdm.mo
+share/locale/be@latin/LC_MESSAGES/gdm.mo
+share/locale/bg/LC_MESSAGES/gdm.mo
+share/locale/bn/LC_MESSAGES/gdm.mo
+share/locale/bn_IN/LC_MESSAGES/gdm.mo
+share/locale/br/LC_MESSAGES/gdm.mo
+share/locale/bs/LC_MESSAGES/gdm.mo
+share/locale/ca/LC_MESSAGES/gdm.mo
+share/locale/ca@valencia/LC_MESSAGES/gdm.mo
+share/locale/crh/LC_MESSAGES/gdm.mo
+share/locale/cs/LC_MESSAGES/gdm.mo
+share/locale/cy/LC_MESSAGES/gdm.mo
+share/locale/da/LC_MESSAGES/gdm.mo
+share/locale/de/LC_MESSAGES/gdm.mo
+share/locale/dz/LC_MESSAGES/gdm.mo
+share/locale/el/LC_MESSAGES/gdm.mo
+share/locale/en_CA/LC_MESSAGES/gdm.mo
+share/locale/en_GB/LC_MESSAGES/gdm.mo
+share/locale/en@shaw/LC_MESSAGES/gdm.mo
+share/locale/eo/LC_MESSAGES/gdm.mo
+share/locale/es/LC_MESSAGES/gdm.mo
+share/locale/et/LC_MESSAGES/gdm.mo
+share/locale/eu/LC_MESSAGES/gdm.mo
+share/locale/fa/LC_MESSAGES/gdm.mo
+share/locale/fi/LC_MESSAGES/gdm.mo
+share/locale/fr/LC_MESSAGES/gdm.mo
+share/locale/fur/LC_MESSAGES/gdm.mo
+share/locale/ga/LC_MESSAGES/gdm.mo
+share/locale/gl/LC_MESSAGES/gdm.mo
+share/locale/gu/LC_MESSAGES/gdm.mo
+share/locale/he/LC_MESSAGES/gdm.mo
+share/locale/hi/LC_MESSAGES/gdm.mo
+share/locale/hr/LC_MESSAGES/gdm.mo
+share/locale/hu/LC_MESSAGES/gdm.mo
+share/locale/hy/LC_MESSAGES/gdm.mo
+share/locale/id/LC_MESSAGES/gdm.mo
+share/locale/is/LC_MESSAGES/gdm.mo
+share/locale/it/LC_MESSAGES/gdm.mo
+share/locale/ja/LC_MESSAGES/gdm.mo
+share/locale/ka/LC_MESSAGES/gdm.mo
+share/locale/kk/LC_MESSAGES/gdm.mo
+share/locale/kn/LC_MESSAGES/gdm.mo
+share/locale/ko/LC_MESSAGES/gdm.mo
+share/locale/ku/LC_MESSAGES/gdm.mo
+share/locale/lt/LC_MESSAGES/gdm.mo
+share/locale/lv/LC_MESSAGES/gdm.mo
+share/locale/mai/LC_MESSAGES/gdm.mo
+share/locale/mg/LC_MESSAGES/gdm.mo
+share/locale/mi/LC_MESSAGES/gdm.mo
+share/locale/mk/LC_MESSAGES/gdm.mo
+share/locale/ml/LC_MESSAGES/gdm.mo
+share/locale/mn/LC_MESSAGES/gdm.mo
+share/locale/mr/LC_MESSAGES/gdm.mo
+share/locale/ms/LC_MESSAGES/gdm.mo
+share/locale/nb/LC_MESSAGES/gdm.mo
+share/locale/nds/LC_MESSAGES/gdm.mo
+share/locale/ne/LC_MESSAGES/gdm.mo
+share/locale/nl/LC_MESSAGES/gdm.mo
+share/locale/nn/LC_MESSAGES/gdm.mo
+share/locale/nso/LC_MESSAGES/gdm.mo
+share/locale/oc/LC_MESSAGES/gdm.mo
+share/locale/or/LC_MESSAGES/gdm.mo
+share/locale/pa/LC_MESSAGES/gdm.mo
+share/locale/pl/LC_MESSAGES/gdm.mo
+share/locale/ps/LC_MESSAGES/gdm.mo
+share/locale/pt/LC_MESSAGES/gdm.mo
+share/locale/pt_BR/LC_MESSAGES/gdm.mo
+share/locale/ro/LC_MESSAGES/gdm.mo
+share/locale/ru/LC_MESSAGES/gdm.mo
+share/locale/rw/LC_MESSAGES/gdm.mo
+share/locale/si/LC_MESSAGES/gdm.mo
+share/locale/sk/LC_MESSAGES/gdm.mo
+share/locale/sl/LC_MESSAGES/gdm.mo
+share/locale/sq/LC_MESSAGES/gdm.mo
+share/locale/sr/LC_MESSAGES/gdm.mo
+share/locale/sr@latin/LC_MESSAGES/gdm.mo
+share/locale/sv/LC_MESSAGES/gdm.mo
+share/locale/ta/LC_MESSAGES/gdm.mo
+share/locale/te/LC_MESSAGES/gdm.mo
+share/locale/th/LC_MESSAGES/gdm.mo
+share/locale/tr/LC_MESSAGES/gdm.mo
+share/locale/uk/LC_MESSAGES/gdm.mo
+share/locale/uz/LC_MESSAGES/gdm.mo
+share/locale/uz@cyrillic/LC_MESSAGES/gdm.mo
+share/locale/vi/LC_MESSAGES/gdm.mo
+share/locale/wa/LC_MESSAGES/gdm.mo
+share/locale/xh/LC_MESSAGES/gdm.mo
+share/locale/zh_CN/LC_MESSAGES/gdm.mo
+share/locale/zh_HK/LC_MESSAGES/gdm.mo
+share/locale/zh_TW/LC_MESSAGES/gdm.mo
+share/locale/zu/LC_MESSAGES/gdm.mo
+share/omf/gdm/gdm-C.omf
+share/omf/gdm/gdm-de.omf
+share/omf/gdm/gdm-el.omf
+share/omf/gdm/gdm-en_GB.omf
+share/omf/gdm/gdm-es.omf
+share/omf/gdm/gdm-fr.omf
+share/omf/gdm/gdm-it.omf
+share/omf/gdm/gdm-ko.omf
+share/omf/gdm/gdm-oc.omf
+share/omf/gdm/gdm-ru.omf
+share/omf/gdm/gdm-sv.omf
+share/omf/gdm/gdm-uk.omf
+share/omf/gdm/gdm-zh_CN.omf
+share/pixmaps/faces/astronaut.jpg
+share/pixmaps/faces/baseball.png
+share/pixmaps/faces/butterfly.png
+share/pixmaps/faces/cat-eye.jpg
+share/pixmaps/faces/chess.jpg
+share/pixmaps/faces/coffee.jpg
+share/pixmaps/faces/dice.jpg
+share/pixmaps/faces/energy-arc.jpg
+share/pixmaps/faces/fish.jpg
+share/pixmaps/faces/flake.jpg
+share/pixmaps/faces/flower.jpg
+share/pixmaps/faces/grapes.jpg
+share/pixmaps/faces/guitar.jpg
+share/pixmaps/faces/launch.jpg
+share/pixmaps/faces/leaf.jpg
+share/pixmaps/faces/lightning.jpg
+share/pixmaps/faces/penguin.jpg
+share/pixmaps/faces/puppy.jpg
+share/pixmaps/faces/sky.jpg
+share/pixmaps/faces/soccerball.png
+share/pixmaps/faces/sunflower.jpg
+share/pixmaps/faces/sunset.jpg
+share/pixmaps/faces/tennis-ball.png
+share/pixmaps/faces/yellow-rose.jpg
+share/pixmaps/gdm-foot-logo.png
+share/pixmaps/gdm-setup.png
+share/pixmaps/gdm-xnest.png
+share/pixmaps/gdm.png
+share/pixmaps/nobody.png
+share/pixmaps/nohost.png
+@exec mkdir -p %D/share/xsessions
+@dirrmtry share/xsessions
+@dirrm share/pixmaps/faces
+@dirrm share/omf/gdm
+@dirrm share/gnome/help/gdm/zh_CN
+@dirrm share/gnome/help/gdm/uk
+@dirrm share/gnome/help/gdm/sv
+@dirrm share/gnome/help/gdm/ru
+@dirrm share/gnome/help/gdm/oc
+@dirrm share/gnome/help/gdm/ko
+@dirrm share/gnome/help/gdm/it
+@dirrm share/gnome/help/gdm/fr
+@dirrm share/gnome/help/gdm/es
+@dirrm share/gnome/help/gdm/en_GB
+@dirrm share/gnome/help/gdm/el
+@dirrm share/gnome/help/gdm/de
+@dirrm share/gnome/help/gdm/C
+@dirrm share/gnome/help/gdm
+@dirrm %%DATADIR%%/autostart/LoginWindow
+@dirrm %%DATADIR%%/autostart
+@dirrm %%DATADIR%%
+@dirrm etc/gdm/Sessions
+@dirrm etc/gdm/PreSession
+@dirrm etc/gdm/PostSession
+@dirrm etc/gdm/PostLogin
+@dirrm etc/gdm/Init
+@unexec rm -rf %D/etc/gdm/home/.gconf*
+@dirrmtry etc/gdm/home
+@dirrmtry etc/gdm
+@dirrmtry etc/dm/Sessions
+@dirrmtry etc/dm
+@dirrmtry share/log/gdm
+@dirrmtry share/log
+@unexec /bin/rm -rf /var/gdm 2>/dev/null || /usr/bin/true
+@unexec /bin/rm -rf /var/log/gdm 2>/dev/null || /usr/bin/true
+@unexec /bin/rm -rf /var/run/gdm 2>/dev/null || /usr/bin/true
+@unexec rmdir /var/cache/gdm 2>/dev/null || /usr/bin/true
+@unexec rmdir /var/cache 2>/dev/null || /usr/bin/true
+@dirrmtry share/locale/zu/LC_MESSAGES
+@dirrmtry share/locale/zu
+@dirrmtry share/locale/zh_HK/LC_MESSAGES
+@dirrmtry share/locale/zh_HK
+@dirrmtry share/locale/xh/LC_MESSAGES
+@dirrmtry share/locale/xh
+@dirrmtry share/locale/uz@cyrillic/LC_MESSAGES
+@dirrmtry share/locale/uz@cyrillic
+@dirrmtry share/locale/te/LC_MESSAGES
+@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
+@dirrmtry share/locale/si/LC_MESSAGES
+@dirrmtry share/locale/si
+@dirrmtry share/locale/rw/LC_MESSAGES
+@dirrmtry share/locale/rw
+@dirrmtry share/locale/ps/LC_MESSAGES
+@dirrmtry share/locale/ps
+@dirrmtry share/locale/oc/LC_MESSAGES
+@dirrmtry share/locale/oc
+@dirrmtry share/locale/nso/LC_MESSAGES
+@dirrmtry share/locale/nso
+@dirrmtry share/locale/nds/LC_MESSAGES
+@dirrmtry share/locale/nds
+@dirrmtry share/locale/mr/LC_MESSAGES
+@dirrmtry share/locale/mr
+@dirrmtry share/locale/mi/LC_MESSAGES
+@dirrmtry share/locale/mi
+@dirrmtry share/locale/mg/LC_MESSAGES
+@dirrmtry share/locale/mg
+@dirrmtry share/locale/mai/LC_MESSAGES
+@dirrmtry share/locale/mai
+@dirrmtry share/locale/ku/LC_MESSAGES
+@dirrmtry share/locale/ku
+@dirrmtry share/locale/kk/LC_MESSAGES
+@dirrmtry share/locale/kk
+@dirrmtry share/locale/hy/LC_MESSAGES
+@dirrmtry share/locale/hy
+@dirrmtry share/locale/fur/LC_MESSAGES
+@dirrmtry share/locale/fur
+@dirrmtry share/locale/en@shaw/LC_MESSAGES
+@dirrmtry share/locale/en@shaw
+@dirrmtry share/locale/dz/LC_MESSAGES
+@dirrmtry share/locale/dz
+@dirrmtry share/locale/crh/LC_MESSAGES
+@dirrmtry share/locale/crh
+@dirrmtry share/locale/ca@valencia/LC_MESSAGES
+@dirrmtry share/locale/ca@valencia
+@dirrmtry share/locale/bn_IN/LC_MESSAGES
+@dirrmtry share/locale/bn_IN
+@dirrmtry share/locale/be@latin/LC_MESSAGES
+@dirrmtry share/locale/be@latin
+@dirrmtry share/locale/ast/LC_MESSAGES
+@dirrmtry share/locale/ast
+@dirrmtry share/locale/as/LC_MESSAGES
+@dirrmtry share/locale/as