Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package gdm3 and/or set a shorter time delay.
This fixes RC bug #789118, one of two root causes for inability to
unlock the lock screen if a user fails to read the release notes and
carries out the upgrade from within the GNOME GUI (the other is in
gnome-shell and will be requested separately).

unblock gdm3/3.22.1-2

>+  [ Simon McVittie ]
>+  * Work around upgrades not being done offline:
>+    - Add a non-upstreamable patch to edit D-Bus messages from libgdm
>+      to the session worker and adapt them from the pre-3.16 interface
>+      to the post-3.16 interface. Only do this if a flag file in /run
>+      has been created, so that this workaround will only be active
>+      until the next reboot.
>+    - gdm3.preinst: Create that flag file on upgrades. (Closes: #789118)

The RC bug fix.

>+  [ Jeremy Bicha ]
>+  * debian/greeter.dconf-defaults:
>+    - Use the new emblem-debian-white.png for default login screen logo
>+      (Closes: #833529)

Was already in pkg-gnome svn, targeting stretch. If desktop-base 9.0.3
is allowed to migrate, this puts Debian branding on the login screen
(which was previously only present if deprecated theme packages were
installed). If not, the missing file is harmlessly ignored. I've
tested both ways.

>+  [ Michael Biebl ]
>+  * Stop setting authdir, has been dropped upstream in favour of xauthdir.

Was already in pkg-gnome svn. Non-critical, but I have verified that it is
harmless (there is no mention of authdir in the source tree, except as a
substring of xauthdir, which is set by --with-xauth-dir=/var/run/gdm3 on the
configure command-line).

Regards,
    S
diffstat for gdm3-3.22.1 gdm3-3.22.1

 changelog                                                          |   23 +
 gdm3.preinst                                                       |    5 
 greeter.dconf-defaults                                             |    4 
 patches/Hack-D-Bus-messages-from-Debian-8-libgdm-to-work-wit.patch |  118 ++++++++++
 patches/series                                                     |    1 
 rules                                                              |    2 
 6 files changed, 150 insertions(+), 3 deletions(-)

diff -Nru gdm3-3.22.1/debian/changelog gdm3-3.22.1/debian/changelog
--- gdm3-3.22.1/debian/changelog	2016-10-16 23:17:17.000000000 +0100
+++ gdm3-3.22.1/debian/changelog	2017-01-29 11:07:50.000000000 +0000
@@ -1,3 +1,26 @@
+gdm3 (3.22.1-2) unstable; urgency=medium
+
+  * Team upload.
+
+  [ Michael Biebl ]
+  * Stop setting authdir, has been dropped upstream in favour of xauthdir.
+
+  [ Jeremy Bicha ]
+  * debian/greeter.dconf-defaults:
+    - Use the new emblem-debian-white.png for default login screen logo
+      (Closes: #833529)
+
+  [ Simon McVittie ]
+  * Work around upgrades not being done offline:
+    - Add a non-upstreamable patch to edit D-Bus messages from libgdm
+      to the session worker and adapt them from the pre-3.16 interface
+      to the post-3.16 interface. Only do this if a flag file in /run
+      has been created, so that this workaround will only be active
+      until the next reboot.
+    - gdm3.preinst: Create that flag file on upgrades. (Closes: #789118)
+
+ -- Simon McVittie <s...@debian.org>  Sun, 29 Jan 2017 11:07:50 +0000
+
 gdm3 (3.22.1-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru gdm3-3.22.1/debian/gdm3.preinst gdm3-3.22.1/debian/gdm3.preinst
--- gdm3-3.22.1/debian/gdm3.preinst	2016-10-16 21:58:13.000000000 +0100
+++ gdm3-3.22.1/debian/gdm3.preinst	2017-01-29 01:59:22.000000000 +0000
@@ -9,4 +9,9 @@
     fi
 fi
 
+if [ -n "$2" ] && dpkg --compare-versions "$2" lt 3.22; then
+    echo "Enabling compatibility workaround for upgrades from Debian 8..."
+    touch "/run/gdm3-upgraded-from-debian-8"
+fi
+
 #DEBHELPER#
diff -Nru gdm3-3.22.1/debian/greeter.dconf-defaults gdm3-3.22.1/debian/greeter.dconf-defaults
--- gdm3-3.22.1/debian/greeter.dconf-defaults	2015-07-09 12:03:14.000000000 +0100
+++ gdm3-3.22.1/debian/greeter.dconf-defaults	2017-01-26 22:27:50.000000000 +0000
@@ -23,8 +23,8 @@
 # Login manager options
 # =====================
 [org/gnome/login-screen]
-logo='/usr/share/icons/gnome/48x48/places/debian-swirl.png'
-fallback-logo='/usr/share/icons/gnome/48x48/places/debian-swirl.png'
+logo='/usr/share/icons/hicolor/48x48/emblems/emblem-debian-white.png'
+fallback-logo='/usr/share/icons/hicolor/48x48/emblems/emblem-debian-white.png'
 
 # - Disable user list
 # disable-user-list=true
diff -Nru gdm3-3.22.1/debian/patches/Hack-D-Bus-messages-from-Debian-8-libgdm-to-work-wit.patch gdm3-3.22.1/debian/patches/Hack-D-Bus-messages-from-Debian-8-libgdm-to-work-wit.patch
--- gdm3-3.22.1/debian/patches/Hack-D-Bus-messages-from-Debian-8-libgdm-to-work-wit.patch	1970-01-01 01:00:00.000000000 +0100
+++ gdm3-3.22.1/debian/patches/Hack-D-Bus-messages-from-Debian-8-libgdm-to-work-wit.patch	2017-01-29 01:59:22.000000000 +0000
@@ -0,0 +1,118 @@
+From 27365c4863a3a5127541ed9ac77cb29500466ab8 Mon Sep 17 00:00:00 2001
+From: Simon McVittie <s...@debian.org>
+Date: Wed, 25 Jan 2017 10:58:28 +0000
+Subject: [PATCH] Hack D-Bus messages from Debian 8 libgdm to work with this
+ version
+
+There is one extra argument. Add that argument, setting it to FALSE,
+which makes this gdm behave like the only code path in Debian 8.
+
+Please remove this patch after Debian 9 is released.
+
+Forwarded: no, Debian-specific
+---
+ daemon/gdm-session-worker.c | 81 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 81 insertions(+)
+
+diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
+index 421ef028..6b14f003 100644
+--- a/daemon/gdm-session-worker.c
++++ b/daemon/gdm-session-worker.c
+@@ -3077,6 +3077,80 @@ gdm_session_worker_handle_start_reauthentication (GdmDBusWorker         *object,
+         return TRUE;
+ }
+ 
++/* A horrible hack to cope with reauthentication requests coming from
++ * Debian 8's libgdm, which might still be resident in memory if a user
++ * was running gnome-shell and lets it lock during the upgrade. */
++static GDBusMessage *
++rewrite_messages (GDBusConnection *connection,
++                  GDBusMessage *message,
++                  gboolean incoming,
++                  gpointer nil)
++{
++        g_autoptr (GDBusMessage) ret = NULL;
++        GVariant *body;
++        const gchar *service_name, *user_name, *x11_display, *x11_authority;
++        const gchar *display_device, *display_seat, *hostname;
++        gboolean display_is_local;
++
++        if (!incoming ||
++            g_dbus_message_get_message_type (message) !=
++                    G_DBUS_MESSAGE_TYPE_METHOD_CALL ||
++            g_dbus_message_get_num_unix_fds (message) != 0 ||
++            g_strcmp0 (g_dbus_message_get_interface (message),
++                       "org.gnome.DisplayManager.Worker") != 0 ||
++            g_strcmp0 (g_dbus_message_get_member (message),
++                       "SetupForUser") != 0 ||
++            g_strcmp0 (g_dbus_message_get_signature (message),
++                       "ssss" "sssb") != 0)
++                return message;
++
++        g_warning ("Patching old SetupForUser message from Debian 8 libgdm");
++
++        ret = g_dbus_message_copy (message, NULL);
++
++        /* If we can't copy it for whatever reason, just give up */
++        if (ret == NULL)
++        {
++                g_warning ("Failed to patch old SetupForUser message");
++                return message;
++        }
++
++        body = g_dbus_message_get_body (message);
++
++        g_variant_get (body,
++                       "(" "&s&s&s&s" "&s&s&sb" ")",
++
++                       &service_name,
++                       &user_name,
++                       &x11_display,
++                       &x11_authority,
++
++                       &display_device,
++                       &display_seat,
++                       &hostname,
++                       &display_is_local);
++
++        /* The new API has one aditional boolean argument, display_is_initial.
++         * Set it to FALSE to make gdm behave like it did in Debian 8. */
++        g_dbus_message_set_body (ret,
++                                 g_variant_new ("(" "ssss" "sssb" "b" ")",
++
++                                                service_name,
++                                                user_name,
++                                                x11_display,
++                                                x11_authority,
++
++                                                display_device,
++                                                display_seat,
++                                                hostname,
++                                                display_is_local,
++
++                                                FALSE));
++
++        g_object_unref (message);
++        return g_steal_pointer (&ret);
++}
++
+ static GObject *
+ gdm_session_worker_constructor (GType                  type,
+                                 guint                  n_construct_properties,
+@@ -3104,6 +3178,13 @@ gdm_session_worker_constructor (GType                  type,
+                 exit (1);
+         }
+ 
++        if (worker->priv->is_reauth_session &&
++            g_file_test ("/run/gdm3-upgraded-from-debian-8",
++                         G_FILE_TEST_EXISTS)) {
++                g_dbus_connection_add_filter (worker->priv->connection,
++                                              rewrite_messages, NULL, NULL);
++        }
++
+         worker->priv->manager = GDM_DBUS_WORKER_MANAGER (gdm_dbus_worker_manager_proxy_new_sync (worker->priv->connection,
+                                                                                                  G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+                                                                                                  NULL, /* dbus name */
+-- 
+2.11.0
+
diff -Nru gdm3-3.22.1/debian/patches/series gdm3-3.22.1/debian/patches/series
--- gdm3-3.22.1/debian/patches/series	2016-10-16 21:55:14.000000000 +0100
+++ gdm3-3.22.1/debian/patches/series	2017-01-29 01:59:22.000000000 +0000
@@ -4,3 +4,4 @@
 91_dconf_database_path.patch
 92_systemd_unit.patch
 94_retain_xorg_log.patch
+Hack-D-Bus-messages-from-Debian-8-libgdm-to-work-wit.patch
diff -Nru gdm3-3.22.1/debian/rules gdm3-3.22.1/debian/rules
--- gdm3-3.22.1/debian/rules	2016-10-16 23:05:57.000000000 +0100
+++ gdm3-3.22.1/debian/rules	2016-10-17 00:11:11.000000000 +0100
@@ -72,7 +72,7 @@
 		$(CONFFLAGS)
 
 override_dh_auto_build: $(OUTFILES) $(MANPAGES)
-	authdir=/var/lib/gdm3 dh_auto_build
+	dh_auto_build
 
 override_dh_install:
 	dh_install --list-missing

Reply via email to