diff options
author | Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> | 2015-11-06 17:25:08 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-11-25 07:56:56 +0000 |
commit | 457bd6297ae99627c5f596c3c09086d787d5a5ab (patch) | |
tree | b1c82d76ee0daa53244848ce7296975a9bc750b8 /meta/lib | |
parent | 04810bf36720240cf0e1b8ba2cb1bba16b2ccac8 (diff) | |
download | openembedded-core-contrib-457bd6297ae99627c5f596c3c09086d787d5a5ab.tar.gz |
terminal: Open a new window instead of split on older tmux versions (<1.9)
If an old version is detected (<1.9), create a new window instead of split:
the reason is that there is no easy way to get the active pane height if no
nested formats are supported.
Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oe/terminal.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py index 52a891388af..a4a8c970222 100644 --- a/meta/lib/oe/terminal.py +++ b/meta/lib/oe/terminal.py @@ -131,7 +131,7 @@ class TmuxRunning(Terminal): raise UnsupportedTerminal('tmux is not running') if not check_tmux_pane_size('tmux'): - raise UnsupportedTerminal('tmux pane too small') + raise UnsupportedTerminal('tmux pane too small or tmux < 1.9 version is being used') Terminal.__init__(self, sh_cmd, title, env, d) @@ -218,6 +218,12 @@ def spawn(name, sh_cmd, title=None, env=None, d=None): def check_tmux_pane_size(tmux): import subprocess as sub + # On older tmux versions (<1.9), return false. The reason + # is that there is no easy way to get the height of the active panel + # on current window without nested formats (available from version 1.9) + vernum = check_terminal_version("tmux") + if vernum and LooseVersion(vernum) < '1.9': + return False try: p = sub.Popen('%s list-panes -F "#{?pane_active,#{pane_height},}"' % tmux, shell=True,stdout=sub.PIPE,stderr=sub.PIPE) @@ -229,14 +235,16 @@ def check_tmux_pane_size(tmux): return None else: raise - if size/2 >= 19: - return True - return False + + return size/2 >= 19 def check_terminal_version(terminalName): import subprocess as sub try: - p = sub.Popen(['sh', '-c', '%s --version' % terminalName],stdout=sub.PIPE,stderr=sub.PIPE) + cmdversion = '%s --version' % terminalName + if terminalName.startswith('tmux'): + cmdversion = '%s -V' % terminalName + p = sub.Popen(['sh', '-c', cmdversion], stdout=sub.PIPE,stderr=sub.PIPE) out, err = p.communicate() ver_info = out.rstrip().split('\n') except OSError as exc: @@ -251,6 +259,8 @@ def check_terminal_version(terminalName): vernum = ver.split(' ')[-1] if ver.startswith('GNOME Terminal'): vernum = ver.split(' ')[-1] + if ver.startswith('tmux'): + vernum = ver.split()[-1] return vernum def distro_name(): |