Currently the environment handling for terminals is inconsistent. There are two fixes here: a) Ensure the environment is setup before all oe.terminal call b) Actually set the environment before the spawn calls since we need variables like DISPLAY when the commands are being executed, not just within the terminal environment. If this doesn't happen, DISPLAY can end up not set with the errors that brings with it when trying to run X commands. (From OE-Core rev: 6b680c8da02017bdb17a4826f1819fe0e5f68652) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
42 lines
1.4 KiB
Text
42 lines
1.4 KiB
Text
OE_TERMINAL ?= 'auto'
|
|
OE_TERMINAL[type] = 'choice'
|
|
OE_TERMINAL[choices] = 'auto none \
|
|
${@" ".join(o.name \
|
|
for o in oe.terminal.prioritized())}'
|
|
|
|
OE_TERMINAL_EXPORTS = 'XAUTHORITY SHELL DBUS_SESSION_BUS_ADDRESS DISPLAY EXTRA_OEMAKE'
|
|
OE_TERMINAL_EXPORTS[type] = 'list'
|
|
|
|
XAUTHORITY ?= "${HOME}/.Xauthority"
|
|
SHELL ?= "bash"
|
|
|
|
|
|
def oe_terminal(command, title, d):
|
|
import oe.data
|
|
import oe.terminal
|
|
|
|
for export in oe.data.typed_value('OE_TERMINAL_EXPORTS', d):
|
|
value = d.getVar(export, True)
|
|
if value is not None:
|
|
os.environ[export] = str(value)
|
|
|
|
terminal = oe.data.typed_value('OE_TERMINAL', d).lower()
|
|
if terminal == 'none':
|
|
bb.fatal('Devshell usage disabled with OE_TERMINAL')
|
|
elif terminal != 'auto':
|
|
try:
|
|
oe.terminal.spawn(terminal, command, title)
|
|
return
|
|
except oe.terminal.UnsupportedTerminal:
|
|
bb.warn('Unsupported terminal "%s", defaulting to "auto"' %
|
|
terminal)
|
|
except oe.terminal.ExecutionError as exc:
|
|
bb.fatal('Unable to spawn terminal %s: %s' % (terminal, exc))
|
|
|
|
try:
|
|
oe.terminal.spawn_preferred(command, title)
|
|
except oe.terminal.NoSupportedTerminals:
|
|
bb.fatal('No valid terminal found, unable to open devshell')
|
|
except oe.terminal.ExecutionError as exc:
|
|
bb.fatal('Unable to spawn terminal %s: %s' % (terminal, exc))
|