aboutsummaryrefslogtreecommitdiff
path: root/x11/gdm
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2009-05-03 02:54:34 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2009-05-03 02:54:34 +0000
commitaa5eaef8c971e11e1fa7ea68fad7eaa0b04c076a (patch)
tree7e78cd5e00ebd9cf9f58a5278549363b412dd621 /x11/gdm
parent703dfcc56a37206139ddec86e7c23a42c76a32b8 (diff)
downloadports-aa5eaef8c971e11e1fa7ea68fad7eaa0b04c076a.tar.gz
ports-aa5eaef8c971e11e1fa7ea68fad7eaa0b04c076a.zip
Notes
Diffstat (limited to 'x11/gdm')
-rw-r--r--x11/gdm/Makefile1
-rw-r--r--x11/gdm/files/gdm.in3
-rw-r--r--x11/gdm/files/patch-configure69
-rw-r--r--x11/gdm/files/patch-hal-keyboard109
4 files changed, 181 insertions, 1 deletions
diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile
index 6166262e3f91..f9229dfef5b1 100644
--- a/x11/gdm/Makefile
+++ b/x11/gdm/Makefile
@@ -8,6 +8,7 @@
PORTNAME= gdm
PORTVERSION= 2.26.1
+PORTREVISION= 1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
diff --git a/x11/gdm/files/gdm.in b/x11/gdm/files/gdm.in
index a8a1a3496a5e..a6a0a8d70eec 100644
--- a/x11/gdm/files/gdm.in
+++ b/x11/gdm/files/gdm.in
@@ -15,6 +15,7 @@
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
@@ -54,7 +55,7 @@ gdm_start()
sleep 1
iter=$(expr ${iter} + 1)
done
- ${command} ${gdm_flags} ) &
+ LANG=${gdm_lang} ${command} ${gdm_flags} ) &
}
load_rc_config ${name}
diff --git a/x11/gdm/files/patch-configure b/x11/gdm/files/patch-configure
new file mode 100644
index 000000000000..baa14aa863dd
--- /dev/null
+++ b/x11/gdm/files/patch-configure
@@ -0,0 +1,69 @@
+--- configure.orig 2009-05-02 22:45:53.000000000 -0400
++++ configure 2009-05-02 22:47:16.000000000 -0400
+@@ -19163,15 +19163,18 @@ if test -n "$DAEMON_CFLAGS"; then
+ if test -n "$PKG_CONFIG" && \
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION
+ gobject-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
++ hal
+ ") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_DAEMON_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ " 2>/dev/null`
+ else
+ pkg_failed=yes
+@@ -19185,15 +19188,18 @@ if test -n "$DAEMON_LIBS"; then
+ if test -n "$PKG_CONFIG" && \
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION
+ gobject-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
++ hal
+ ") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_DAEMON_LIBS=`$PKG_CONFIG --libs "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ " 2>/dev/null`
+ else
+ pkg_failed=yes
+@@ -19214,10 +19220,12 @@ fi
+ if test $_pkg_short_errors_supported = yes; then
+ DAEMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-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
++ hal
+ " 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+@@ -19225,6 +19233,7 @@ fi
+
+ { { $as_echo "$as_me:$LINENO: error: Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ ) were not met:
+
+ $DAEMON_PKG_ERRORS
+@@ -19238,6 +19247,7 @@ See the pkg-config man page for more det
+ " >&5
+ $as_echo "$as_me: error: Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
++ hal
+ ) were not met:
+
+ $DAEMON_PKG_ERRORS
diff --git a/x11/gdm/files/patch-hal-keyboard b/x11/gdm/files/patch-hal-keyboard
new file mode 100644
index 000000000000..a712f04a128a
--- /dev/null
+++ b/x11/gdm/files/patch-hal-keyboard
@@ -0,0 +1,109 @@
+diff -up gdm-2.25.2/daemon/gdm-session-direct.c.system-keyboard gdm-2.25.2/daemon/gdm-session-direct.c
+--- daemon/gdm-session-direct.c.system-keyboard 2008-08-26 15:04:00.000000000 -0400
++++ daemon/gdm-session-direct.c 2009-02-24 22:55:02.656566009 -0500
+@@ -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,66 @@ 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 *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);
++ }
++ result = g_strdup (layout);
++ libhal_free_string (layout);
++ }
++
++ 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 *
+@@ -1971,9 +2025,10 @@ setup_session_environment (GdmSessionDir
+ "GDM_LANG",
+ get_language_name (session));
+
+- gdm_session_direct_set_environment_variable (session,
+- "GDM_KEYBOARD_LAYOUT",
+- get_layout_name (session));
++ if (g_strcmp0 (get_layout_name (session), get_system_default_layout (session)) != 0)
++ gdm_session_direct_set_environment_variable (session,
++ "GDM_KEYBOARD_LAYOUT",
++ get_layout_name (session));
+
+ gdm_session_direct_set_environment_variable (session,
+ "DISPLAY",
+diff -up gdm-2.25.2/daemon/gdm-session-settings.c.system-keyboard gdm-2.25.2/daemon/gdm-session-settings.c
+--- daemon/gdm-session-settings.c.system-keyboard 2008-08-26 15:04:00.000000000 -0400
++++ daemon/gdm-session-settings.c 2009-02-24 22:51:00.158815919 -0500
+@@ -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");
+ }