Marco Trevisan (Treviño) has proposed merging
~3v1n0/ubuntu/+source/gdm3:ubuntu/master into
~ubuntu-desktop/ubuntu/+source/gdm3:ubuntu/master.
Requested reviews:
Ubuntu Desktop (ubuntu-desktop)
Related bugs:
Bug #1794280 in gdm3 (Ubuntu): "gdm doesn't start on a fresh installation of
Cosmic Desktop"
https://bugs.launchpad.net/ubuntu/+source/gdm3/+bug/1794280
For more details, see:
https://code.launchpad.net/~3v1n0/ubuntu/+source/gdm3/+git/gdm3/+merge/356861
--
Your team Ubuntu Desktop is requested to review the proposed merge of
~3v1n0/ubuntu/+source/gdm3:ubuntu/master into
~ubuntu-desktop/ubuntu/+source/gdm3:ubuntu/master.
diff --git a/debian/changelog b/debian/changelog
index 29491af..9b30904 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+gdm3 (3.30.1-1ubuntu4) UNRELEASED; urgency=medium
+
+ * d/p/u/gdm3.service-wait-for-drm-device-before-trying-to-start-i.patch:
+- Wait for the first valid gdm device on pre-start (LP: #1794280)
++ debian/control:
+ - Add build-depends on libgudev-1.0-dev
+
+ -- Marco Trevisan (Treviño) Tue, 16 Oct 2018 14:08:32 -0500
+
gdm3 (3.30.1-1ubuntu3) cosmic; urgency=medium
* Build-Depend on gjs so that we don't produce uninstallable packages
diff --git a/debian/patches/series b/debian/patches/series
index b7dd121..cab417d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -12,3 +12,4 @@ ubuntu_config_error_dialog.patch
ubuntu_dont_set_language_env.patch
ubuntu_prefer_ubuntu_session_fallback.patch
ubuntu_revert_nvidia_wayland_blacklist.patch
+ubuntu/gdm3.service-wait-for-drm-device-before-trying-to-start-i.patch
diff --git a/debian/patches/ubuntu/gdm3.service-wait-for-drm-device-before-trying-to-start-i.patch b/debian/patches/ubuntu/gdm3.service-wait-for-drm-device-before-trying-to-start-i.patch
new file mode 100644
index 000..b33510e
--- /dev/null
+++ b/debian/patches/ubuntu/gdm3.service-wait-for-drm-device-before-trying-to-start-i.patch
@@ -0,0 +1,169 @@
+From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?=
+Date: Tue, 16 Oct 2018 20:59:23 +0200
+Subject: gdm3.service: wait for drm device before trying to start it
+
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gdm3/+bug/1794280
+Forwarded: not-needed
+---
+ configure.ac | 1 +
+ data/Makefile.am | 1 +
+ data/gdm.service.in | 4 +++
+ utils/Makefile.am| 9 +
+ utils/gdm-wait-for-drm.c | 85
+ 5 files changed, 100 insertions(+)
+ create mode 100644 utils/gdm-wait-for-drm.c
+
+diff --git a/configure.ac b/configure.ac
+index f763632..37fa2ec 100644
+--- a/configure.ac
b/configure.ac
+@@ -76,6 +76,7 @@ PKG_CHECK_MODULES(COMMON,
+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-unix-2.0 >= $GLIB_REQUIRED_VERSION
++gudev-1.0
+ )
+ AC_SUBST(COMMON_CFLAGS)
+ AC_SUBST(COMMON_LIBS)
+diff --git a/data/Makefile.am b/data/Makefile.am
+index 4aae042..f5b185a 100644
+--- a/data/Makefile.am
b/data/Makefile.am
+@@ -208,6 +208,7 @@ systemdsystemunit =
+ gdm.service: $(srcdir)/gdm.service.in
+ $(AM_V_GEN)sed \
+ -e 's,[@]sbindir[@],$(sbindir),g' \
++ -e 's,[@]libexecdir[@],$(libexecdir),g' \
+ -e 's,[@]GDM_INITIAL_VT[@],$(GDM_INITIAL_VT),g' \
+ -e 's,[@]LANG_CONFIG_FILE[@],$(LANG_CONFIG_FILE),g' \
+ -e 's,[@]PLYMOUTH_QUIT_SERVICE[@],$(PLYMOUTH_QUIT_SERVICE),g' \
+diff --git a/data/gdm.service.in b/data/gdm.service.in
+index 446e173..89c0bbc 100644
+--- a/data/gdm.service.in
b/data/gdm.service.in
+@@ -32,3 +32,7 @@ StandardError=inherit
+ EnvironmentFile=-@LANG_CONFIG_FILE@
+ ExecReload=/usr/share/gdm/generate-config
+ ExecReload=/bin/kill -SIGHUP $MAINPID
++ExecStartPre=@libexecdir@/gdm-wait-for-drm
++
++[Install]
++Alias=display-manager.service
+diff --git a/utils/Makefile.am b/utils/Makefile.am
+index babe890..3eb43c3 100644
+--- a/utils/Makefile.am
b/utils/Makefile.am
+@@ -35,6 +35,7 @@ bin_PROGRAMS = \
+
+ libexec_PROGRAMS = \
+ gdm-disable-wayland \
++ gdm-wait-for-drm \
+ $(NULL)
+
+ gdmflexiserver_LDADD = \
+@@ -63,6 +64,14 @@ gdm_disable_wayland_SOURCES = \
+ gdm-disable-wayland.c \
+ $(NULL)
+
++gdm_wait_for_drm_LDADD = \
++ $(COMMON_LIBS) \
++ $(NULL)
++
++gdm_wait_for_drm_SOURCES = \
++ gdm-wait-for-drm.c \
++ $(NULL)
++
+ CLEANFILES = \
+ $(NULL)
+
+diff --git a/utils/gdm-wait-for-drm.c b/utils/gdm-wait-for-drm.c
+new file mode 100644
+index 000..741134e
+--- /dev/null
b/utils/gdm-wait-for-drm.c
+@@ -0,0 +1,85 @@
++#include
++#include
++
++static gboolean
++handle_device (GUdevDevice *device)
++{
++const gchar * const * tags;
++tags = g_udev_device_get_tags (device);
++g_debug ("%s\n", g_udev_device_get_name (device));
++if (g_strv_contains (tags, "master-of-seat"))
++{
++g_debug ("is seat master\n");
++return TRUE;
++}
++
++return FALSE;
++}
++
++sta