All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] terminal.py: No --disable-factory for gnome-terminal >= 3.10
@ 2015-02-23 19:39 Sven Ebenfeld
  2015-02-25  9:46 ` Paul Eggleton
  0 siblings, 1 reply; 3+ messages in thread
From: Sven Ebenfeld @ 2015-02-23 19:39 UTC (permalink / raw)
  To: openembedded-core

--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@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
 
 def distro_name():
     try:
-- 
1.9.3



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] terminal.py: No --disable-factory for gnome-terminal >= 3.10
  2015-02-23 19:39 [PATCH v2] terminal.py: No --disable-factory for gnome-terminal >= 3.10 Sven Ebenfeld
@ 2015-02-25  9:46 ` Paul Eggleton
  2015-02-25 10:13   ` Paul Eggleton
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Eggleton @ 2015-02-25  9:46 UTC (permalink / raw)
  To: Sven Ebenfeld; +Cc: openembedded-core

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@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.

Cheers,
Paul


-- 

Paul Eggleton
Intel Open Source Technology Centre


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] terminal.py: No --disable-factory for gnome-terminal >= 3.10
  2015-02-25  9:46 ` Paul Eggleton
@ 2015-02-25 10:13   ` Paul Eggleton
  0 siblings, 0 replies; 3+ messages in thread
From: Paul Eggleton @ 2015-02-25 10:13 UTC (permalink / raw)
  To: Sven Ebenfeld; +Cc: openembedded-core

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@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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-02-25 10:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-23 19:39 [PATCH v2] terminal.py: No --disable-factory for gnome-terminal >= 3.10 Sven Ebenfeld
2015-02-25  9:46 ` Paul Eggleton
2015-02-25 10:13   ` Paul Eggleton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.