virtualx.eclass: Fix no display for an emerge following a failure
authorChris Mayo <aklhfex@gmail.com>
Fri, 26 Jul 2019 18:48:13 +0000 (19:48 +0100)
committerMatt Turner <mattst88@gentoo.org>
Tue, 30 Jul 2019 01:49:41 +0000 (18:49 -0700)
If using GNOME GDM, X is started on DISPLAY :0 but a lock file
/tmp/.X1024-lock is created instead of /tmp/.X0-lock.
virtx() will initially set XDISPLAY to 0 and attempt to start Xvfb on
DISPLAY :0 which fails but DISPLAY :1 (and greater) is not attempted if
a previous emerge left /tmp/.X1-lock behind.

Closes: https://bugs.gentoo.org/690778
Signed-off-by: Chris Mayo <aklhfex@gmail.com>
Signed-off-by: Matt Turner <mattst88@gentoo.org>
eclass/virtualx.eclass

index fb6a867a35cca39cb49d85e648d21f02806c7a69..40eeea5463bcdaadc1bcf3dfe709a29c9dda56b9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: virtualx.eclass
@@ -178,7 +178,10 @@ virtx() {
        # Xvfb is started, else bump the display number
        #
        # Azarah - 5 May 2002
-       XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
+       # GNOME GDM may have started X on DISPLAY :0 with a
+       # lock file /tmp/.X1024-lock, therefore start the search at 1.
+       # Else a leftover /tmp/.X1-lock will prevent finding an available display.
+       XDISPLAY=$(i=1; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i})
        debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}"
 
        # We really do not want SANDBOX enabled here