diff mbox

[RfC] gtk: switch to gtk3 by default, depricate gtk2.

Message ID 1467901660-9054-1-git-send-email-kraxel@redhat.com
State New
Headers show

Commit Message

Gerd Hoffmann July 7, 2016, 2:27 p.m. UTC
This patch drops gtk version detection.  gtk3 is used unless you
explicitly ask for gtk2.  Additionally configure prints an error
message in case it finds gtk2 but not gtk3.

Old behavior:
  only gtk3 installed     -- use gtk3
  both gtk2+3 installed   -- use gtk2
  only gtk2 installed     -- use gtk2
  no gtk installed at all -- build without gtk ui

New behavior:
  only gtk3 installed     -- use gtk3
  both gtk2+3 installed   -- use gtk3
  only gtk2 installed     -- error out
  no gtk installed at all -- build without gtk ui

It is still possible to build with gtk2, but you have to explicitly
ask for it using --with-gtkabi=2.0.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 configure | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

Comments

Daniel P. Berrangé July 7, 2016, 2:32 p.m. UTC | #1
On Thu, Jul 07, 2016 at 04:27:40PM +0200, Gerd Hoffmann wrote:
> This patch drops gtk version detection.  gtk3 is used unless you
> explicitly ask for gtk2.  Additionally configure prints an error
> message in case it finds gtk2 but not gtk3.
> 
> Old behavior:
>   only gtk3 installed     -- use gtk3
>   both gtk2+3 installed   -- use gtk2
>   only gtk2 installed     -- use gtk2
>   no gtk installed at all -- build without gtk ui
> 
> New behavior:
>   only gtk3 installed     -- use gtk3
>   both gtk2+3 installed   -- use gtk3
>   only gtk2 installed     -- error out
>   no gtk installed at all -- build without gtk ui
> 
> It is still possible to build with gtk2, but you have to explicitly
> ask for it using --with-gtkabi=2.0.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  configure | 22 ++++++++++++++--------
>  1 file changed, 14 insertions(+), 8 deletions(-)
> 
> diff --git a/configure b/configure
> index e9090a0..af49eed 100755
> --- a/configure
> +++ b/configure
> @@ -2154,14 +2154,20 @@ fi
>  # GTK probe
>  
>  if test "$gtkabi" = ""; then
> -    # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
> -    # Use 3.0 as a fallback if that is available.
> -    if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
> -        gtkabi=2.0
> -    elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
> -        gtkabi=3.0
> -    else
> -        gtkabi=2.0
> +    gtkabi=3.0
> +    if !$pkg_config --exists "gtk+-3.0 >= 3.0.0" &&
> +       $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
> +        echo ""
> +        echo "ERROR: gtk3 not found, gtk2 is present though."
> +        echo ""
> +        echo "We strongly recomment to install the gtk3 devel packages and"
> +        echo "build qemu with gtk3.  gtk2 support is depricated and will be"

s/depricated/deprecated/

> +        echo "dropped (removal scheduled for 2018)."
> +        echo ""
> +        echo "If it is really your intention to build qemu with gtk2 re-run"
> +        echo "configure with --with-gtkabi=2.0."
> +        echo ""
> +        exit 1
>      fi
>  fi

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


Regards,
Daniel
Peter Maydell July 7, 2016, 2:52 p.m. UTC | #2
On 7 July 2016 at 15:27, Gerd Hoffmann <kraxel@redhat.com> wrote:
> This patch drops gtk version detection.  gtk3 is used unless you
> explicitly ask for gtk2.  Additionally configure prints an error
> message in case it finds gtk2 but not gtk3.
>
> Old behavior:
>   only gtk3 installed     -- use gtk3
>   both gtk2+3 installed   -- use gtk2
>   only gtk2 installed     -- use gtk2
>   no gtk installed at all -- build without gtk ui
>
> New behavior:
>   only gtk3 installed     -- use gtk3
>   both gtk2+3 installed   -- use gtk3
>   only gtk2 installed     -- error out
>   no gtk installed at all -- build without gtk ui
>
> It is still possible to build with gtk2, but you have to explicitly
> ask for it using --with-gtkabi=2.0.
>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  configure | 22 ++++++++++++++--------
>  1 file changed, 14 insertions(+), 8 deletions(-)
>
> diff --git a/configure b/configure
> index e9090a0..af49eed 100755
> --- a/configure
> +++ b/configure
> @@ -2154,14 +2154,20 @@ fi
>  # GTK probe
>
>  if test "$gtkabi" = ""; then
> -    # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
> -    # Use 3.0 as a fallback if that is available.
> -    if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
> -        gtkabi=2.0
> -    elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
> -        gtkabi=3.0
> -    else
> -        gtkabi=2.0
> +    gtkabi=3.0
> +    if !$pkg_config --exists "gtk+-3.0 >= 3.0.0" &&
> +       $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
> +        echo ""
> +        echo "ERROR: gtk3 not found, gtk2 is present though."
> +        echo ""
> +        echo "We strongly recomment to install the gtk3 devel packages and"

"recommend"

> +        echo "build qemu with gtk3.  gtk2 support is depricated and will be"
> +        echo "dropped (removal scheduled for 2018)."
> +        echo ""
> +        echo "If it is really your intention to build qemu with gtk2 re-run"
> +        echo "configure with --with-gtkabi=2.0."
> +        echo ""
> +        exit 1
>      fi
>  fi

