[OE-core] [PATCH v2] terminal.py: No --disable-factory for gnome-terminal >= 3.10
Paul Eggleton
paul.eggleton at linux.intel.com
Wed Feb 25 10:13:44 UTC 2015
On Wednesday 25 February 2015 09:46:07 Paul Eggleton wrote:
> Hi Sven,
>
> On Monday 23 February 2015 20:39:41 Sven Ebenfeld wrote:
> > --disable-factory has been disabled in earlier versions of gnome-terminal
> > but from version 3.10 it raises an error and quits. This makes devshell
> > unusable with gnome-terminal >= 3.10. This patch checks for the version
> > and
> > removes --disable-factory if you have the terminal version 3.10 or higher.
> >
> > Signed-off-by: Sven Ebenfeld <sven.ebenfeld at gmail.com>
> > ---
> >
> > meta/lib/oe/terminal.py | 30 ++++++++++++++++++++++--------
> > 1 file changed, 22 insertions(+), 8 deletions(-)
> >
> > diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py
> > index 54e3ffc..01c0ccc 100644
> > --- a/meta/lib/oe/terminal.py
> > +++ b/meta/lib/oe/terminal.py
> >
> > @@ -55,6 +55,14 @@ class Gnome(XTerminal):
> > command = 'gnome-terminal -t "{title}" --disable-factory -x
> > {command}'
> > priority = 2
> >
> > + def __init__(self, sh_cmd, title=None, env=None, d=None):
> > + # Check version
> > + (major, minor) = check_terminal_version("gnome-terminal")
> > + if major >= 3 and minor >= 10:
> > + logger.warn(1, 'Gnome-Terminal >3.10 does not support
> > --disable-factory') + self.command = 'gnome-terminal -t
> > "{title}" -x {command}' + XTerminal.__init__(self, sh_cmd, title,
> > env, d)
> > +
> >
> > class Mate(XTerminal):
> > command = 'mate-terminal -t "{title}" -x {command}'
> > priority = 2
> >
> > @@ -73,11 +81,10 @@ class Konsole(XTerminal):
> > def __init__(self, sh_cmd, title=None, env=None, d=None):
> > # Check version
> >
> > - vernum = check_konsole_version("konsole")
> > - if vernum:
> > - if vernum.split('.')[0] == "2":
> > - logger.debug(1, 'Konsole from KDE 4.x will not work as
> > devshell, skipping') - raise UnsupportedTerminal(self.name)
> > + (major, minor) = check_terminal_version("konsole")
> > + if major == 2:
> > + logger.debug(1, 'Konsole from KDE 4.x will not work as
> > devshell, skipping') + raise UnsupportedTerminal(self.name)
> >
> > XTerminal.__init__(self, sh_cmd, title, env, d)
> >
> > class XTerm(XTerminal):
> > @@ -219,10 +226,10 @@ def check_tmux_pane_size(tmux):
> > return True
> >
> > return False
> >
> > -def check_konsole_version(konsole):
> >
> > +def check_terminal_version(terminalName):
> > import subprocess as sub
> >
> > try:
> > - p = sub.Popen(['sh', '-c', '%s --version' %
> > konsole],stdout=sub.PIPE,stderr=sub.PIPE) + p = sub.Popen(['sh',
> > '-c', '%s --version' % terminalName],stdout=sub.PIPE,stderr=sub.PIPE) out,
> > err = p.communicate()
> >
> > ver_info = out.rstrip().split('\n')
> >
> > except OSError as exc:
> > @@ -232,10 +239,17 @@ def check_konsole_version(konsole):
> > else:
> > raise
> >
> > vernum = None
> >
> > + major = int(0)
> > + minor = int(0)
> >
> > for ver in ver_info:
> > if ver.startswith('Konsole'):
> > vernum = ver.split(' ')[-1]
> >
> > - return vernum
> > + if ver.startswith('GNOME Terminal'):
> > + vernum = ver.split(' ')[-1]
> > + if vernum:
> > + major = int(vernum.split('.')[0])
> > + minor = int(vernum.split('.')[1])
> > + return major, minor
>
> Obviously we needed the other part, but this API change means that we no
> longer get the full version when there are more than two parts (e.g. the
> current version of konsole on my system is 2.4.12), and it will blow up in
> the case when the version does not contain '.' or contains non-integer
> parts e.g. "3.4-beta". These might not be immediate problems but they may
> be in future.
>
> I'd honestly rather we keep this as a string; if we need to do comparisons
> we can use distutils.version.LooseVersion(). I can send a fix for this
> along with a fix for Konsole 2.x which seems to be able to work now.
Sorry, I should have CC'd Ross since he advised you to do the split within the
function.
Another couple of issues I noticed:
1) This added tabs in python code - please don't add these
2) We don't want this to show a warning when launching gnome-terminal 3.10+
and logger.warn() doesn't take an integer first parameter in any case
(logger.debug() does)
I'm fixing these as well.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the Openembedded-core
mailing list