[PATCH 09/26] configure, meson: convert vte detection to meson

Paolo Bonzini posted 22 patches 4 years, 8 months ago
[PATCH 09/26] configure, meson: convert vte detection to meson
Posted by Paolo Bonzini 4 years, 8 months ago
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 35 ++++-------------------------------
 meson.build       | 22 ++++++++++++++++------
 meson_options.txt |  2 ++
 3 files changed, 22 insertions(+), 37 deletions(-)

diff --git a/configure b/configure
index 9a6217a3bf..d3351557e9 100755
--- a/configure
+++ b/configure
@@ -408,7 +408,7 @@ gnutls="auto"
 nettle="auto"
 gcrypt="auto"
 auth_pam="auto"
-vte="$default_feature"
+vte="auto"
 virglrenderer="$default_feature"
 tpm="$default_feature"
 libssh="$default_feature"
@@ -1395,9 +1395,9 @@ for opt do
   ;;
   --disable-pvrdma) pvrdma="no"
   ;;
-  --disable-vte) vte="no"
+  --disable-vte) vte="disabled"
   ;;
-  --enable-vte) vte="yes"
+  --enable-vte) vte="enabled"
   ;;
   --disable-virglrenderer) virglrenderer="no"
   ;;
@@ -2799,28 +2799,6 @@ EOF
   fi
 fi
 
-##########################################
-# VTE probe
-
-if test "$vte" != "no"; then
-    vteminversion="0.32.0"
-    if $pkg_config --exists "vte-2.91"; then
-      vtepackage="vte-2.91"
-    else
-      vtepackage="vte-2.90"
-    fi
-    if $pkg_config --exists "$vtepackage >= $vteminversion"; then
-        vte_cflags=$($pkg_config --cflags $vtepackage)
-        vte_libs=$($pkg_config --libs $vtepackage)
-        vteversion=$($pkg_config --modversion $vtepackage)
-        vte="yes"
-    elif test "$vte" = "yes"; then
-        feature_not_found "vte" "Install libvte-2.90/2.91 devel"
-    else
-        vte="no"
-    fi
-fi
-
 ##########################################
 # RDMA needs OpenFabrics libraries
 if test "$rdma" != "no" ; then
@@ -5486,11 +5464,6 @@ fi
 if test "$have_copy_file_range" = "yes" ; then
     echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
 fi
-if test "$vte" = "yes" ; then
-  echo "CONFIG_VTE=y" >> $config_host_mak
-  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
-  echo "VTE_LIBS=$vte_libs" >> $config_host_mak
-fi
 if test "$virglrenderer" = "yes" ; then
   echo "CONFIG_VIRGL=y" >> $config_host_mak
   echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
@@ -6154,7 +6127,7 @@ if test "$skip_meson" = no; then
         -Dkvm=$kvm -Dhax=$hax -Dwhpx=$whpx -Dhvf=$hvf -Dnvmm=$nvmm \
         -Dxen=$xen -Dxen_pci_passthrough=$xen_pci_passthrough -Dtcg=$tcg \
         -Dcocoa=$cocoa -Dgtk=$gtk -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
-        -Dlibusb=$libusb -Dsmartcard=$smartcard -Dusb_redir=$usb_redir \
+        -Dlibusb=$libusb -Dsmartcard=$smartcard -Dusb_redir=$usb_redir -Dvte=$vte \
         -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
         -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
diff --git a/meson.build b/meson.build
index ae40bdf7c4..f3af9ee3cf 100644
--- a/meson.build
+++ b/meson.build
@@ -860,6 +860,7 @@ endif
 
 gtk = not_found
 gtkx11 = not_found
+vte = not_found
 if not get_option('gtk').auto() or (have_system and not cocoa.found())
   gtk = dependency('gtk+-3.0', version: '>=3.22.0',
                    method: 'pkg-config',
@@ -871,14 +872,22 @@ if not get_option('gtk').auto() or (have_system and not cocoa.found())
                         required: false,
                         kwargs: static_kwargs)
     gtk = declare_dependency(dependencies: [gtk, gtkx11])
+
+    if not get_option('vte').auto() or have_system
+      vte = dependency('vte-2.91', version: '>=0.32.0',
+                       method: 'pkg-config',
+                       required: get_option('vte'),
+                       kwargs: static_kwargs)
+      if not vte.found()
+        vte = dependency('vte-2.90', version: '>=0.32.0',
+                         method: 'pkg-config',
+                         required: get_option('vte'),
+                         kwargs: static_kwargs)
+      endif
+    endif
   endif
 endif
 