I'm not really convinced that we should do this, though. Generally
configure should just work with what you have, unless you specifically
use options to ask it for a feature.

thanks
-- PMM
Daniel P. Berrangé July 7, 2016, 3:04 p.m. UTC | #3
On Thu, Jul 07, 2016 at 03:52:20PM +0100, Peter Maydell wrote:
> On 7 July 2016 at 15:27, Gerd Hoffmann <kraxel@redhat.com> wrote:
> > This patch drops gtk version detection.  gtk3 is used unless you
> > explicitly ask for gtk2.  Additionally configure prints an error
> > message in case it finds gtk2 but not gtk3.
> >
> > Old behavior:
> >   only gtk3 installed     -- use gtk3
> >   both gtk2+3 installed   -- use gtk2
> >   only gtk2 installed     -- use gtk2
> >   no gtk installed at all -- build without gtk ui
> >
> > New behavior:
> >   only gtk3 installed     -- use gtk3
> >   both gtk2+3 installed   -- use gtk3
> >   only gtk2 installed     -- error out
> >   no gtk installed at all -- build without gtk ui
> >
> > It is still possible to build with gtk2, but you have to explicitly
> > ask for it using --with-gtkabi=2.0.
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > ---
> >  configure | 22 ++++++++++++++--------
> >  1 file changed, 14 insertions(+), 8 deletions(-)
> >
> > diff --git a/configure b/configure
> > index e9090a0..af49eed 100755
> > --- a/configure
> > +++ b/configure
> > @@ -2154,14 +2154,20 @@ fi
> >  # GTK probe
> >
> >  if test "$gtkabi" = ""; then
> > -    # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
> > -    # Use 3.0 as a fallback if that is available.
> > -    if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
> > -        gtkabi=2.0
> > -    elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
> > -        gtkabi=3.0
> > -    else
> > -        gtkabi=2.0
> > +    gtkabi=3.0
> > +    if !$pkg_config --exists "gtk+-3.0 >= 3.0.0" &&
> > +       $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
> > +        echo ""
> > +        echo "ERROR: gtk3 not found, gtk2 is present though."
> > +        echo ""
> > +        echo "We strongly recomment to install the gtk3 devel packages and"
> 
> "recommend"
> 
> > +        echo "build qemu with gtk3.  gtk2 support is depricated and will be"
> > +        echo "dropped (removal scheduled for 2018)."
> > +        echo ""
> > +        echo "If it is really your intention to build qemu with gtk2 re-run"
> > +        echo "configure with --with-gtkabi=2.0."
> > +        echo ""
> > +        exit 1
> >      fi
> >  fi
> 
> I'm not really convinced that we should do this, though. Generally
> configure should just work with what you have, unless you specifically
> use options to ask it for a feature.

We could just print the message and then set  gtk=no instead of 'exit 1'


Regards,
Daniel
Gerd Hoffmann July 7, 2016, 3:42 p.m. UTC | #4
Hi,

> > > +        echo "If it is really your intention to build qemu with gtk2 re-run"
> > > +        echo "configure with --with-gtkabi=2.0."
> > > +        echo ""
> > > +        exit 1
> > >      fi
> > >  fi
> > 
> > I'm not really convinced that we should do this, though. Generally
> > configure should just work with what you have, unless you specifically
> > use options to ask it for a feature.

In general yes.  But our plan is to remove gtk2 support.  And I think it
is better to do this in two steps:  First stop using it by default, with
gtk2 support still being available as backup plan in case there are
regressions[1] when people switch over to gtk3.  Second actually
removing gtk2 support.

My main intention here is to catch cases where people build with gtk2
more or less by accident, something like package build dependencies not
being updated from gtk2 to gtk3 because qemu never demanded it.

> We could just print the message and then set  gtk=no instead of 'exit 1'

Fine with me too.

But in that case people will probably notice it later, when they run
qemu and figure the gtk ui is gone.  Not sure this is better than a
straight build failure.  But at least they should easily find the
warning in the build logs when the start digging why gtk is gone.

cheers,
  Gerd

[1] Not that I expect many problems given that fedora and probably other
    distros too build with gtk3 for a while already.
diff mbox

Patch

diff --git a/configure b/configure
index e9090a0..af49eed 100755
--- a/configure
+++ b/configure
@@ -2154,14 +2154,20 @@  fi
 # GTK probe
 
 if test "$gtkabi" = ""; then
-    # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
-    # Use 3.0 as a fallback if that is available.
-    if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
-        gtkabi=2.0
-    elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
-        gtkabi=3.0
-    else
-        gtkabi=2.0
+    gtkabi=3.0
+    if !$pkg_config --exists "gtk+-3.0 >= 3.0.0" &&
+       $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
+        echo ""
+        echo "ERROR: gtk3 not found, gtk2 is present though."
+        echo ""
+        echo "We strongly recomment to install the gtk3 devel packages and"
+        echo "build qemu with gtk3.  gtk2 support is depricated and will be"
+        echo "dropped (removal scheduled for 2018)."
+        echo ""
+        echo "If it is really your intention to build qemu with gtk2 re-run"
+        echo "configure with --with-gtkabi=2.0."
+        echo ""
+        exit 1
     fi
 fi