[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