[OE-core] [PATCH v2] terminal: Open a new window instead of split on older tmux versions (<1.9)

Aws Ismail aws.ismail at gmail.com
Wed Nov 11 23:09:17 UTC 2015


I verified this does work under tmux v1.8 with latest poky jethro.

On Fri, Nov 6, 2015 at 6:25 PM,
<leonardo.sandoval.gonzalez at linux.intel.com> wrote:
> From: Leonardo Sandoval <leonardo.sandoval.gonzalez at linux.intel.com>
>
> 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 at linux.intel.com>
> ---
>  meta/lib/oe/terminal.py |   20 +++++++++++++++-----
>  1 file changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py
> index 52a8913..a4a8c97 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():
> --
> 1.7.10.4
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list