summaryrefslogtreecommitdiffstats
path: root/x11/gdm
diff options
context:
space:
mode:
authorkwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059>2008-03-24 22:15:12 +0800
committerkwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059>2008-03-24 22:15:12 +0800
commit6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2 (patch)
tree09acdfa6f321f4d0e0c3005b95451e0a6b521adb /x11/gdm
parentc92e393a2f49fb071ec395cdc547827de00b20f1 (diff)
downloadmarcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.tar
marcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.tar.gz
marcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.tar.bz2
marcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.tar.lz
marcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.tar.xz
marcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.tar.zst
marcuscom-ports-6bb1fb05c4e834bb2057264f6b14a9e5adcfe8e2.zip
Add gdm 2.21.8 from experimental.
Update to 2.21.9. Remove USE_XLIB, USE_XORG already defined (not test very well). git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@10824 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'x11/gdm')
-rw-r--r--x11/gdm/Makefile90
-rw-r--r--x11/gdm/distinfo3
-rw-r--r--x11/gdm/files/gdm.in46
-rw-r--r--x11/gdm/files/patch-common_gdm-address.c29
-rw-r--r--x11/gdm/files/patch-common_gdm-common.c13
-rw-r--r--x11/gdm/files/patch-common_gdm-settings-keys.h10
-rw-r--r--x11/gdm/files/patch-common_gdm-signal-handler.c35
-rw-r--r--x11/gdm/files/patch-config.h.in12
-rw-r--r--x11/gdm/files/patch-daemon-gdm-server.c64
-rw-r--r--x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c10
-rw-r--r--x11/gdm/files/patch-daemon_Makefile.in10
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session-worker.c11
-rw-r--r--x11/gdm/files/patch-data_gdm.schemas.in.in14
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_Makefile.in11
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c91
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c10
-rw-r--r--x11/gdm/pkg-descr4
-rw-r--r--x11/gdm/pkg-install59
-rw-r--r--x11/gdm/pkg-message6
-rw-r--r--x11/gdm/pkg-plist200
20 files changed, 728 insertions, 0 deletions
diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile
new file mode 100644
index 000000000..32139bd62
--- /dev/null
+++ b/x11/gdm/Makefile
@@ -0,0 +1,90 @@
+# New ports collection makefile for: gdm2
+# Date created: 20 May 2002
+# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom$
+#
+
+PORTNAME= gdm
+PORTVERSION= 2.21.9
+CATEGORIES= x11 gnome
+MASTER_SITES= ${MASTER_SITE_GNOME}
+MASTER_SITE_SUBDIR= sources/${PORTNAME:S/2$//}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
+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
+RUN_DEPENDS= zenity:${PORTSDIR}/x11/zenity \
+ ${LOCALBASE}/libexec/gnome-settings-daemon:${PORTSDIR}/sysutils/gnome-settings-daemon
+
+CONFLICTS= fast-user-switch-applet-*
+
+USE_BZIP2= yes
+USE_GETTEXT= yes
+USE_LDCONFIG= yes
+USE_XORG= dmx dmxproto
+INSTALLS_OMF= yes
+INSTALLS_ICONS= yes
+USE_RC_SUBR= gdm
+USE_GNOME_SUBR= yes
+USE_GMAKE= yes
+USE_GNOME= gnomehack intlhack gnomehier libgnomeui librsvg2 gnomedocutils \
+ gnomeprefix gnomepanel
+GCONF_SCHEMAS= gdm-simple-greeter.schemas
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib" \
+ GTKDOC="false"
+
+GDMDIR?= ${PREFIX}/etc/gdm
+PKGMESSAGE= ${WRKDIR}/pkg-message
+
+GNOME_LOCALSTATEDIR= /var
+
+OPTIONS= IPV6 "Enable IPv6 support" on
+
+.include <bsd.port.pre.mk>
+
+.if exists(/usr/include/security/pam_misc.h)
+PLIST_SUB+= PAM_MISC=""
+.else
+PLIST_SUB+= PAM_MISC="@comment "
+.endif
+
+.if !defined(WITHOUT_IPV6)
+CONFIGURE_ARGS+= --enable-ipv6
+.else
+CONFIGURE_ARGS+= --disable-ipv6
+.endif
+
+post-patch:
+.if ( ${OSVERSION} > 600000 && ${OSVERSION} < 600006 ) || \
+ ( ${OSVERSION} < 503101 )
+.for po in zh_CN.po
+ @${REINPLACE_CMD} -e 's|%-|%|g' ${WRKSRC}/po/${po}
+.endfor
+.endif
+ @${REINPLACE_CMD} -e 's|root:root|root:wheel|g' \
+ ${WRKSRC}/data/Makefile.in
+ @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
+ ${WRKSRC}/daemon/gdm-session-worker.c
+ @${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
+ ${WRKSRC}/configure ${WRKSRC}/daemon/*.c ${WRKSRC}/po/*.po
+
+post-install:
+.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
+ @${MKDIR} ${PREFIX}/etc/gdm/Sessions
+ @${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..1c38110ac
--- /dev/null
+++ b/x11/gdm/distinfo
@@ -0,0 +1,3 @@
+MD5 (gnome2/gdm-2.21.9.tar.bz2) = b20aa0790405f540df9a2ec9e0d6eb03
+SHA256 (gnome2/gdm-2.21.9.tar.bz2) = fef13bbcaba1e8acfb43fc75158acd9aed9089dbee023bb4f784feed9ad7ad2c
+SIZE (gnome2/gdm-2.21.9.tar.bz2) = 2203733
diff --git a/x11/gdm/files/gdm.in b/x11/gdm/files/gdm.in
new file mode 100644
index 000000000..f44669946
--- /dev/null
+++ b/x11/gdm/files/gdm.in
@@ -0,0 +1,46 @@
+#!/bin/sh
+# $FreeBSD$
+# $MCom: ports-experimental/x11/gdm/files/gdm.in,v 1.1 2008/02/29 22:20:47 mezz Exp $
+
+# PROVIDE: gdm
+# REQUIRE: LOGIN cleanvar moused syscons dbus
+#
+# 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}}
+
+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}."
+
+ ( 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
+ ${command} ) &
+}
+
+load_rc_config ${name}
+run_rc_command "$1"
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..994bdf404
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-address.c
@@ -0,0 +1,29 @@
+--- common/gdm-address.c.orig 2008-02-03 11:52:26.000000000 -0500
++++ common/gdm-address.c 2008-02-13 01:23:07.000000000 -0500
+@@ -25,8 +25,9 @@
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+-#include <stropts.h>
+ #include <string.h>
++#include <sys/types.h>
++#include <sys/param.h>
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+@@ -35,7 +36,6 @@
+ #endif
+ #include <netdb.h>
+ #include <sys/ioctl.h>
+-#include <net/if.h>
+
+ #ifndef G_OS_WIN32
+ #include <sys/socket.h>
+@@ -46,6 +46,7 @@
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
+ #endif
++#include <net/if.h>
+
+ #include <glib-object.h>
+
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-common_gdm-settings-keys.h b/x11/gdm/files/patch-common_gdm-settings-keys.h
new file mode 100644
index 000000000..06ebc0800
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-settings-keys.h
@@ -0,0 +1,10 @@
+--- common/gdm-settings-keys.h.orig 2008-02-20 16:27:34.000000000 -0500
++++ common/gdm-settings-keys.h 2008-02-25 22:23:35.000000000 -0500
+@@ -30,6 +30,7 @@ G_BEGIN_DECLS
+ #define GDM_KEY_TIMED_LOGIN_ENABLE "daemon/TimedLoginEnable"
+ #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin"
+ #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay"
++#define GDM_KEY_VT "daemon/VT"
+
+ #define GDM_KEY_XDMCP_ENABLE "xdmcp/Enable"
+ #define GDM_KEY_MAX_PENDING "xdmcp/MaxPending"
diff --git a/x11/gdm/files/patch-common_gdm-signal-handler.c b/x11/gdm/files/patch-common_gdm-signal-handler.c
new file mode 100644
index 000000000..d2a71ddb2
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-signal-handler.c
@@ -0,0 +1,35 @@
+--- common/gdm-signal-handler.c.orig 2007-10-30 11:41:48.000000000 -0400
++++ common/gdm-signal-handler.c 2007-11-02 15:07:28.000000000 -0400
+@@ -27,7 +27,6 @@
+ #include <unistd.h>
+ #include <string.h>
+ #include <signal.h>
+-#include <execinfo.h>
+ #include <syslog.h>
+ #include <sys/wait.h>
+ #include <sys/stat.h>
+@@ -151,6 +150,7 @@ signal_io_watch (GIOChannel *ioc,
+ static void
+ fallback_get_backtrace (void)
+ {
++/*
+ void * frames[64];
+ size_t size;
+ char ** strings;
+@@ -167,13 +167,14 @@ fallback_get_backtrace (void)
+ } else {
+ g_warning ("GDM crashed, but symbols couldn't be retrieved.");
+ }
++*/
+ }
+
+
+ static gboolean
+ crashlogger_get_backtrace (void)
+-{
+- gboolean success = FALSE;
++{
++ gboolean success = FALSE;
+ int pid;
+
+ pid = fork();
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-daemon-gdm-server.c b/x11/gdm/files/patch-daemon-gdm-server.c
new file mode 100644
index 000000000..e57350568
--- /dev/null
+++ b/x11/gdm/files/patch-daemon-gdm-server.c
@@ -0,0 +1,64 @@
+--- daemon/gdm-server.c.orig 2007-11-19 22:53:12.000000000 +0100
++++ daemon/gdm-server.c 2007-12-25 11:56:07.000000000 +0100
+@@ -44,6 +44,10 @@
+ #include "gdm-common.h"
+ #include "gdm-signal-handler.h"
+
++#include "gdm-settings.h"
++#include "gdm-settings-direct.h"
++#include "gdm-settings-keys.h"
++
+ #include "gdm-server.h"
+
+ extern char **environ;
+@@ -77,6 +81,7 @@
+ char *parent_display_name;
+ char *parent_auth_file;
+ char *chosen_hostname;
++ char *vt;
+
+ guint child_watch_id;
+ };
+@@ -663,7 +668,7 @@
+ gboolean res;
+
+ /* fork X server process */
+- res = gdm_server_spawn (server, NULL);
++ res = gdm_server_spawn (server, server->priv->vt);
+
+ return res;
+ }
+@@ -890,12 +895,33 @@
+ gdm_server_init (GdmServer *server)
+ {
+
++ int vt;
++ gboolean has_vt;
++ GdmSettings *settings = NULL;
+ server->priv = GDM_SERVER_GET_PRIVATE (server);
+
++
++ settings = gdm_settings_new();
++ if (settings == NULL) {
++ g_assert ("Unable to initialize settings");
++ }
++
++ if (! gdm_settings_direct_init (settings, GDMCONFDIR "/gdm.schemas", "/")) {
++ g_assert ("Unable to initialize settings");
++ }
++
++ has_vt = gdm_settings_direct_get_int (GDM_KEY_VT, &vt);
++
++ g_object_unref (settings);
++
+ server->priv->pid = -1;
+ server->priv->command = g_strdup (X_SERVER " -br -verbose");
+ server->priv->log_dir = g_strdup (LOGDIR);
+
++ if (has_vt) {
++ server->priv->vt = g_strdup_printf ("vt %d", vt);
++ }
++
+ add_ready_handler (server);
+ }
+
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..e3062eeea
--- /dev/null
+++ b/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c
@@ -0,0 +1,10 @@
+--- daemon/gdm-xdmcp-display-factory.c.orig 2007-11-01 10:15:58.269325570 -0400
++++ daemon/gdm-xdmcp-display-factory.c 2007-11-01 10:20:19.093220785 -0400
+@@ -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
diff --git a/x11/gdm/files/patch-daemon_Makefile.in b/x11/gdm/files/patch-daemon_Makefile.in
new file mode 100644
index 000000000..9186a23e3
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_Makefile.in
@@ -0,0 +1,10 @@
+--- daemon/Makefile.in.orig 2007-11-02 20:54:53.000000000 -0400
++++ daemon/Makefile.in 2007-11-02 20:55:08.000000000 -0400
+@@ -451,6 +451,7 @@ test_session_SOURCES = \
+
+ test_session_LDADD = \
+ $(DAEMON_LIBS) \
++ $(EXTRA_DAEMON_LIBS) \
+ $(PAM_LIBS) \
+ $(top_builddir)/common/libgdmcommon.la \
+ $(NULL)
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..67c65fc4c
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session-worker.c
@@ -0,0 +1,11 @@
+--- daemon/gdm-session-worker.c.orig 2008-01-15 17:23:12.000000000 -0500
++++ daemon/gdm-session-worker.c 2008-01-15 17:22:36.000000000 -0500
+@@ -226,7 +226,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:%%LOCALBASE%%/bin:.";
+ }
+
+ len = strlen (file) + 1;
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..ae5572ddd
--- /dev/null
+++ b/x11/gdm/files/patch-data_gdm.schemas.in.in
@@ -0,0 +1,14 @@
+--- data/gdm.schemas.in.in.orig 2007-12-13 12:14:19.000000000 -0500
++++ data/gdm.schemas.in.in 2007-12-13 12:15:05.000000000 -0500
+@@ -11,6 +11,11 @@
+ <signature>s</signature>
+ <default>gdm</default>
+ </schema>
++ <schema>
++ <key>daemon/VT</key>
++ <signature>i</signature>
++ <default>9</default>
++ </schema>
+
+ <schema>
+ <key>xdmcp/Enable</key>
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..56d49b99b
--- /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=\""$(prefix)/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..0ad57a462
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c
@@ -0,0 +1,91 @@
+--- gui/simple-greeter/gdm-languages.c.orig 2008-02-25 17:21:43.000000000 -0500
++++ gui/simple-greeter/gdm-languages.c 2008-02-27 01:17:09.000000000 -0500
+@@ -50,6 +50,8 @@
+ #define ISO_CODES_DATADIR ISO_CODES_PREFIX "/share/xml/iso-codes"
+ #define ISO_CODES_LOCALESDIR ISO_CODES_PREFIX "/share/locale"
+
++#define GDM_DEFAULT_LOCALE "C"
++
+ typedef struct _GdmLocale {
+ char *id;
+ char *name;
+@@ -479,7 +481,7 @@ select_dirs (const struct dirent *dirent
+ struct stat st;
+ char *path;
+
+- path = g_build_filename (LIBLOCALEDIR, dirent->d_name, NULL);
++ path = g_build_filename ("/usr/share/locale", dirent->d_name, NULL);
+ if (g_stat (path, &st) == 0) {
+ mode = st.st_mode;
+ }
+@@ -499,7 +501,7 @@ collect_locales_from_directory (void)
+ int ndirents;
+ int cnt;
+
+- ndirents = scandir (LIBLOCALEDIR, &dirents, select_dirs, alphasort);
++ ndirents = scandir ("/usr/share/locale", &dirents, select_dirs, alphasort);
+
+ for (cnt = 0; cnt < ndirents; ++cnt) {
+ char *path;
+@@ -533,7 +535,7 @@ collect_locales_from_directory (void)
+ }
+
+ /* try to get additional information from LC_IDENTIFICATION */
+- path = g_build_filename (LIBLOCALEDIR, dirents[cnt]->d_name, "LC_IDENTIFICATION", NULL);
++ path = g_build_filename ("/usr/share/locale", dirents[cnt]->d_name, "LC_IDENTIFICATION", NULL);
+ res = g_file_test (path, G_FILE_TEST_IS_REGULAR);
+ if (res) {
+ GMappedFile *mapped;
+@@ -568,6 +570,35 @@ collect_locales_from_aliases (void)
+ }
+
+ static void
++collect_default_locale (void)
++{
++ GdmLocale *locale;
++ GdmLocale *old_locale;
++
++ locale = g_new0 (GdmLocale, 1);
++ gdm_parse_language_name (GDM_DEFAULT_LOCALE,
++ &locale->language_code,
++ &locale->territory_code,
++ &locale->codeset,
++ &locale->modifier);
++
++ locale->id = construct_language_name (locale->language_code, locale->territory_code,
++ NULL, locale->modifier);
++ locale->name = construct_language_name (locale->language_code, locale->territory_code,
++ locale->codeset, locale->modifier);
++
++ old_locale = g_hash_table_lookup (gdm_available_locales_map, locale->id);
++ if (old_locale != NULL) {
++ if (strlen (old_locale->name) > strlen (locale->name)) {
++ chooser_locale_free (locale);
++ return;
++ }
++ }
++
++ g_hash_table_insert (gdm_available_locales_map, g_strdup (locale->id), locale);
++}
++
++static void
+ collect_locales (void)
+ {
+
+@@ -575,6 +606,7 @@ collect_locales (void)
+ gdm_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) chooser_locale_free);
+ }
+
++ collect_default_locale ();
+ collect_locales_from_archive ();
+ collect_locales_from_directory ();
+ collect_locales_from_aliases ();
+@@ -957,6 +989,8 @@ gdm_get_language_from_name (const char *
+ }
+
+ language = get_translated_language (language_code, name);
++ if (language == NULL && ! strcmp (language_code, GDM_DEFAULT_LOCALE))
++ language = GDM_DEFAULT_LOCALE;
+
+ if (territory_code != NULL) {
+ territory = get_translated_territory (territory_code, 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/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..29d467924
--- /dev/null
+++ b/x11/gdm/pkg-install
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+case $2 in
+POST-INSTALL)
+ USER=gdm
+ GROUP=${USER}
+ UID=92
+ GID=${UID}
+ PW=/usr/sbin/pw
+ CHMOD=/bin/chmod
+ CHOWN=/usr/sbin/chown
+ MKDIR=/bin/mkdir
+
+ if ${PW} group show "${GROUP}" 2>/dev/null; then
+ echo "You already have a group \"${GROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${GROUP} -g ${GID}; then
+ echo "Added group \"${GROUP}\"."
+ else
+ echo "Adding group \"${GROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} user show "${USER}" 2>/dev/null; then
+ echo "You already have a user \"${USER}\", so I will use it."
+ uhome=`${PW} user show ${USER} | awk -F: '{print $9}'`
+ if [ x"${uhome}" = x"/nonexistent" -o x"${uhome}" = x"/var/gdm" ]; then
+ ${PW} usermod ${USER} -d "${PKG_PREFIX}/etc/gdm/home"
+ fi
+ else
+ if ${PW} useradd ${USER} -u ${UID} -g ${GROUP} -h - \
+ -d "${PKG_PREFIX}/etc/gdm/home" -s /sbin/nologin -c "GNOME Display Manager"
+ then
+ echo "Added user \"${USER}\"."
+ else
+ echo "Adding user \"${USER}\" failed..."
+ exit 1
+ fi
+ fi
+ ${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
+ ${CHOWN} root:wheel ${PKG_PREFIX}/share/gdm
+ ${CHMOD} 0755 ${PKG_PREFIX}/share/gdm
+ ${MKDIR} -p /var/lib/gdm
+ ${CHMOD} 1770 /var/lib/gdm
+ ${CHOWN} root:${GROUP} /var/lib/gdm
+ ${MKDIR} -p ${PKG_PREFIX}/etc/gdm/home
+ ${CHOWN} ${USER}:${GROUP} ${PKG_PREFIX}/etc/gdm/home
+ ${CHMOD} 0755 ${PKG_PREFIX}/etc/gdm/home
+
+ ${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..e6706c1a6
--- /dev/null
+++ b/x11/gdm/pkg-plist
@@ -0,0 +1,200 @@
+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
+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
+%%PAM_MISC%%libexec/gdmaskpass
+sbin/gdm
+sbin/gdm-binary
+sbin/gdm-restart
+sbin/gdm-safe-restart
+sbin/gdm-stop
+%%DATADIR%%/gdm-a11y-preferences-dialog.glade
+%%DATADIR%%/gdm-greeter-login-window.glade
+%%DATADIR%%/gdm-user-switch-applet.glade
+share/gdm/gdb-cmd
+share/gnome-2.0/ui/GNOME_FastUserSwitchApplet.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/az/LC_MESSAGES/gdm.mo
+share/locale/be/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/bs/LC_MESSAGES/gdm.mo
+share/locale/ca/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/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/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/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/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/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/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@Latn/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/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/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 %%DATADIR%%
+@dirrm etc/gdm/Sessions
+@dirrm etc/gdm/PreSession
+@dirrm etc/gdm/PostSession
+@dirrm etc/gdm/PostLogin
+@dirrm etc/gdm/Init
+@unexec rmdir %D/etc/gdm/home 2> /dev/null || /usr/bin/true
+@dirrmtry etc/gdm
+@dirrmtry etc/dm/Sessions
+@dirrmtry etc/dm
+@dirrmtry sbin
+@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/lib/gdm 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/si/LC_MESSAGES
+@dirrmtry share/locale/si
+@dirrmtry share/locale/te/LC_MESSAGES
+@dirrmtry share/locale/te
+@dirrmtry share/locale/rw/LC_MESSAGES
+@dirrmtry share/locale/rw
+@dirrmtry share/locale/oc/LC_MESSAGES
+@dirrmtry share/locale/oc
+@dirrmtry share/locale/nso/LC_MESSAGES
+@dirrmtry share/locale/nso
+@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/ku/LC_MESSAGES
+@dirrmtry share/locale/ku
+@dirrmtry share/locale/hy/LC_MESSAGES
+@dirrmtry share/locale/hy
+@dirrmtry share/locale/dz/LC_MESSAGES
+@dirrmtry share/locale/dz
+@dirrmtry share/locale/bn_IN/LC_MESSAGES
+@dirrmtry share/locale/bn_IN
+@dirrmtry share/locale/as/LC_MESSAGES
+@dirrmtry share/locale/as