summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/terminal.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oe/terminal.py')
-rw-r--r--meta/lib/oe/terminal.py22
1 files changed, 11 insertions, 11 deletions
diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py
index 30e8f92004..352a28239a 100644
--- a/meta/lib/oe/terminal.py
+++ b/meta/lib/oe/terminal.py
@@ -27,7 +27,7 @@ class Registry(oe.classutils.ClassRegistry):
27class Terminal(Popen): 27class Terminal(Popen):
28 __metaclass__ = Registry 28 __metaclass__ = Registry
29 29
30 def __init__(self, sh_cmd, title=None, env=None): 30 def __init__(self, sh_cmd, title=None, env=None, d=None):
31 fmt_sh_cmd = self.format_command(sh_cmd, title) 31 fmt_sh_cmd = self.format_command(sh_cmd, title)
32 try: 32 try:
33 Popen.__init__(self, fmt_sh_cmd, env=env) 33 Popen.__init__(self, fmt_sh_cmd, env=env)
@@ -46,7 +46,7 @@ class Terminal(Popen):
46 return [element.format(**fmt) for element in self.command] 46 return [element.format(**fmt) for element in self.command]
47 47
48class XTerminal(Terminal): 48class XTerminal(Terminal):
49 def __init__(self, sh_cmd, title=None, env=None): 49 def __init__(self, sh_cmd, title=None, env=None, d=None):
50 Terminal.__init__(self, sh_cmd, title, env) 50 Terminal.__init__(self, sh_cmd, title, env)
51 if not os.environ.get('DISPLAY'): 51 if not os.environ.get('DISPLAY'):
52 raise UnsupportedTerminal(self.name) 52 raise UnsupportedTerminal(self.name)
@@ -59,7 +59,7 @@ class Xfce(XTerminal):
59 command = 'Terminal -T "{title}" -e "{command}"' 59 command = 'Terminal -T "{title}" -e "{command}"'
60 priority = 2 60 priority = 2
61 61
62 def __init__(self, command, title=None, env=None): 62 def __init__(self, command, title=None, env=None, d=None):
63 # Upstream binary name is Terminal but Debian/Ubuntu use 63 # Upstream binary name is Terminal but Debian/Ubuntu use
64 # xfce4-terminal to avoid possible(?) conflicts 64 # xfce4-terminal to avoid possible(?) conflicts
65 distro = distro_name() 65 distro = distro_name()
@@ -67,20 +67,20 @@ class Xfce(XTerminal):
67 cmd = 'xfce4-terminal -T "{title}" -e "{command}"' 67 cmd = 'xfce4-terminal -T "{title}" -e "{command}"'
68 else: 68 else:
69 cmd = command 69 cmd = command
70 XTerminal.__init__(self, cmd, title, env) 70 XTerminal.__init__(self, cmd, title, env, d)
71 71
72class Konsole(XTerminal): 72class Konsole(XTerminal):
73 command = 'konsole -T "{title}" -e {command}' 73 command = 'konsole -T "{title}" -e {command}'
74 priority = 2 74 priority = 2
75 75
76 def __init__(self, sh_cmd, title=None, env=None): 76 def __init__(self, sh_cmd, title=None, env=None, d=None):
77 # Check version 77 # Check version
78 vernum = check_konsole_version("konsole") 78 vernum = check_konsole_version("konsole")
79 if vernum: 79 if vernum:
80 if vernum.split('.')[0] == "2": 80 if vernum.split('.')[0] == "2":
81 logger.debug(1, 'Konsole from KDE 4.x will not work as devshell, skipping') 81 logger.debug(1, 'Konsole from KDE 4.x will not work as devshell, skipping')
82 raise UnsupportedTerminal(self.name) 82 raise UnsupportedTerminal(self.name)
83 XTerminal.__init__(self, sh_cmd, title, env) 83 XTerminal.__init__(self, sh_cmd, title, env, d)
84 84
85class XTerm(XTerminal): 85class XTerm(XTerminal):
86 command = 'xterm -T "{title}" -e {command}' 86 command = 'xterm -T "{title}" -e {command}'
@@ -93,7 +93,7 @@ class Rxvt(XTerminal):
93class Screen(Terminal): 93class Screen(Terminal):
94 command = 'screen -D -m -t "{title}" -S devshell {command}' 94 command = 'screen -D -m -t "{title}" -S devshell {command}'
95 95
96 def __init__(self, sh_cmd, title=None, env=None): 96 def __init__(self, sh_cmd, title=None, env=None, d=None):
97 s_id = "devshell_%i" % os.getpid() 97 s_id = "devshell_%i" % os.getpid()
98 self.command = "screen -D -m -t \"{title}\" -S %s {command}" % s_id 98 self.command = "screen -D -m -t \"{title}\" -S %s {command}" % s_id
99 Terminal.__init__(self, sh_cmd, title, env) 99 Terminal.__init__(self, sh_cmd, title, env)
@@ -104,18 +104,18 @@ class Screen(Terminal):
104def prioritized(): 104def prioritized():
105 return Registry.prioritized() 105 return Registry.prioritized()
106 106
107def spawn_preferred(sh_cmd, title=None, env=None): 107def spawn_preferred(sh_cmd, title=None, env=None, d=None):
108 """Spawn the first supported terminal, by priority""" 108 """Spawn the first supported terminal, by priority"""
109 for terminal in prioritized(): 109 for terminal in prioritized():
110 try: 110 try:
111 spawn(terminal.name, sh_cmd, title, env) 111 spawn(terminal.name, sh_cmd, title, env, d)
112 break 112 break
113 except UnsupportedTerminal: 113 except UnsupportedTerminal:
114 continue 114 continue
115 else: 115 else:
116 raise NoSupportedTerminals() 116 raise NoSupportedTerminals()
117 117
118def spawn(name, sh_cmd, title=None, env=None): 118def spawn(name, sh_cmd, title=None, env=None, d=None):
119 """Spawn the specified terminal, by name""" 119 """Spawn the specified terminal, by name"""
120 logger.debug(1, 'Attempting to spawn terminal "%s"', name) 120 logger.debug(1, 'Attempting to spawn terminal "%s"', name)
121 try: 121 try:
@@ -123,7 +123,7 @@ def spawn(name, sh_cmd, title=None, env=None):
123 except KeyError: 123 except KeyError:
124 raise UnsupportedTerminal(name) 124 raise UnsupportedTerminal(name)
125 125
126 pipe = terminal(sh_cmd, title, env) 126 pipe = terminal(sh_cmd, title, env, d)
127 output = pipe.communicate()[0] 127 output = pipe.communicate()[0]
128 if pipe.returncode != 0: 128 if pipe.returncode != 0:
129 raise ExecutionError(sh_cmd, pipe.returncode, output) 129 raise ExecutionError(sh_cmd, pipe.returncode, output)