Fix twisty logic around forcing text mode (#811868)
The existing logic forces text-mode if /usr/bin/Xorg is missing. Except
it doesn't check if you're using VNC first, which caused problems on
certain POWER systems where we're not including Xorg anymore.
We could just add 'and not flags.usevnc' to the if statement but it's
already really, *really* hard to understand what's going on there.
So: this patch cleans up the logic in a way that should be equivalent,
*and* fixes the bug.
A couple notes, if you're checking my work:
- The flags.livecdInstall check was to avoid starting X during liveinst
(assuming it'd already be running on a live system), so the intent
flags.livecdInstall == flags.preexisting_x11
- The 'isS390' check in the first block was added in commit 4d42471, way
back in 2004: "enable GUI/VNC installs on mainframe again, there's no
Xorg binary". So the intent there was:
isS390 == (flags.preexisting_x11 or flags.usevnc)
Knowing that, you can replace the conditions and do a little juggling
and come up with what I have here. Or something like it.
anaconda | 35 ++++++++++++++++-------------------
1 files changed, 16 insertions(+), 19 deletions(-)
- # now determine if we're going to run in GUI or TUI mode
- # if no X server, we have to use text mode
- if anaconda.displayMode == 'g' and not flags.livecdInstall
- and not iutil.isS390()
- and not os.access("/usr/bin/Xorg", os.X_OK):
- stdoutLog.warning(_("Graphical installation is not available. "
- "Starting text mode."))
- anaconda.displayMode = 't'
- # s390/iSeries checks
- if anaconda.isHeadless and anaconda.displayMode == "g" and not
- (flags.preexisting_x11 or flags.usevnc):
+ # Should we try to start Xorg?
+ want_x = anaconda.displayMode == 'g' and
+ not (flags.preexisting_x11 or flags.usevnc)
+ # X on a headless (e.g. s390) system? Nonsense!
+ if want_x and anaconda.isHeadless:
stdoutLog.warning(_("DISPLAY variable not set. Starting text mode."))
anaconda.displayMode = 't'
graphical_failed = 1
+ want_x = False
+ # Is Xorg is actually available?
+ if want_x and not os.access("/usr/bin/Xorg", os.X_OK):
+ stdoutLog.warning(_("Graphical installation is not available. "
+ "Starting text mode."))
+ anaconda.displayMode = 't'
+ want_x = False
- # if DISPLAY not set either vnc server failed to start or we're not
- # running on a redirected X display, so start local X server
- if anaconda.displayMode == 'g' and not flags.preexisting_x11 and
- not flags.usevnc:
+ if want_x:
# The following code depends on no SIGCHLD being delivered,
# possibly only except the one from a failing X.org. Thus
# make sure before entering this section that all the other
Anaconda-devel-list mailing list