-vte = not_found
-if 'CONFIG_VTE' in config_host
-  vte = declare_dependency(compile_args: config_host['VTE_CFLAGS'].split(),
-                           link_args: config_host['VTE_LIBS'].split())
-endif
 x11 = not_found
 if gtkx11.found()
   x11 = dependency('x11', method: 'pkg-config', required: gtkx11.found(),
@@ -1207,6 +1216,7 @@ if glusterfs.found()
   config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
 endif
 config_host_data.set('CONFIG_GTK', gtk.found())
+config_host_data.set('CONFIG_VTE', vte.found())
 config_host_data.set('CONFIG_LIBATTR', have_old_libattr)
 config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found())
 config_host_data.set('CONFIG_EBPF', libbpf.found())
@@ -2764,7 +2774,7 @@ summary_info += {'SDL image support': sdl_image.found()}
 summary_info += {'GTK support':       gtk.found()}
 summary_info += {'pixman':            pixman.found()}
 # TODO: add back version
-summary_info += {'VTE support':       config_host.has_key('CONFIG_VTE')}
+summary_info += {'VTE support':       vte.found()}
 # TODO: add back version
 summary_info += {'slirp support':     slirp_opt == 'disabled' ? false : slirp_opt}
 summary_info += {'libtasn1':          tasn1.found()}
diff --git a/meson_options.txt b/meson_options.txt
index f7ec9bee27..8af42987f4 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -118,6 +118,8 @@ option('vnc_png', type : 'feature', value : 'auto',
        description: 'PNG compression for VNC server')
 option('vnc_sasl', type : 'feature', value : 'auto',
        description: 'SASL authentication for VNC server')
+option('vte', type : 'feature', value : 'auto',
+       description: 'vte support for the gtk UI')
 option('xkbcommon', type : 'feature', value : 'auto',
        description: 'xkbcommon support')
 option('zstd', type : 'feature', value : 'auto',
-- 
2.31.1



Re: [PATCH 09/26] configure, meson: convert vte detection to meson
Posted by Daniel P. Berrangé 4 years, 7 months ago
On Tue, Jun 08, 2021 at 01:22:44PM +0200, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 35 ++++-------------------------------
>  meson.build       | 22 ++++++++++++++++------
>  meson_options.txt |  2 ++
>  3 files changed, 22 insertions(+), 37 deletions(-)

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

> @@ -871,14 +872,22 @@ if not get_option('gtk').auto() or (have_system and not cocoa.found())
>                          required: false,
>                          kwargs: static_kwargs)
>      gtk = declare_dependency(dependencies: [gtk, gtkx11])
> +
> +    if not get_option('vte').auto() or have_system
> +      vte = dependency('vte-2.91', version: '>=0.32.0',
> +                       method: 'pkg-config',
> +                       required: get_option('vte'),
> +                       kwargs: static_kwargs)
> +      if not vte.found()
> +        vte = dependency('vte-2.90', version: '>=0.32.0',
> +                         method: 'pkg-config',
> +                         required: get_option('vte'),
> +                         kwargs: static_kwargs)
> +      endif

The old configure checks didn't have a version number How did you
decide on 0.32 ?  This version number doesn't make a whole lot of
sense to me in the way it is used.

vte changes from ABI 2.90 to 2.91 in release 0.37, so you'll never
get a version less than that with vte-2.91 IIUC.

Meanwhile all our supported distros ship 2.91 API now AFAICT, so we
don't need the 2.90 code at all.

I'd suggest dropping vte-2.90 in the configure script first, and then
doing a simpler meson conversion.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH 09/26] configure, meson: convert vte detection to meson
Posted by Paolo Bonzini 4 years, 7 months ago
On 15/06/21 16:24, Daniel P. Berrangé wrote:
>> +    if not get_option('vte').auto() or have_system
>> +      vte = dependency('vte-2.91', version: '>=0.32.0',
>> +                       method: 'pkg-config',
>> +                       required: get_option('vte'),
>> +                       kwargs: static_kwargs)
>> +      if not vte.found()
>> +        vte = dependency('vte-2.90', version: '>=0.32.0',
>> +                         method: 'pkg-config',
>> +                         required: get_option('vte'),
>> +                         kwargs: static_kwargs)
>> +      endif
> The old configure checks didn't have a version number How did you
> decide on 0.32 ?  This version number doesn't make a whole lot of
> sense to me in the way it is used.
> 
> vte changes from ABI 2.90 to 2.91 in release 0.37, so you'll never
> get a version less than that with vte-2.91 IIUC.
> 
> Meanwhile all our supported distros ship 2.91 API now AFAICT, so we
> don't need the 2.90 code at all.

It did:

> -    vteminversion="0.32.0"
> -    if $pkg_config --exists "vte-2.91"; then
> -      vtepackage="vte-2.91"
> -    else
> -      vtepackage="vte-2.90"
> -    fi
> -    if $pkg_config --exists "$vtepackage >= $vteminversion"; then

but I will remove the check if that's doable.

Paolo