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 <[email protected]> > > --- > > > > 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 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
