diff options
Diffstat (limited to 'meta/classes/terminal.bbclass')
| -rw-r--r-- | meta/classes/terminal.bbclass | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/meta/classes/terminal.bbclass b/meta/classes/terminal.bbclass index e577c6d594..a27e10c6ec 100644 --- a/meta/classes/terminal.bbclass +++ b/meta/classes/terminal.bbclass @@ -1,25 +1,27 @@ OE_TERMINAL ?= 'auto' OE_TERMINAL[type] = 'choice' OE_TERMINAL[choices] = 'auto none \ - ${@" ".join(o.name \ - for o in oe.terminal.prioritized())}' + ${@oe_terminal_prioritized()}' -OE_TERMINAL_EXPORTS += 'EXTRA_OEMAKE' +OE_TERMINAL_EXPORTS += 'EXTRA_OEMAKE CACHED_CONFIGUREVARS CONFIGUREOPTS EXTRA_OECONF' OE_TERMINAL_EXPORTS[type] = 'list' XAUTHORITY ?= "${HOME}/.Xauthority" SHELL ?= "bash" +def oe_terminal_prioritized(): + import oe.terminal + return " ".join(o.name for o in oe.terminal.prioritized()) def emit_terminal_func(command, envdata, d): cmd_func = 'do_terminal' envdata.setVar(cmd_func, 'exec ' + command) - envdata.setVarFlag(cmd_func, 'func', 1) + envdata.setVarFlag(cmd_func, 'func', '1') - runfmt = d.getVar('BB_RUNFMT', True) or "run.{func}.{pid}" + runfmt = d.getVar('BB_RUNFMT') or "run.{func}.{pid}" runfile = runfmt.format(func=cmd_func, task=cmd_func, taskfunc=cmd_func, pid=os.getpid()) - runfile = os.path.join(d.getVar('T', True), runfile) + runfile = os.path.join(d.getVar('T'), runfile) bb.utils.mkdirhier(os.path.dirname(runfile)) with open(runfile, 'w') as script: @@ -27,7 +29,7 @@ def emit_terminal_func(command, envdata, d): bb.data.emit_func(cmd_func, script, envdata) script.write(cmd_func) script.write("\n") - os.chmod(runfile, 0755) + os.chmod(runfile, 0o755) return runfile @@ -39,14 +41,14 @@ def oe_terminal(command, title, d): for v in os.environ: envdata.setVar(v, os.environ[v]) - envdata.setVarFlag(v, 'export', 1) + envdata.setVarFlag(v, 'export', '1') for export in oe.data.typed_value('OE_TERMINAL_EXPORTS', d): - value = d.getVar(export, True) + value = d.getVar(export) if value is not None: os.environ[export] = str(value) envdata.setVar(export, str(value)) - envdata.setVarFlag(export, 'export', 1) + envdata.setVarFlag(export, 'export', '1') if export == "PSEUDO_DISABLED": if "PSEUDO_UNLOAD" in os.environ: del os.environ["PSEUDO_UNLOAD"] @@ -58,11 +60,16 @@ def oe_terminal(command, title, d): for key in origbbenv: if key in envdata: continue - value = origbbenv.getVar(key, True) + value = origbbenv.getVar(key) if value is not None: os.environ[key] = str(value) envdata.setVar(key, str(value)) - envdata.setVarFlag(key, 'export', 1) + envdata.setVarFlag(key, 'export', '1') + + # Use original PATH as a fallback + path = d.getVar('PATH') + ":" + origbbenv.getVar('PATH') + os.environ['PATH'] = path + envdata.setVar('PATH', path) # A complex PS1 might need more escaping of chars. # Lets not export PS1 instead. @@ -86,8 +93,12 @@ def oe_terminal(command, title, d): try: oe.terminal.spawn_preferred(command, title, None, d) - except oe.terminal.NoSupportedTerminals: - bb.fatal('No valid terminal found, unable to open devshell') + except oe.terminal.NoSupportedTerminals as nosup: + nosup.terms.remove("false") + cmds = '\n\t'.join(nosup.terms).replace("{command}", + "do_terminal").replace("{title}", title) + bb.fatal('No valid terminal found, unable to open devshell.\n' + + 'Tried the following commands:\n\t%s' % cmds) except oe.terminal.ExecutionError as exc: bb.fatal('Unable to spawn terminal %s: %s' % (terminal, exc)) |
