[arch-commits] Commit in gdm/trunk (PKGBUILD revert.patch)
Jan Steffens
heftig at archlinux.org
Wed Apr 15 10:19:13 UTC 2015
Date: Wednesday, April 15, 2015 @ 12:19:13
Author: heftig
Revision: 236644
Revert a crasher
Added:
gdm/trunk/revert.patch
Modified:
gdm/trunk/PKGBUILD
--------------+
PKGBUILD | 10 +-
revert.patch | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 265 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2015-04-15 09:59:06 UTC (rev 236643)
+++ PKGBUILD 2015-04-15 10:19:13 UTC (rev 236644)
@@ -5,7 +5,7 @@
pkgbase=gdm
pkgname=(gdm libgdm)
pkgver=3.16.1
-pkgrel=1
+pkgrel=2
pkgdesc="Gnome Display Manager"
arch=(i686 x86_64)
license=(GPL)
@@ -14,9 +14,10 @@
makedepends=(itstool intltool yelp-tools gobject-introspection)
checkdepends=('check')
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver:0:4}/$pkgbase-$pkgver.tar.xz
- 0001-Add-Arch-Linux-PAM-config-files.patch)
+ 0001-Add-Arch-Linux-PAM-config-files.patch revert.patch)
sha256sums=('41b9a178f6307531551d70c7432016c5051ea1dafd78bbf93b655baba36b42cd'
- 'ad24ed788f2285a935c72c131a9627aa865095b08865416ed6cc60883bf656fc')
+ 'ad24ed788f2285a935c72c131a9627aa865095b08865416ed6cc60883bf656fc'
+ '06ae7308f0e9afdb1b91ce718b2e96b0addeb81a6a365c933ba05e277ab7c711')
prepare() {
cd $pkgbase-$pkgver
@@ -23,6 +24,9 @@
patch -Np1 -i ../0001-Add-Arch-Linux-PAM-config-files.patch
+ # Revert most changes in gdm 3.16.1, as gdm does not switch to the new sessions anymore
+ patch -Np1 -i ../revert.patch
+
AUTOPOINT='intltoolize --automake -c' autoreconf -fi
}
Added: revert.patch
===================================================================
--- revert.patch (rev 0)
+++ revert.patch 2015-04-15 10:19:13 UTC (rev 236644)
@@ -0,0 +1,258 @@
+diff --git c/daemon/gdm-launch-environment.c i/daemon/gdm-launch-environment.c
+index aaf7834..dc73ffc 100644
+--- c/daemon/gdm-launch-environment.c
++++ i/daemon/gdm-launch-environment.c
+@@ -795,7 +795,7 @@ gdm_launch_environment_class_init (GdmLaunchEnvironmentClass *klass)
+ "device",
+ "device",
+ NULL,
+- G_PARAM_READWRITE));
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class,
+ PROP_X11_DISPLAY_IS_LOCAL,
+ g_param_spec_boolean ("x11-display-is-local",
+diff --git c/daemon/gdm-legacy-display.c i/daemon/gdm-legacy-display.c
+index 9c99923..6214c42 100644
+--- c/daemon/gdm-legacy-display.c
++++ i/daemon/gdm-legacy-display.c
+@@ -144,21 +144,6 @@ on_server_ready (GdmServer *server,
+ g_debug ("GdmDisplay: could not connect to display");
+ gdm_display_unmanage (GDM_DISPLAY (self));
+ } else {
+- GdmLaunchEnvironment *launch_environment;
+- char *display_device;
+-
+- display_device = gdm_server_get_display_device (server);
+-
+- g_object_get (G_OBJECT (self),
+- "launch-environment", &launch_environment,
+- NULL);
+- g_object_set (G_OBJECT (launch_environment),
+- "x11-display-device",
+- display_device,
+- NULL);
+- g_clear_pointer(&display_device, g_free);
+- g_clear_object (&launch_environment);
+-
+ g_debug ("GdmDisplay: connected to display");
+ g_object_set (G_OBJECT (self), "status", GDM_DISPLAY_MANAGED, NULL);
+ }
+diff --git c/daemon/gdm-manager.c i/daemon/gdm-manager.c
+index fc357d3..db008c0 100644
+--- c/daemon/gdm-manager.c
++++ i/daemon/gdm-manager.c
+@@ -836,48 +836,6 @@ get_seat_id_for_session_id (GDBusConnection *connection,
+ return NULL;
+ }
+
+-#ifdef WITH_SYSTEMD
+-static char *
+-get_tty_for_systemd_session_id (const char *session_id,
+- GError **error)
+-{
+- int ret;
+- char *tty, *out_tty;
+-
+- ret = sd_session_get_tty (session_id, &tty);
+-
+- if (ret == -ENOENT) {
+- out_tty = NULL;
+- } else if (ret < 0) {
+- g_set_error (error,
+- GDM_DISPLAY_ERROR,
+- GDM_DISPLAY_ERROR_GETTING_SESSION_INFO,
+- "Error getting tty for session id %s from systemd: %s",
+- session_id,
+- g_strerror (-ret));
+- out_tty = NULL;
+- } else {
+- out_tty = g_strdup (tty);
+- free (tty);
+- }
+-
+- return out_tty;
+-}
+-#endif
+-
+-static char *
+-get_tty_for_session_id (const char *session_id,
+- GError **error)
+-{
+-#ifdef WITH_SYSTEMD
+- if (LOGIND_RUNNING()) {
+- return get_tty_for_systemd_session_id (session_id, error);
+- }
+-#endif
+-
+- return NULL;
+-}
+-
+ static void
+ get_display_and_details_for_bus_sender (GdmManager *self,
+ GDBusConnection *connection,
+@@ -885,7 +843,6 @@ get_display_and_details_for_bus_sender (GdmManager *self,
+ GdmDisplay **out_display,
+ char **out_seat_id,
+ char **out_session_id,
+- char **out_tty,
+ GPid *out_pid,
+ uid_t *out_uid,
+ gboolean *out_is_login_screen,
+@@ -980,16 +937,6 @@ get_display_and_details_for_bus_sender (GdmManager *self,
+ }
+ }
+
+- if (out_tty != NULL) {
+- *out_tty = get_tty_for_session_id (session_id, &error);
+-
+- if (error != NULL) {
+- g_debug ("GdmManager: Error while retrieving tty for session: %s",
+- error->message);
+- g_clear_error (&error);
+- }
+- }
+-
+ display = gdm_display_store_find (self->priv->display_store,
+ lookup_by_session_id,
+ (gpointer) session_id);
+@@ -1085,7 +1032,7 @@ add_session_record (GdmManager *manager,
+ "display-device", &display_device,
+ NULL);
+
+- if (display_name == NULL && display_device == NULL) {
++ if (display_name == NULL) {
+ goto out;
+ }
+
+@@ -1122,30 +1069,6 @@ out:
+ return recorded;
+ }
+
+-static GdmSession *
+-get_user_session_for_display (GdmManager *self,
+- GdmDisplay *display)
+-{
+- GList *node;
+-
+- for (node = self->priv->user_sessions;
+- node != NULL;
+- node = node->next) {
+- GdmSession *session = node->data;
+- GdmDisplay *candidate_display;
+- GList *next_node = node->next;
+-
+- candidate_display = get_display_for_user_session (session);
+-
+- if (candidate_display == display)
+- return session;
+-
+- node = next_node;
+- }
+-
+- return NULL;
+-}
+-
+ static gboolean
+ gdm_manager_handle_register_display (GdmDBusManager *manager,
+ GDBusMethodInvocation *invocation,
+@@ -1156,17 +1079,12 @@ gdm_manager_handle_register_display (GdmDBusManager *manager,
+ GDBusConnection *connection;
+ GdmDisplay *display = NULL;
+ GdmSession *session;
+- GVariantIter iter;
+- char *key = NULL;
+- char *value = NULL;
+- char *x11_display_name = NULL;
+- char *tty = NULL;
+
+ g_debug ("GdmManager: trying to register new display");
+
+ sender = g_dbus_method_invocation_get_sender (invocation);
+ connection = g_dbus_method_invocation_get_connection (invocation);
+- get_display_and_details_for_bus_sender (self, connection, sender, &display, NULL, NULL, &tty, NULL, NULL, NULL, NULL);
++ get_display_and_details_for_bus_sender (self, connection, sender, &display, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ if (display == NULL) {
+ g_dbus_method_invocation_return_error_literal (invocation,
+@@ -1177,25 +1095,11 @@ gdm_manager_handle_register_display (GdmDBusManager *manager,
+ return TRUE;
+ }
+
+- g_variant_iter_init (&iter, details);
+- while (g_variant_iter_loop (&iter, "{ss}", &key, &value)) {
+- if (g_strcmp0 (key, "x11-display-name") == 0)
+- x11_display_name = value;
+- }
+-
+- session = get_user_session_for_display (self, display);
++ session = get_embryonic_user_session_for_display (display);
+
+ if (session != NULL) {
+ GPid pid;
+
+- if (x11_display_name != NULL)
+- g_object_set (G_OBJECT (session), "display-name", x11_display_name, NULL);
+-
+- /* FIXME: this should happen in gdm-session.c when the session is opened
+- */
+- if (tty != NULL)
+- g_object_set (G_OBJECT (session), "display-device", tty, NULL);
+-
+ pid = gdm_session_get_pid (session);
+
+ if (pid > 0) {
+@@ -1208,8 +1112,6 @@ gdm_manager_handle_register_display (GdmDBusManager *manager,
+ gdm_dbus_manager_complete_register_display (GDM_DBUS_MANAGER (manager),
+ invocation);
+
+- g_clear_pointer (&x11_display_name, g_free);
+- g_clear_pointer (&tty, g_free);
+ return TRUE;
+ }
+
+@@ -1231,7 +1133,7 @@ gdm_manager_handle_open_session (GdmDBusManager *manager,
+
+ sender = g_dbus_method_invocation_get_sender (invocation);
+ connection = g_dbus_method_invocation_get_connection (invocation);
+- get_display_and_details_for_bus_sender (self, connection, sender, &display, NULL, NULL, NULL, &pid, &uid, NULL, NULL);
++ get_display_and_details_for_bus_sender (self, connection, sender, &display, NULL, NULL, &pid, &uid, NULL, NULL);
+
+ if (display == NULL) {
+ g_dbus_method_invocation_return_error_literal (invocation,
+@@ -1487,7 +1389,7 @@ gdm_manager_handle_open_reauthentication_channel (GdmDBusManager *manager
+
+ sender = g_dbus_method_invocation_get_sender (invocation);
+ connection = g_dbus_method_invocation_get_connection (invocation);
+- get_display_and_details_for_bus_sender (self, connection, sender, &display, &seat_id, &session_id, NULL, &pid, &uid, &is_login_screen, &is_remote);
++ get_display_and_details_for_bus_sender (self, connection, sender, &display, &seat_id, &session_id, &pid, &uid, &is_login_screen, &is_remote);
+
+ if (session_id == NULL || pid == 0 || uid == (uid_t) -1) {
+ g_dbus_method_invocation_return_error_literal (invocation,
+@@ -1803,12 +1705,11 @@ on_display_status_changed (GdmDisplay *display,
+
+ g_object_get (display,
+ "is-local", &display_is_local,
++ "x11-display-number", &display_number,
+ NULL);
+ quit_plymouth = display_is_local && manager->priv->plymouth_is_running;
+ #endif
+
+- g_object_get (display, "x11-display-number", &display_number, NULL);
+-
+ status = gdm_display_get_status (display);
+
+ switch (status) {
+diff --git c/daemon/gdm-session-record.c i/daemon/gdm-session-record.c
+index da824aa..1585ef5 100644
+--- c/daemon/gdm-session-record.c
++++ i/daemon/gdm-session-record.c
+@@ -205,9 +205,6 @@ gdm_session_record_login (GPid session_pid,
+ UTMP session_record = { 0 };
+ UTMP *u;
+
+- if (x11_display_name == NULL)
+- x11_display_name = display_device;
+-
+ record_set_username (&session_record, user_name);
+
+ g_debug ("Writing login record");
More information about the arch-commits
mailing list