All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/22] meson: move detection of various libraries to meson.build
@ 2020-12-17  9:40 Paolo Bonzini
  2020-12-17  9:40 ` [PATCH 01/18] brlapi: convert to meson Paolo Bonzini
                   ` (17 more replies)
  0 siblings, 18 replies; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Not particularly interesting except for the diffstat and for the removal of
curl compatibility code.

I am sending this in preparation for another RFC around automatically
parsing configure command line options.  This uses Meson build option
introspection data in order to parse --enable and --disable options
that have been converted to Meson.  With a larger number of such options,
the advantages should be more apparent.

Based-on: <20201216162006.433850-1-pbonzini@redhat.com>

Paolo Bonzini (18):
  brlapi: convert to meson
  curl: remove compatibility code, require 7.29.0
  curl: convert to meson
  glusterfs: convert to meson
  bzip2: convert to meson
  libiscsi: convert to meson
  libnfs: convert to meson
  libssh: convert to meson
  rbd: convert to meson
  lzo: convert to meson
  snappy: convert to meson
  lzfse: convert to meson
  zstd: convert to meson
  seccomp: convert to meson
  virtfs: convert to meson
  cap_ng: convert to meson
  libattr: convert to meson
  meson.build: convert --with-default-devices to meson

 block/curl.c                        |  28 --
 block/meson.build                   |   2 +-
 chardev/meson.build                 |   2 +-
 configure                           | 593 +++-------------------------
 contrib/elf2dmp/meson.build         |   2 +-
 contrib/vhost-user-scsi/meson.build |   2 +-
 meson.build                         | 325 ++++++++++++---
 meson_options.txt                   |  43 +-
 migration/meson.build               |   2 +-
 softmmu/meson.build                 |   2 +-
 softmmu/qemu-seccomp.c              |   2 -
 tools/meson.build                   |   6 +-
 12 files changed, 370 insertions(+), 639 deletions(-)

-- 
2.29.2



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

* [PATCH 01/18] brlapi: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 11:35   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 02/18] curl: remove compatibility code, require 7.29.0 Paolo Bonzini
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 chardev/meson.build |  2 +-
 configure           | 32 ++++----------------------------
 meson.build         | 20 +++++++++++++++++---
 meson_options.txt   |  2 ++
 4 files changed, 24 insertions(+), 32 deletions(-)

diff --git a/chardev/meson.build b/chardev/meson.build
index 4e19722c5e..32377af383 100644
--- a/chardev/meson.build
+++ b/chardev/meson.build
@@ -29,7 +29,7 @@ softmmu_ss.add(files('msmouse.c', 'wctablet.c', 'testdev.c'))
 
 chardev_modules = {}
 
-if config_host.has_key('CONFIG_BRLAPI')
+if brlapi.found()
   module_ss = ss.source_set()
   module_ss.add(when: [brlapi], if_true: [files('baum.c'), pixman])
   chardev_modules += { 'baum': module_ss }
diff --git a/configure b/configure
index 74eebfd692..42b39544d4 100755
--- a/configure
+++ b/configure
@@ -306,7 +306,7 @@ for opt do
   esac
 done
 
-brlapi="$default_feature"
+brlapi="auto"
 curl="$default_feature"
 iconv="auto"
 curses="auto"
@@ -1105,9 +1105,9 @@ for opt do
   ;;
   --enable-xen-pci-passthrough) xen_pci_passthrough="enabled"
   ;;
-  --disable-brlapi) brlapi="no"
+  --disable-brlapi) brlapi="disabled"
   ;;
-  --enable-brlapi) brlapi="yes"
+  --enable-brlapi) brlapi="enabled"
   ;;
   --disable-kvm) kvm="disabled"
   ;;
@@ -3425,26 +3425,6 @@ for drv in $audio_drv_list; do
     esac
 done
 
-##########################################
-# BrlAPI probe
-
-if test "$brlapi" != "no" ; then
-  brlapi_libs="-lbrlapi"
-  cat > $TMPC << EOF
-#include <brlapi.h>
-#include <stddef.h>
-int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
-EOF
-  if compile_prog "" "$brlapi_libs" ; then
-    brlapi=yes
-  else
-    if test "$brlapi" = "yes" ; then
-      feature_not_found "brlapi" "Install brlapi devel"
-    fi
-    brlapi=no
-  fi
-fi
-
 ##########################################
 # curl probe
 if test "$curl" != "no" ; then
@@ -6134,10 +6114,6 @@ if test "$curl" = "yes" ; then
   echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
   echo "CURL_LIBS=$curl_libs" >> $config_host_mak
 fi
-if test "$brlapi" = "yes" ; then
-  echo "CONFIG_BRLAPI=y" >> $config_host_mak
-  echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
-fi
 if test "$gtk" = "yes" ; then
   echo "CONFIG_GTK=y" >> $config_host_mak
   echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
@@ -6971,7 +6947,7 @@ NINJA=$ninja $meson setup \
         -Dcocoa=$cocoa -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
         -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 \
+        -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
diff --git a/meson.build b/meson.build
index bb198f792a..70f81121d7 100644
--- a/meson.build
+++ b/meson.build
@@ -570,8 +570,21 @@ if have_system and not get_option('curses').disabled()
 endif
 
 brlapi = not_found
-if 'CONFIG_BRLAPI' in config_host
-  brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
+if not get_option('brlapi').auto() or have_system
+  brlapi = cc.find_library('brlapi', has_headers: ['brlapi.h'],
+                         required: get_option('brlapi'),
+                         static: enable_static)
+  if brlapi.found() and not cc.links('''
+     #include <brlapi.h>
+     #include <stddef.h>
+     int main(void) { return brlapi__openConnection (NULL, NULL, NULL); }''', dependencies: brlapi)
+    brlapi = not_found
+    if get_option('brlapi').enabled()
+      error('could not link brlapi')
+    else
+      warning('could not link brlapi, disabling')
+    endif
+  endif
 endif
 
 sdl = not_found
@@ -854,6 +867,7 @@ config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR', get_option('prefix') /
 config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / qemu_moddir)
 config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_option('sysconfdir'))
 
+config_host_data.set('CONFIG_BRLAPI', brlapi.found())
 config_host_data.set('CONFIG_COCOA', cocoa.found())
 config_host_data.set('CONFIG_LIBUDEV', libudev.found())
 config_host_data.set('CONFIG_MPATH', mpathpersist.found())
@@ -2164,7 +2178,7 @@ summary_info += {'xen support':       config_host.has_key('CONFIG_XEN_BACKEND')}
 if config_host.has_key('CONFIG_XEN_BACKEND')
   summary_info += {'xen ctrl version':  config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
 endif
-summary_info += {'brlapi support':    config_host.has_key('CONFIG_BRLAPI')}
+summary_info += {'brlapi support':    brlapi.found()}
 summary_info += {'Documentation':     build_docs}
 summary_info += {'PIE':               get_option('b_pie')}
 summary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
diff --git a/meson_options.txt b/meson_options.txt
index 242e0769fb..62efe96a91 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -40,6 +40,8 @@ option('cfi', type: 'boolean', value: 'false',
 option('cfi_debug', type: 'boolean', value: 'false',
        description: 'Verbose errors in case of CFI violation')
 
+option('brlapi', type : 'feature', value : 'auto',
+       description: 'brlapi character device driver')
 option('cocoa', type : 'feature', value : 'auto',
        description: 'Cocoa user interface (macOS only)')
 option('mpath', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 02/18] curl: remove compatibility code, require 7.29.0
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
  2020-12-17  9:40 ` [PATCH 01/18] brlapi: convert to meson Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 10:08   ` Daniel P. Berrangé
  2020-12-17 11:48   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 03/18] curl: convert to meson Paolo Bonzini
                   ` (15 subsequent siblings)
  17 siblings, 2 replies; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel Berrangé

cURL 7.16.0 was released in October 2006.  Just remove code that is
in all likelihood not being used anywhere, and require the oldest version
found in currently supported distros, which is 7.29.0 from CentOS 7.

pkg-config is enough for QEMU, since it does not need extra information
such as the path for certicate authorities.  All supported platforms
today will all have pkg-config for curl, so we can drop curl-config.

Suggested-by: Daniel Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/curl.c | 28 ----------------------------
 configure    |  9 ++-------
 2 files changed, 2 insertions(+), 35 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index d24a4c5897..4ff895df8f 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -37,26 +37,6 @@
 
 // #define DEBUG_VERBOSE
 
-#if LIBCURL_VERSION_NUM >= 0x071000
-/* The multi interface timer callback was introduced in 7.16.0 */
-#define NEED_CURL_TIMER_CALLBACK
-#define HAVE_SOCKET_ACTION
-#endif
-
-#ifndef HAVE_SOCKET_ACTION
-/* If curl_multi_socket_action isn't available, define it statically here in
- * terms of curl_multi_socket. Note that ev_bitmask will be ignored, which is
- * less efficient but still safe. */
-static CURLMcode __curl_multi_socket_action(CURLM *multi_handle,
-                                            curl_socket_t sockfd,
-                                            int ev_bitmask,
-                                            int *running_handles)
-{
-    return curl_multi_socket(multi_handle, sockfd, running_handles);
-}
-#define curl_multi_socket_action __curl_multi_socket_action
-#endif
-
 #define PROTOCOLS (CURLPROTO_HTTP | CURLPROTO_HTTPS | \
                    CURLPROTO_FTP | CURLPROTO_FTPS)
 
@@ -140,7 +120,6 @@ typedef struct BDRVCURLState {
 static void curl_clean_state(CURLState *s);
 static void curl_multi_do(void *arg);
 
-#ifdef NEED_CURL_TIMER_CALLBACK
 /* Called from curl_multi_do_locked, with s->mutex held.  */
 static int curl_timer_cb(CURLM *multi, long timeout_ms, void *opaque)
 {
@@ -156,7 +135,6 @@ static int curl_timer_cb(CURLM *multi, long timeout_ms, void *opaque)
     }
     return 0;
 }
-#endif
 
 /* Called from curl_multi_do_locked, with s->mutex held.  */
 static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
@@ -433,7 +411,6 @@ static void curl_multi_do(void *arg)
 
 static void curl_multi_timeout_do(void *arg)
 {
-#ifdef NEED_CURL_TIMER_CALLBACK
     BDRVCURLState *s = (BDRVCURLState *)arg;
     int running;
 
@@ -446,9 +423,6 @@ static void curl_multi_timeout_do(void *arg)
 
     curl_multi_check_completion(s);
     qemu_mutex_unlock(&s->mutex);
-#else
-    abort();
-#endif
 }
 
 /* Called with s->mutex held.  */
@@ -598,10 +572,8 @@ static void curl_attach_aio_context(BlockDriverState *bs,
     s->multi = curl_multi_init();
     s->aio_context = new_context;
     curl_multi_setopt(s->multi, CURLMOPT_SOCKETFUNCTION, curl_sock_cb);
-#ifdef NEED_CURL_TIMER_CALLBACK
     curl_multi_setopt(s->multi, CURLMOPT_TIMERDATA, s);
     curl_multi_setopt(s->multi, CURLMOPT_TIMERFUNCTION, curl_timer_cb);
-#endif
 }
 
 static QemuOptsList runtime_opts = {
diff --git a/configure b/configure
index 42b39544d4..c0a3e1556b 100755
--- a/configure
+++ b/configure
@@ -3428,17 +3428,12 @@ done
 ##########################################
 # curl probe
 if test "$curl" != "no" ; then
-  if $pkg_config libcurl --exists; then
-    curlconfig="$pkg_config libcurl"
-  else
-    curlconfig=curl-config
-  fi
   cat > $TMPC << EOF
 #include <curl/curl.h>
 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
 EOF
-  curl_cflags=$($curlconfig --cflags 2>/dev/null)
-  curl_libs=$($curlconfig --libs 2>/dev/null)
+  curl_cflags=$($pkg_config libcurl --cflags 2>/dev/null)
+  curl_libs=$($pkg_config libcurl --libs 2>/dev/null)
   if compile_prog "$curl_cflags" "$curl_libs" ; then
     curl=yes
   else
-- 
2.29.2




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

* [PATCH 03/18] curl: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
  2020-12-17  9:40 ` [PATCH 01/18] brlapi: convert to meson Paolo Bonzini
  2020-12-17  9:40 ` [PATCH 02/18] curl: remove compatibility code, require 7.29.0 Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 10:11   ` Daniel P. Berrangé
  2020-12-17 11:59   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 04/18] glusterfs: " Paolo Bonzini
                   ` (14 subsequent siblings)
  17 siblings, 2 replies; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure                   | 31 ++++---------------------------
 contrib/elf2dmp/meson.build |  2 +-
 meson.build                 | 11 +++++++----
 meson_options.txt           |  2 ++
 4 files changed, 14 insertions(+), 32 deletions(-)

diff --git a/configure b/configure
index c0a3e1556b..71196b1fe7 100755
--- a/configure
+++ b/configure
@@ -307,7 +307,7 @@ for opt do
 done
 
 brlapi="auto"
-curl="$default_feature"
+curl="auto"
 iconv="auto"
 curses="auto"
 docs="auto"
@@ -1216,9 +1216,9 @@ for opt do
   ;;
   --enable-iconv) iconv="enabled"
   ;;
-  --disable-curl) curl="no"
+  --disable-curl) curl="disabled"
   ;;
-  --enable-curl) curl="yes"
+  --enable-curl) curl="enabled"
   ;;
   --disable-fdt) fdt="disabled"
   ;;
@@ -3425,25 +3425,6 @@ for drv in $audio_drv_list; do
     esac
 done
 
-##########################################
-# curl probe
-if test "$curl" != "no" ; then
-  cat > $TMPC << EOF
-#include <curl/curl.h>
-int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
-EOF
-  curl_cflags=$($pkg_config libcurl --cflags 2>/dev/null)
-  curl_libs=$($pkg_config libcurl --libs 2>/dev/null)
-  if compile_prog "$curl_cflags" "$curl_libs" ; then
-    curl=yes
-  else
-    if test "$curl" = "yes" ; then
-      feature_not_found "curl" "Install libcurl devel"
-    fi
-    curl=no
-  fi
-fi # test "$curl"
-
 ##########################################
 # glib support probe
 
@@ -6104,11 +6085,6 @@ fi
 if test "$bswap_h" = "yes" ; then
   echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
 fi
-if test "$curl" = "yes" ; then
-  echo "CONFIG_CURL=y" >> $config_host_mak
-  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
-  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
-fi
 if test "$gtk" = "yes" ; then
   echo "CONFIG_GTK=y" >> $config_host_mak
   echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
@@ -6943,6 +6919,7 @@ NINJA=$ninja $meson setup \
         -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 \
+        -Dcurl=$curl \
         -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
diff --git a/contrib/elf2dmp/meson.build b/contrib/elf2dmp/meson.build
index b3de173316..4d86cb390a 100644
--- a/contrib/elf2dmp/meson.build
+++ b/contrib/elf2dmp/meson.build
@@ -1,4 +1,4 @@
-if 'CONFIG_CURL' in config_host
+if curl.found()
   executable('elf2dmp', files('main.c', 'addrspace.c', 'download.c', 'pdb.c', 'qemu_elf.c'),
              dependencies: [glib, curl],
              install: true)
diff --git a/meson.build b/meson.build
index 70f81121d7..83dbc61acd 100644
--- a/meson.build
+++ b/meson.build
@@ -392,9 +392,11 @@ if 'CONFIG_VIRGL' in config_host
                              link_args: config_host['VIRGL_LIBS'].split())
 endif
 curl = not_found
-if 'CONFIG_CURL' in config_host
-  curl = declare_dependency(compile_args: config_host['CURL_CFLAGS'].split(),
-                            link_args: config_host['CURL_LIBS'].split())
+if not get_option('curl').auto() or have_block
+  curl = dependency('libcurl', version: '>=7.29.0',
+                    method: 'pkg-config',
+                    required: get_option('curl'),
+                    static: enable_static)
 endif
 libudev = not_found
 if targetos == 'linux' and (have_system or have_tools)
@@ -872,6 +874,7 @@ config_host_data.set('CONFIG_COCOA', cocoa.found())
 config_host_data.set('CONFIG_LIBUDEV', libudev.found())
 config_host_data.set('CONFIG_MPATH', mpathpersist.found())
 config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
+config_host_data.set('CONFIG_CURL', curl.found())
 config_host_data.set('CONFIG_CURSES', curses.found())
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
@@ -2160,7 +2163,7 @@ summary_info += {'iconv support':     iconv.found()}
 summary_info += {'curses support':    curses.found()}
 # TODO: add back version
 summary_info += {'virgl support':     config_host.has_key('CONFIG_VIRGL')}
-summary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
+summary_info += {'curl support':      curl.found()}
 summary_info += {'mingw32 support':   targetos == 'windows'}
 summary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
 summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
diff --git a/meson_options.txt b/meson_options.txt
index 62efe96a91..2b845ac62b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -44,6 +44,8 @@ option('brlapi', type : 'feature', value : 'auto',
        description: 'brlapi character device driver')
 option('cocoa', type : 'feature', value : 'auto',
        description: 'Cocoa user interface (macOS only)')
+option('curl', type : 'feature', value : 'auto',
+       description: 'CURL block device driver')
 option('mpath', type : 'feature', value : 'auto',
        description: 'Multipath persistent reservation passthrough')
 option('iconv', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 04/18] glusterfs: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (2 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 03/18] curl: convert to meson Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:15   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 05/18] bzip2: " Paolo Bonzini
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 102 ++--------------------------------------------
 meson.build       |  46 +++++++++++++++++++--
 meson_options.txt |   2 +
 3 files changed, 48 insertions(+), 102 deletions(-)

diff --git a/configure b/configure
index 71196b1fe7..5529ac4b32 100755
--- a/configure
+++ b/configure
@@ -415,13 +415,7 @@ crypto_afalg="no"
 cfi="false"
 cfi_debug="false"
 seccomp="$default_feature"
-glusterfs="$default_feature"
-glusterfs_xlator_opt="no"
-glusterfs_discard="no"
-glusterfs_fallocate="no"
-glusterfs_zerofill="no"
-glusterfs_ftruncate_has_stat="no"
-glusterfs_iocb_has_stat="no"
+glusterfs="auto"
 gtk="$default_feature"
 gtk_gl="no"
 tls_priority="NORMAL"
@@ -1366,7 +1360,7 @@ for opt do
   ;;
   --disable-seccomp) seccomp="no"
   ;;
-  --disable-glusterfs) glusterfs="no"
+  --disable-glusterfs) glusterfs="disabled"
   ;;
   --disable-avx2) avx2_opt="no"
   ;;
@@ -1377,7 +1371,7 @@ for opt do
   --enable-avx512f) avx512f_opt="yes"
   ;;
 
-  --enable-glusterfs) glusterfs="yes"
+  --enable-glusterfs) glusterfs="enabled"
   ;;
   --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
       echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
@@ -3871,64 +3865,6 @@ if test "$libxml2" != "no" ; then
     fi
 fi
 
-##########################################
-# glusterfs probe
-if test "$glusterfs" != "no" ; then
-  if $pkg_config --atleast-version=3 glusterfs-api; then
-    glusterfs="yes"
-    glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
-    glusterfs_libs=$($pkg_config --libs glusterfs-api)
-    if $pkg_config --atleast-version=4 glusterfs-api; then
-      glusterfs_xlator_opt="yes"
-    fi
-    if $pkg_config --atleast-version=5 glusterfs-api; then
-      glusterfs_discard="yes"
-    fi
-    if $pkg_config --atleast-version=6 glusterfs-api; then
-      glusterfs_fallocate="yes"
-      glusterfs_zerofill="yes"
-    fi
-    cat > $TMPC << EOF
-#include <glusterfs/api/glfs.h>
-
-int
-main(void)
-{
-	/* new glfs_ftruncate() passes two additional args */
-	return glfs_ftruncate(NULL, 0, NULL, NULL);
-}
-EOF
-    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
-      glusterfs_ftruncate_has_stat="yes"
-    fi
-    cat > $TMPC << EOF
-#include <glusterfs/api/glfs.h>
-
-/* new glfs_io_cbk() passes two additional glfs_stat structs */
-static void
-glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
-{}
-
-int
-main(void)
-{
-	glfs_io_cbk iocb = &glusterfs_iocb;
-	iocb(NULL, 0 , NULL, NULL, NULL);
-	return 0;
-}
-EOF
-    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
-      glusterfs_iocb_has_stat="yes"
-    fi
-  else
-    if test "$glusterfs" = "yes" ; then
-      feature_not_found "GlusterFS backend support" \
-          "Install glusterfs-api devel >= 3"
-    fi
-    glusterfs="no"
-  fi
-fi
-
 # Check for inotify functions when we are building linux-user
 # emulator.  This is done because older glibc versions don't
 # have syscall stubs for these implemented.  In that case we
@@ -6415,36 +6351,6 @@ if test "$getauxval" = "yes" ; then
   echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
 fi
 
-if test "$glusterfs" = "yes" ; then
-  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
-  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
-  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
-fi
-
-if test "$glusterfs_xlator_opt" = "yes" ; then
-  echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_discard" = "yes" ; then
-  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_fallocate" = "yes" ; then
-  echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_zerofill" = "yes" ; then
-  echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
-  echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
-fi
-
-if test "$glusterfs_iocb_has_stat" = "yes" ; then
-  echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
-fi
-
 if test "$libssh" = "yes" ; then
   echo "CONFIG_LIBSSH=y" >> $config_host_mak
   echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
@@ -6919,7 +6825,7 @@ NINJA=$ninja $meson setup \
         -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 \
-        -Dcurl=$curl \
+        -Dcurl=$curl -Dglusterfs=$glusterfs \
         -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
diff --git a/meson.build b/meson.build
index 83dbc61acd..409b958a7f 100644
--- a/meson.build
+++ b/meson.build
@@ -613,9 +613,40 @@ if 'CONFIG_RBD' in config_host
   rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
 endif
 glusterfs = not_found
-if 'CONFIG_GLUSTERFS' in config_host
-  glusterfs = declare_dependency(compile_args: config_host['GLUSTERFS_CFLAGS'].split(),
-                                 link_args: config_host['GLUSTERFS_LIBS'].split())
+glusterfs_ftruncate_has_stat = false
+glusterfs_iocb_has_stat = false
+if not get_option('glusterfs').auto() or have_block
+  glusterfs = dependency('glusterfs-api', version: '>=3',
+                         required: get_option('glusterfs'),
+                         method: 'pkg-config', static: enable_static)
+  if glusterfs.found()
+    glusterfs_ftruncate_has_stat = cc.links('''
+      #include <glusterfs/api/glfs.h>
+
+      int
+      main(void)
+      {
+          /* new glfs_ftruncate() passes two additional args */
+          return glfs_ftruncate(NULL, 0, NULL, NULL);
+      }
+    ''', dependencies: glusterfs)
+    glusterfs_iocb_has_stat = cc.links('''
+      #include <glusterfs/api/glfs.h>
+
+      /* new glfs_io_cbk() passes two additional glfs_stat structs */
+      static void
+      glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
+      {}
+
+      int
+      main(void)
+      {
+          glfs_io_cbk iocb = &glusterfs_iocb;
+          iocb(NULL, 0 , NULL, NULL, NULL);
+          return 0;
+      }
+    ''', dependencies: glusterfs)
+  endif
 endif
 libssh = not_found
 if 'CONFIG_LIBSSH' in config_host
@@ -876,6 +907,13 @@ config_host_data.set('CONFIG_MPATH', mpathpersist.found())
 config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
 config_host_data.set('CONFIG_CURL', curl.found())
 config_host_data.set('CONFIG_CURSES', curses.found())
+config_host_data.set('CONFIG_GLUSTERFS', glusterfs.found())
+config_host_data.set('CONFIG_GLUSTERFS_XLATOR_OPT', glusterfs.version().version_compare('>=4'))
+config_host_data.set('CONFIG_GLUSTERFS_DISCARD', glusterfs.version().version_compare('>=5'))
+config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE', glusterfs.version().version_compare('>=6'))
+config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL', glusterfs.version().version_compare('>=6'))
+config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
+config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
@@ -2252,7 +2290,7 @@ summary_info += {'coroutine pool':    config_host['CONFIG_COROUTINE_POOL'] == '1
 summary_info += {'debug stack usage': config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
 summary_info += {'mutex debugging':   config_host.has_key('CONFIG_DEBUG_MUTEX')}
 summary_info += {'crypto afalg':      config_host.has_key('CONFIG_AF_ALG')}
-summary_info += {'GlusterFS support': config_host.has_key('CONFIG_GLUSTERFS')}
+summary_info += {'GlusterFS support': glusterfs.found()}
 summary_info += {'gcov':              get_option('b_coverage')}
 summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
 summary_info += {'libssh support':    config_host.has_key('CONFIG_LIBSSH')}
diff --git a/meson_options.txt b/meson_options.txt
index 2b845ac62b..b5d84bb88b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -46,6 +46,8 @@ option('cocoa', type : 'feature', value : 'auto',
        description: 'Cocoa user interface (macOS only)')
 option('curl', type : 'feature', value : 'auto',
        description: 'CURL block device driver')
+option('glusterfs', type : 'feature', value : 'auto',
+       description: 'Glusterfs block device driver')
 option('mpath', type : 'feature', value : 'auto',
        description: 'Multipath persistent reservation passthrough')
 option('iconv', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 05/18] bzip2: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (3 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 04/18] glusterfs: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:24   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 06/18] libiscsi: " Paolo Bonzini
                   ` (12 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 31 ++++---------------------------
 meson.build       | 18 +++++++++++++++---
 meson_options.txt |  2 ++
 3 files changed, 21 insertions(+), 30 deletions(-)

diff --git a/configure b/configure
index 5529ac4b32..082ac3bf35 100755
--- a/configure
+++ b/configure
@@ -396,7 +396,7 @@ avx2_opt="$default_feature"
 capstone="auto"
 lzo="$default_feature"
 snappy="$default_feature"
-bzip2="$default_feature"
+bzip2="auto"
 lzfse="$default_feature"
 zstd="$default_feature"
 guest_agent="$default_feature"
@@ -1320,9 +1320,9 @@ for opt do
   ;;
   --enable-snappy) snappy="yes"
   ;;
-  --disable-bzip2) bzip2="no"
+  --disable-bzip2) bzip2="disabled"
   ;;
-  --enable-bzip2) bzip2="yes"
+  --enable-bzip2) bzip2="enabled"
   ;;
   --enable-lzfse) lzfse="yes"
   ;;
@@ -2496,24 +2496,6 @@ EOF
     fi
 fi
 
-##########################################
-# bzip2 check
-
-if test "$bzip2" != "no" ; then
-    cat > $TMPC << EOF
-#include <bzlib.h>
-int main(void) { BZ2_bzlibVersion(); return 0; }
-EOF
-    if compile_prog "" "-lbz2" ; then
-        bzip2="yes"
-    else
-        if test "$bzip2" = "yes"; then
-            feature_not_found "libbzip2" "Install libbzip2 devel"
-        fi
-        bzip2="no"
-    fi
-fi
-
 ##########################################
 # lzfse check
 
@@ -6238,11 +6220,6 @@ if test "$snappy" = "yes" ; then
   echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
 fi
 
-if test "$bzip2" = "yes" ; then
-  echo "CONFIG_BZIP2=y" >> $config_host_mak
-  echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
-fi
-
 if test "$lzfse" = "yes" ; then
   echo "CONFIG_LZFSE=y" >> $config_host_mak
   echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
@@ -6825,7 +6802,7 @@ NINJA=$ninja $meson setup \
         -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 \
-        -Dcurl=$curl -Dglusterfs=$glusterfs \
+        -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 \
         -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
diff --git a/meson.build b/meson.build
index 409b958a7f..9ba8eecf37 100644
--- a/meson.build
+++ b/meson.build
@@ -654,8 +654,20 @@ if 'CONFIG_LIBSSH' in config_host
                               link_args: config_host['LIBSSH_LIBS'].split())
 endif
 libbzip2 = not_found
-if 'CONFIG_BZIP2' in config_host
-  libbzip2 = declare_dependency(link_args: config_host['BZIP2_LIBS'].split())
+if not get_option('bzip2').auto() or have_block
+  libbzip2 = cc.find_library('bz2', has_headers: ['bzlib.h'],
+                             required: get_option('bzip2'),
+                             static: enable_static)
+  if libbzip2.found() and not cc.links('''
+     #include <bzlib.h>
+     int main(void) { BZ2_bzlibVersion(); return 0; }''', dependencies: libbzip2)
+    libbzip2 = not_found
+    if get_option('bzip2').enabled()
+      error('could not link libbzip2')
+    else
+      warning('could not link libbzip2, disabling')
+    endif
+  endif
 endif
 liblzfse = not_found
 if 'CONFIG_LZFSE' in config_host
@@ -2298,7 +2310,7 @@ summary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG
 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
 summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
 summary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
-summary_info += {'bzip2 support':     config_host.has_key('CONFIG_BZIP2')}
+summary_info += {'bzip2 support':     libbzip2.found()}
 summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
 summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
 summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
diff --git a/meson_options.txt b/meson_options.txt
index b5d84bb88b..fd16f3b399 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -42,6 +42,8 @@ option('cfi_debug', type: 'boolean', value: 'false',
 
 option('brlapi', type : 'feature', value : 'auto',
        description: 'brlapi character device driver')
+option('bzip2', type : 'feature', value : 'auto',
+       description: 'bzip2 support for DMG images')
 option('cocoa', type : 'feature', value : 'auto',
        description: 'Cocoa user interface (macOS only)')
 option('curl', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 06/18] libiscsi: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (4 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 05/18] bzip2: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:25   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 07/18] libnfs: " Paolo Bonzini
                   ` (11 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/meson.build                   |  2 +-
 configure                           | 29 ++++-------------------------
 contrib/vhost-user-scsi/meson.build |  2 +-
 meson.build                         | 10 ++++++----
 meson_options.txt                   |  2 ++
 5 files changed, 14 insertions(+), 31 deletions(-)

diff --git a/block/meson.build b/block/meson.build
index b02cb14aad..134034abb4 100644
--- a/block/meson.build
+++ b/block/meson.build
@@ -59,7 +59,7 @@ block_ss.add(when: 'CONFIG_QED', if_true: files(
 block_ss.add(when: [libxml2, 'CONFIG_PARALLELS'], if_true: files('parallels.c'))
 block_ss.add(when: 'CONFIG_WIN32', if_true: files('file-win32.c', 'win32-aio.c'))
 block_ss.add(when: 'CONFIG_POSIX', if_true: [files('file-posix.c'), coref, iokit])
-block_ss.add(when: 'CONFIG_LIBISCSI', if_true: files('iscsi-opts.c'))
+block_ss.add(when: libiscsi, if_true: files('iscsi-opts.c'))
 block_ss.add(when: 'CONFIG_LINUX', if_true: files('nvme.c'))
 block_ss.add(when: 'CONFIG_REPLICATION', if_true: files('replication.c'))
 block_ss.add(when: 'CONFIG_SHEEPDOG', if_true: files('sheepdog.c'))
diff --git a/configure b/configure
index 082ac3bf35..e22c56e8f6 100755
--- a/configure
+++ b/configure
@@ -406,7 +406,7 @@ guest_agent_msi="$default_feature"
 vss_win32_sdk="$default_feature"
 win_sdk="no"
 want_tools="$default_feature"
-libiscsi="$default_feature"
+libiscsi="auto"
 libnfs="$default_feature"
 coroutine=""
 coroutine_pool="$default_feature"
@@ -1139,9 +1139,9 @@ for opt do
   ;;
   --enable-spice) spice="yes"
   ;;
-  --disable-libiscsi) libiscsi="no"
+  --disable-libiscsi) libiscsi="disabled"
   ;;
-  --enable-libiscsi) libiscsi="yes"
+  --enable-libiscsi) libiscsi="enabled"
   ;;
   --disable-libnfs) libnfs="no"
   ;;
@@ -4315,21 +4315,6 @@ if compile_prog "" "" ; then
   bswap_h=yes
 fi
 
-##########################################
-# Do we have libiscsi >= 1.9.0
-if test "$libiscsi" != "no" ; then
-  if $pkg_config --atleast-version=1.9.0 libiscsi; then
-    libiscsi="yes"
-    libiscsi_cflags=$($pkg_config --cflags libiscsi)
-    libiscsi_libs=$($pkg_config --libs libiscsi)
-  else
-    if test "$libiscsi" = "yes" ; then
-      feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
-    fi
-    libiscsi="no"
-  fi
-fi
-
 ##########################################
 # Do we need librt
 # uClibc provides 2 versions of clock_gettime(), one with realtime
@@ -6231,12 +6216,6 @@ if test "$zstd" = "yes" ; then
   echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
 fi
 
-if test "$libiscsi" = "yes" ; then
-  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
-  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
-  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
-fi
-
 if test "$libnfs" = "yes" ; then
   echo "CONFIG_LIBNFS=y" >> $config_host_mak
   echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
@@ -6802,7 +6781,7 @@ NINJA=$ninja $meson setup \
         -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 \
-        -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 \
+        -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
diff --git a/contrib/vhost-user-scsi/meson.build b/contrib/vhost-user-scsi/meson.build
index 044c50bf43..cc893f6f20 100644
--- a/contrib/vhost-user-scsi/meson.build
+++ b/contrib/vhost-user-scsi/meson.build
@@ -1,4 +1,4 @@
-if 'CONFIG_LIBISCSI' in config_host
+if libiscsi.found()
   executable('vhost-user-scsi', files('vhost-user-scsi.c'),
              dependencies: [qemuutil, libiscsi, vhost_user],
              build_by_default: targetos == 'linux',
diff --git a/meson.build b/meson.build
index 9ba8eecf37..3f53a7f1b2 100644
--- a/meson.build
+++ b/meson.build
@@ -372,9 +372,10 @@ if 'CONFIG_PLUGIN' in config_host
   libdl = cc.find_library('dl', required: true)
 endif
 libiscsi = not_found
-if 'CONFIG_LIBISCSI' in config_host
-  libiscsi = declare_dependency(compile_args: config_host['LIBISCSI_CFLAGS'].split(),
-                                link_args: config_host['LIBISCSI_LIBS'].split())
+if not get_option('libiscsi').auto() or have_block
+  libiscsi = dependency('libiscsi', version: '>=1.9.0',
+                         required: get_option('libiscsi'),
+                         method: 'pkg-config', static: enable_static)
 endif
 zstd = not_found
 if 'CONFIG_ZSTD' in config_host
@@ -926,6 +927,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE', glusterfs.version().version_c
 config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL', glusterfs.version().version_compare('>=6'))
 config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
 config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
+config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
@@ -2283,7 +2285,7 @@ summary_info += {'libusb':            config_host.has_key('CONFIG_USB_LIBUSB')}
 summary_info += {'usb net redir':     config_host.has_key('CONFIG_USB_REDIR')}
 summary_info += {'OpenGL support':    config_host.has_key('CONFIG_OPENGL')}
 summary_info += {'OpenGL dmabufs':    config_host.has_key('CONFIG_OPENGL_DMABUF')}
-summary_info += {'libiscsi support':  config_host.has_key('CONFIG_LIBISCSI')}
+summary_info += {'libiscsi support':  libiscsi.found()}
 summary_info += {'libnfs support':    config_host.has_key('CONFIG_LIBNFS')}
 summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
 if targetos == 'windows'
diff --git a/meson_options.txt b/meson_options.txt
index fd16f3b399..b562d4f1a6 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -50,6 +50,8 @@ option('curl', type : 'feature', value : 'auto',
        description: 'CURL block device driver')
 option('glusterfs', type : 'feature', value : 'auto',
        description: 'Glusterfs block device driver')
+option('libiscsi', type : 'feature', value : 'auto',
+       description: 'libiscsi userspace initiator')
 option('mpath', type : 'feature', value : 'auto',
        description: 'Multipath persistent reservation passthrough')
 option('iconv', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 07/18] libnfs: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (5 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 06/18] libiscsi: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:26   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 08/18] libssh: " Paolo Bonzini
                   ` (10 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 27 ++++-----------------------
 meson.build       |  9 ++++++---
 meson_options.txt |  2 ++
 3 files changed, 12 insertions(+), 26 deletions(-)

diff --git a/configure b/configure
index e22c56e8f6..c404252b17 100755
--- a/configure
+++ b/configure
@@ -407,7 +407,7 @@ vss_win32_sdk="$default_feature"
 win_sdk="no"
 want_tools="$default_feature"
 libiscsi="auto"
-libnfs="$default_feature"
+libnfs="auto"
 coroutine=""
 coroutine_pool="$default_feature"
 debug_stack_usage="no"
@@ -1143,9 +1143,9 @@ for opt do
   ;;
   --enable-libiscsi) libiscsi="enabled"
   ;;
-  --disable-libnfs) libnfs="no"
+  --disable-libnfs) libnfs="disabled"
   ;;
-  --enable-libnfs) libnfs="yes"
+  --enable-libnfs) libnfs="enabled"
   ;;
   --enable-profiler) profiler="yes"
   ;;
@@ -5561,20 +5561,6 @@ if test "$have_ubsan" = "yes"; then
   QEMU_LDFLAGS="-fsanitize=undefined $QEMU_LDFLAGS"
 fi
 
-##########################################
-# Do we have libnfs
-if test "$libnfs" != "no" ; then
-  if $pkg_config --atleast-version=1.9.3 libnfs; then
-    libnfs="yes"
-    libnfs_libs=$($pkg_config --libs libnfs)
-  else
-    if test "$libnfs" = "yes" ; then
-      feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
-    fi
-    libnfs="no"
-  fi
-fi
-
 ##########################################
 
 # Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
@@ -6216,11 +6202,6 @@ if test "$zstd" = "yes" ; then
   echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
 fi
 
-if test "$libnfs" = "yes" ; then
-  echo "CONFIG_LIBNFS=y" >> $config_host_mak
-  echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
-fi
-
 if test "$seccomp" = "yes"; then
   echo "CONFIG_SECCOMP=y" >> $config_host_mak
   echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
@@ -6782,7 +6763,7 @@ NINJA=$ninja $meson setup \
         -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
-        -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
+        -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 3f53a7f1b2..0b8c9c5917 100644
--- a/meson.build
+++ b/meson.build
@@ -319,8 +319,10 @@ if 'CONFIG_LIBXML2' in config_host
                                link_args: config_host['LIBXML2_LIBS'].split())
 endif
 libnfs = not_found
-if 'CONFIG_LIBNFS' in config_host
-  libnfs = declare_dependency(link_args: config_host['LIBNFS_LIBS'].split())
+if not get_option('libnfs').auto() or have_block
+  libnfs = dependency('libnfs', version: '>=1.9.3',
+                      required: get_option('libnfs'),
+                      method: 'pkg-config', static: enable_static)
 endif
 libattr = not_found
 if 'CONFIG_ATTR' in config_host
@@ -928,6 +930,7 @@ config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL', glusterfs.version().version_co
 config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
 config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
 config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
+config_host_data.set('CONFIG_LIBNFS', libnfs.found())
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
@@ -2286,7 +2289,7 @@ summary_info += {'usb net redir':     config_host.has_key('CONFIG_USB_REDIR')}
 summary_info += {'OpenGL support':    config_host.has_key('CONFIG_OPENGL')}
 summary_info += {'OpenGL dmabufs':    config_host.has_key('CONFIG_OPENGL_DMABUF')}
 summary_info += {'libiscsi support':  libiscsi.found()}
-summary_info += {'libnfs support':    config_host.has_key('CONFIG_LIBNFS')}
+summary_info += {'libnfs support':    libnfs.found()}
 summary_info += {'build guest agent': config_host.has_key('CONFIG_GUEST_AGENT')}
 if targetos == 'windows'
   if 'WIN_SDK' in config_host
diff --git a/meson_options.txt b/meson_options.txt
index b562d4f1a6..4535bc4dc2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -52,6 +52,8 @@ option('glusterfs', type : 'feature', value : 'auto',
        description: 'Glusterfs block device driver')
 option('libiscsi', type : 'feature', value : 'auto',
        description: 'libiscsi userspace initiator')
+option('libnfs', type : 'feature', value : 'auto',
+       description: 'libnfs block device driver')
 option('mpath', type : 'feature', value : 'auto',
        description: 'Multipath persistent reservation passthrough')
 option('iconv', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 08/18] libssh: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (6 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 07/18] libnfs: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:35   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 09/18] rbd: " Paolo Bonzini
                   ` (9 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 45 ++++-----------------------------------------
 meson.build       | 18 ++++++++++++++----
 meson_options.txt |  2 ++
 3 files changed, 20 insertions(+), 45 deletions(-)

diff --git a/configure b/configure
index c404252b17..f3271381f1 100755
--- a/configure
+++ b/configure
@@ -430,7 +430,7 @@ auth_pam="$default_feature"
 vte="$default_feature"
 virglrenderer="$default_feature"
 tpm="$default_feature"
-libssh="$default_feature"
+libssh="auto"
 live_block_migration=${default_feature:-yes}
 numa="$default_feature"
 tcmalloc="no"
@@ -1424,9 +1424,9 @@ for opt do
   ;;
   --enable-tpm) tpm="yes"
   ;;
-  --disable-libssh) libssh="no"
+  --disable-libssh) libssh="disabled"
   ;;
-  --enable-libssh) libssh="yes"
+  --enable-libssh) libssh="enabled"
   ;;
   --disable-live-block-migration) live_block_migration="no"
   ;;
@@ -3630,38 +3630,6 @@ EOF
   fi
 fi
 
-##########################################
-# libssh probe
-if test "$libssh" != "no" ; then
-  if $pkg_config --exists libssh; then
-    libssh_cflags=$($pkg_config libssh --cflags)
-    libssh_libs=$($pkg_config libssh --libs)
-    libssh=yes
-  else
-    if test "$libssh" = "yes" ; then
-      error_exit "libssh required for --enable-libssh"
-    fi
-    libssh=no
-  fi
-fi
-
-##########################################
-# Check for libssh 0.8
-# This is done like this instead of using the LIBSSH_VERSION_* and
-# SSH_VERSION_* macros because some distributions in the past shipped
-# snapshots of the future 0.8 from Git, and those snapshots did not
-# have updated version numbers (still referring to 0.7.0).
-
-if test "$libssh" = "yes"; then
-  cat > $TMPC <<EOF
-#include <libssh/libssh.h>
-int main(void) { return ssh_get_server_publickey(NULL, NULL); }
-EOF
-  if compile_prog "$libssh_cflags" "$libssh_libs"; then
-    libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags"
-  fi
-fi
-
 ##########################################
 # linux-aio probe
 
@@ -6288,12 +6256,6 @@ if test "$getauxval" = "yes" ; then
   echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
 fi
 
-if test "$libssh" = "yes" ; then
-  echo "CONFIG_LIBSSH=y" >> $config_host_mak
-  echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
-  echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
-fi
-
 if test "$live_block_migration" = "yes" ; then
   echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
 fi
@@ -6764,6 +6726,7 @@ NINJA=$ninja $meson setup \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
+        -Dlibssh=$libssh \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 0b8c9c5917..2d6660aa46 100644
--- a/meson.build
+++ b/meson.build
@@ -652,9 +652,17 @@ if not get_option('glusterfs').auto() or have_block
   endif
 endif
 libssh = not_found
-if 'CONFIG_LIBSSH' in config_host
-  libssh = declare_dependency(compile_args: config_host['LIBSSH_CFLAGS'].split(),
-                              link_args: config_host['LIBSSH_LIBS'].split())
+have_libssh_0_8 = false
+if not get_option('libssh').auto() or have_block
+  libssh = dependency('libssh',
+                      required: get_option('libssh'),
+                      method: 'pkg-config', static: enable_static)
+  if libssh.found()
+    have_libssh_0_8 = cc.links('''
+      #include <libssh/libssh.h>
+      int main(void) { return ssh_get_server_publickey(NULL, NULL); }
+    ''', dependencies: libssh)
+  endif
 endif
 libbzip2 = not_found
 if not get_option('bzip2').auto() or have_block
@@ -931,6 +939,8 @@ config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_
 config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
 config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
 config_host_data.set('CONFIG_LIBNFS', libnfs.found())
+config_host_data.set('CONFIG_LIBSSH', libssh.found())
+config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
@@ -2310,7 +2320,7 @@ summary_info += {'crypto afalg':      config_host.has_key('CONFIG_AF_ALG')}
 summary_info += {'GlusterFS support': glusterfs.found()}
 summary_info += {'gcov':              get_option('b_coverage')}
 summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
-summary_info += {'libssh support':    config_host.has_key('CONFIG_LIBSSH')}
+summary_info += {'libssh support':    libssh.found()}
 summary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
 summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
diff --git a/meson_options.txt b/meson_options.txt
index 4535bc4dc2..6466dc67f6 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -54,6 +54,8 @@ option('libiscsi', type : 'feature', value : 'auto',
        description: 'libiscsi userspace initiator')
 option('libnfs', type : 'feature', value : 'auto',
        description: 'libnfs block device driver')
+option('libssh', type : 'feature', value : 'auto',
+       description: 'libssh block device driver')
 option('mpath', type : 'feature', value : 'auto',
        description: 'Multipath persistent reservation passthrough')
 option('iconv', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 09/18] rbd: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (7 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 08/18] libssh: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:36   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 10/18] lzo: " Paolo Bonzini
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 35 ++++-------------------------------
 meson.build       | 22 +++++++++++++++++++---
 meson_options.txt |  2 ++
 3 files changed, 25 insertions(+), 34 deletions(-)

diff --git a/configure b/configure
index f3271381f1..e34885d505 100755
--- a/configure
+++ b/configure
@@ -384,7 +384,7 @@ qom_cast_debug="yes"
 trace_backends="log"
 trace_file="trace"
 spice="$default_feature"
-rbd="$default_feature"
+rbd="auto"
 smartcard="$default_feature"
 u2f="auto"
 libusb="$default_feature"
@@ -1286,9 +1286,9 @@ for opt do
   ;;
   --enable-opengl) opengl="yes"
   ;;
-  --disable-rbd) rbd="no"
+  --disable-rbd) rbd="disabled"
   ;;
-  --enable-rbd) rbd="yes"
+  --enable-rbd) rbd="enabled"
   ;;
   --disable-xfsctl) xfs="no"
   ;;
@@ -3607,29 +3607,6 @@ if compile_prog "" "$pthread_lib" ; then
   pthread_setname_np_wo_tid=yes
 fi
 
-##########################################
-# rbd probe
-if test "$rbd" != "no" ; then
-  cat > $TMPC <<EOF
-#include <stdio.h>
-#include <rbd/librbd.h>
-int main(void) {
-    rados_t cluster;
-    rados_create(&cluster, NULL);
-    return 0;
-}
-EOF
-  rbd_libs="-lrbd -lrados"
-  if compile_prog "" "$rbd_libs" ; then
-    rbd=yes
-  else
-    if test "$rbd" = "yes" ; then
-      feature_not_found "rados block device" "Install librbd/ceph devel"
-    fi
-    rbd=no
-  fi
-fi
-
 ##########################################
 # linux-aio probe
 
@@ -6184,10 +6161,6 @@ fi
 if test "$qom_cast_debug" = "yes" ; then
   echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
 fi
-if test "$rbd" = "yes" ; then
-  echo "CONFIG_RBD=y" >> $config_host_mak
-  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
-fi
 
 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
 if test "$coroutine_pool" = "yes" ; then
@@ -6726,7 +6699,7 @@ NINJA=$ninja $meson setup \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
-        -Dlibssh=$libssh \
+        -Dlibssh=$libssh -Drbd=$rbd \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 2d6660aa46..6fa80e2d7e 100644
--- a/meson.build
+++ b/meson.build
@@ -612,9 +612,24 @@ else
 endif
 
 rbd = not_found
-if 'CONFIG_RBD' in config_host
-  rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
+if not get_option('rbd').auto() or have_block
+  librados = cc.find_library('rados', required: get_option('rbd'),
+                             static: enable_static)
+  librbd = cc.find_library('rbd', has_headers: ['rbd/librbd.h'],
+                           required: get_option('rbd'),
+                           static: enable_static)
+  if librados.found() and librbd.found() and cc.links('''
+    #include <stdio.h>
+    #include <rbd/librbd.h>
+    int main(void) {
+      rados_t cluster;
+      rados_create(&cluster, NULL);
+      return 0;
+    }''', dependencies: [librbd, librados])
+    rbd = declare_dependency(dependencies: [librbd, librados])
+  endif
 endif
+
 glusterfs = not_found
 glusterfs_ftruncate_has_stat = false
 glusterfs_iocb_has_stat = false
@@ -941,6 +956,7 @@ config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
 config_host_data.set('CONFIG_LIBNFS', libnfs.found())
 config_host_data.set('CONFIG_LIBSSH', libssh.found())
 config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
+config_host_data.set('CONFIG_RBD', rbd.found())
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
@@ -2290,7 +2306,7 @@ if config_host['TRACE_BACKENDS'].split().contains('simple')
 endif
 # TODO: add back protocol and server version
 summary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
-summary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
+summary_info += {'rbd support':       rbd.found()}
 summary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
 summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
 summary_info += {'U2F support':       u2f.found()}
diff --git a/meson_options.txt b/meson_options.txt
index 6466dc67f6..630c9dceb7 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
        description: 'curses UI')
 option('libudev', type : 'feature', value : 'auto',
        description: 'Use libudev to enumerate host devices')
+option('rbd', type : 'feature', value : 'auto',
+       description: 'Ceph block device driver')
 option('sdl', type : 'feature', value : 'auto',
        description: 'SDL user interface')
 option('sdl_image', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 10/18] lzo: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (8 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 09/18] rbd: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:42   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 11/18] snappy: " Paolo Bonzini
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 32 ++++----------------------------
 meson.build       | 20 ++++++++++++++++----
 meson_options.txt |  2 ++
 3 files changed, 22 insertions(+), 32 deletions(-)

diff --git a/configure b/configure
index e34885d505..f52f04d0e3 100755
--- a/configure
+++ b/configure
@@ -394,7 +394,7 @@ opengl_dmabuf="no"
 cpuid_h="no"
 avx2_opt="$default_feature"
 capstone="auto"
-lzo="$default_feature"
+lzo="auto"
 snappy="$default_feature"
 bzip2="auto"
 lzfse="$default_feature"
@@ -1312,9 +1312,9 @@ for opt do
   ;;
   --disable-zlib-test)
   ;;
-  --disable-lzo) lzo="no"
+  --disable-lzo) lzo="disabled"
   ;;
-  --enable-lzo) lzo="yes"
+  --enable-lzo) lzo="enabled"
   ;;
   --disable-snappy) snappy="no"
   ;;
@@ -2458,25 +2458,6 @@ EOF
   fi
 fi
 
-##########################################
-# lzo check
-
-if test "$lzo" != "no" ; then
-    cat > $TMPC << EOF
-#include <lzo/lzo1x.h>
-int main(void) { lzo_version(); return 0; }
-EOF
-    if compile_prog "" "-llzo2" ; then
-        lzo_libs="-llzo2"
-        lzo="yes"
-    else
-        if test "$lzo" = "yes"; then
-            feature_not_found "liblzo2" "Install liblzo2 devel"
-        fi
-        lzo="no"
-    fi
-fi
-
 ##########################################
 # snappy check
 
@@ -6126,11 +6107,6 @@ if test "$avx512f_opt" = "yes" ; then
   echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
 fi
 
-if test "$lzo" = "yes" ; then
-  echo "CONFIG_LZO=y" >> $config_host_mak
-  echo "LZO_LIBS=$lzo_libs" >> $config_host_mak
-fi
-
 if test "$snappy" = "yes" ; then
   echo "CONFIG_SNAPPY=y" >> $config_host_mak
   echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
@@ -6699,7 +6675,7 @@ NINJA=$ninja $meson setup \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
-        -Dlibssh=$libssh -Drbd=$rbd \
+        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 6fa80e2d7e..0310d6d89a 100644
--- a/meson.build
+++ b/meson.build
@@ -753,10 +753,21 @@ snappy = not_found
 if 'CONFIG_SNAPPY' in config_host
   snappy = declare_dependency(link_args: config_host['SNAPPY_LIBS'].split())
 endif
-lzo = not_found
-if 'CONFIG_LZO' in config_host
-  lzo = declare_dependency(link_args: config_host['LZO_LIBS'].split())
+
+lzo = cc.find_library('lzo2', has_headers: ['lzo/lzo1x.h'],
+                      required: get_option('lzo'),
+                      static: enable_static)
+if lzo.found() and not cc.links('''
+   #include <lzo/lzo1x.h>
+   int main(void) { lzo_version(); return 0; }''', dependencies: lzo)
+  lzo = not_found
+  if get_option('lzo').enabled()
+    error('could not link liblzo2')
+  else
+    warning('could not link liblzo2, disabling')
+  endif
 endif
+
 rdma = not_found
 if 'CONFIG_RDMA' in config_host
   rdma = declare_dependency(link_args: config_host['RDMA_LIBS'].split())
@@ -941,6 +952,7 @@ config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_opti
 config_host_data.set('CONFIG_BRLAPI', brlapi.found())
 config_host_data.set('CONFIG_COCOA', cocoa.found())
 config_host_data.set('CONFIG_LIBUDEV', libudev.found())
+config_host_data.set('CONFIG_LZO', lzo.found())
 config_host_data.set('CONFIG_MPATH', mpathpersist.found())
 config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
 config_host_data.set('CONFIG_CURL', curl.found())
@@ -2339,7 +2351,7 @@ summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
 summary_info += {'libssh support':    libssh.found()}
 summary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
-summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
+summary_info += {'lzo support':       lzo.found()}
 summary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
 summary_info += {'bzip2 support':     libbzip2.found()}
 summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
diff --git a/meson_options.txt b/meson_options.txt
index 630c9dceb7..00a5ec55bd 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
        description: 'curses UI')
 option('libudev', type : 'feature', value : 'auto',
        description: 'Use libudev to enumerate host devices')
+option('lzo', type : 'feature', value : 'auto',
+       description: 'lzo compression support')
 option('rbd', type : 'feature', value : 'auto',
        description: 'Ceph block device driver')
 option('sdl', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 11/18] snappy: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (9 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 10/18] lzo: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 12:47   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 12/18] lzfse: " Paolo Bonzini
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 32 ++++----------------------------
 meson.build       | 19 +++++++++++++++----
 meson_options.txt |  2 ++
 3 files changed, 21 insertions(+), 32 deletions(-)

diff --git a/configure b/configure
index f52f04d0e3..aee27d9cdd 100755
--- a/configure
+++ b/configure
@@ -395,7 +395,7 @@ cpuid_h="no"
 avx2_opt="$default_feature"
 capstone="auto"
 lzo="auto"
-snappy="$default_feature"
+snappy="auto"
 bzip2="auto"
 lzfse="$default_feature"
 zstd="$default_feature"
@@ -1316,9 +1316,9 @@ for opt do
   ;;
   --enable-lzo) lzo="enabled"
   ;;
-  --disable-snappy) snappy="no"
+  --disable-snappy) snappy="disabled"
   ;;
-  --enable-snappy) snappy="yes"
+  --enable-snappy) snappy="enabled"
   ;;
   --disable-bzip2) bzip2="disabled"
   ;;
@@ -2458,25 +2458,6 @@ EOF
   fi
 fi
 
-##########################################
-# snappy check
-
-if test "$snappy" != "no" ; then
-    cat > $TMPC << EOF
-#include <snappy-c.h>
-int main(void) { snappy_max_compressed_length(4096); return 0; }
-EOF
-    if compile_prog "" "-lsnappy" ; then
-        snappy_libs='-lsnappy'
-        snappy="yes"
-    else
-        if test "$snappy" = "yes"; then
-            feature_not_found "libsnappy" "Install libsnappy devel"
-        fi
-        snappy="no"
-    fi
-fi
-
 ##########################################
 # lzfse check
 
@@ -6107,11 +6088,6 @@ if test "$avx512f_opt" = "yes" ; then
   echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
 fi
 
-if test "$snappy" = "yes" ; then
-  echo "CONFIG_SNAPPY=y" >> $config_host_mak
-  echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
-fi
-
 if test "$lzfse" = "yes" ; then
   echo "CONFIG_LZFSE=y" >> $config_host_mak
   echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
@@ -6675,7 +6651,7 @@ NINJA=$ninja $meson setup \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
-        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo \
+        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 0310d6d89a..9f6ea65626 100644
--- a/meson.build
+++ b/meson.build
@@ -749,9 +749,19 @@ if get_option('vnc').enabled()
                               compile_args: '-DSTRUCT_IOVEC_DEFINED')
   endif
 endif
-snappy = not_found
-if 'CONFIG_SNAPPY' in config_host
-  snappy = declare_dependency(link_args: config_host['SNAPPY_LIBS'].split())
+
+snappy = cc.find_library('snappy', has_headers: ['snappy-c.h'],
+                      required: get_option('snappy'),
+                      static: enable_static)
+if snappy.found() and not cc.links('''
+   #include <snappy-c.h>
+   int main(void) { snappy_max_compressed_length(4096); return 0; }''', dependencies: snappy)
+  snappy = not_found
+  if get_option('snappy').enabled()
+    error('could not link libsnappy')
+  else
+    warning('could not link libsnappy, disabling')
+  endif
 endif
 
 lzo = cc.find_library('lzo2', has_headers: ['lzo/lzo1x.h'],
@@ -971,6 +981,7 @@ config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
 config_host_data.set('CONFIG_RBD', rbd.found())
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
+config_host_data.set('CONFIG_SNAPPY', snappy.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
 config_host_data.set('CONFIG_VNC', vnc.found())
 config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
@@ -2352,7 +2363,7 @@ summary_info += {'libssh support':    libssh.found()}
 summary_info += {'QOM debugging':     config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
 summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
 summary_info += {'lzo support':       lzo.found()}
-summary_info += {'snappy support':    config_host.has_key('CONFIG_SNAPPY')}
+summary_info += {'snappy support':    snappy.found()}
 summary_info += {'bzip2 support':     libbzip2.found()}
 summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
 summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
diff --git a/meson_options.txt b/meson_options.txt
index 00a5ec55bd..e2b7e23887 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -72,6 +72,8 @@ option('sdl', type : 'feature', value : 'auto',
        description: 'SDL user interface')
 option('sdl_image', type : 'feature', value : 'auto',
        description: 'SDL Image support for icons')
+option('snappy', type : 'feature', value : 'auto',
+       description: 'snappy compression support')
 option('u2f', type : 'feature', value : 'auto',
        description: 'U2F emulation support')
 option('vnc', type : 'feature', value : 'enabled',
-- 
2.29.2




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

* [PATCH 12/18] lzfse: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (10 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 11/18] snappy: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 13:11   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 13/18] zstd: " Paolo Bonzini
                   ` (5 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 31 ++++---------------------------
 meson.build       | 19 +++++++++++++++----
 meson_options.txt |  2 ++
 3 files changed, 21 insertions(+), 31 deletions(-)

diff --git a/configure b/configure
index aee27d9cdd..ea5650acca 100755
--- a/configure
+++ b/configure
@@ -397,7 +397,7 @@ capstone="auto"
 lzo="auto"
 snappy="auto"
 bzip2="auto"
-lzfse="$default_feature"
+lzfse="auto"
 zstd="$default_feature"
 guest_agent="$default_feature"
 guest_agent_with_vss="no"
@@ -1324,9 +1324,9 @@ for opt do
   ;;
   --enable-bzip2) bzip2="enabled"
   ;;
-  --enable-lzfse) lzfse="yes"
+  --enable-lzfse) lzfse="enabled"
   ;;
-  --disable-lzfse) lzfse="no"
+  --disable-lzfse) lzfse="disabled"
   ;;
   --disable-zstd) zstd="no"
   ;;
@@ -2458,24 +2458,6 @@ EOF
   fi
 fi
 
-##########################################
-# lzfse check
-
-if test "$lzfse" != "no" ; then
-    cat > $TMPC << EOF
-#include <lzfse.h>
-int main(void) { lzfse_decode_scratch_size(); return 0; }
-EOF
-    if compile_prog "" "-llzfse" ; then
-        lzfse="yes"
-    else
-        if test "$lzfse" = "yes"; then
-            feature_not_found "lzfse" "Install lzfse devel"
-        fi
-        lzfse="no"
-    fi
-fi
-
 ##########################################
 # zstd check
 
@@ -6088,11 +6070,6 @@ if test "$avx512f_opt" = "yes" ; then
   echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
 fi
 
-if test "$lzfse" = "yes" ; then
-  echo "CONFIG_LZFSE=y" >> $config_host_mak
-  echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
-fi
-
 if test "$zstd" = "yes" ; then
   echo "CONFIG_ZSTD=y" >> $config_host_mak
   echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
@@ -6651,7 +6628,7 @@ NINJA=$ninja $meson setup \
         -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
-        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy \
+        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 9f6ea65626..c02d9c3e1a 100644
--- a/meson.build
+++ b/meson.build
@@ -695,10 +695,21 @@ if not get_option('bzip2').auto() or have_block
     endif
   endif
 endif
-liblzfse = not_found
-if 'CONFIG_LZFSE' in config_host
-  liblzfse = declare_dependency(link_args: config_host['LZFSE_LIBS'].split())
+
+liblzfse = cc.find_library('lzfse', has_headers: ['lzfse.h'],
+                      required: get_option('lzfse'),
+                      static: enable_static)
+if liblzfse.found() and not cc.links('''
+   #include <lzfse.h>
+   int main(void) { lzfse_decode_scratch_size(); return 0; }''', dependencies: liblzfse)
+  liblzfse = not_found
+  if get_option('lzfse').enabled()
+    error('could not link liblzfse')
+  else
+    warning('could not link liblzfse, disabling')
+  endif
 endif
+
 oss = not_found
 if 'CONFIG_AUDIO_OSS' in config_host
   oss = declare_dependency(link_args: config_host['OSS_LIBS'].split())
@@ -2365,7 +2376,7 @@ summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_
 summary_info += {'lzo support':       lzo.found()}
 summary_info += {'snappy support':    snappy.found()}
 summary_info += {'bzip2 support':     libbzip2.found()}
-summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
+summary_info += {'lzfse support':     liblzfse.found()}
 summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
 summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
 summary_info += {'libxml2':           config_host.has_key('CONFIG_LIBXML2')}
diff --git a/meson_options.txt b/meson_options.txt
index e2b7e23887..f74a3d78c4 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
        description: 'curses UI')
 option('libudev', type : 'feature', value : 'auto',
        description: 'Use libudev to enumerate host devices')
+option('lzfse', type : 'feature', value : 'auto',
+       description: 'lzfse support for DMG images')
 option('lzo', type : 'feature', value : 'auto',
        description: 'lzo compression support')
 option('rbd', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 13/18] zstd: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (11 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 12/18] lzfse: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 13:31   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 14/18] seccomp: " Paolo Bonzini
                   ` (4 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure             | 30 ++++--------------------------
 meson.build           | 10 ++++++----
 meson_options.txt     |  2 ++
 migration/meson.build |  2 +-
 4 files changed, 13 insertions(+), 31 deletions(-)

diff --git a/configure b/configure
index ea5650acca..649da881a2 100755
--- a/configure
+++ b/configure
@@ -398,7 +398,7 @@ lzo="auto"
 snappy="auto"
 bzip2="auto"
 lzfse="auto"
-zstd="$default_feature"
+zstd="auto"
 guest_agent="$default_feature"
 guest_agent_with_vss="no"
 guest_agent_ntddscsi="no"
@@ -1328,9 +1328,9 @@ for opt do
   ;;
   --disable-lzfse) lzfse="disabled"
   ;;
-  --disable-zstd) zstd="no"
+  --disable-zstd) zstd="disabled"
   ;;
-  --enable-zstd) zstd="yes"
+  --enable-zstd) zstd="enabled"
   ;;
   --enable-guest-agent) guest_agent="yes"
   ;;
@@ -2458,23 +2458,6 @@ EOF
   fi
 fi
 
-##########################################
-# zstd check
-
-if test "$zstd" != "no" ; then
-    libzstd_minver="1.4.0"
-    if $pkg_config --atleast-version=$libzstd_minver libzstd ; then
-        zstd_cflags="$($pkg_config --cflags libzstd)"
-        zstd_libs="$($pkg_config --libs libzstd)"
-        zstd="yes"
-    else
-        if test "$zstd" = "yes" ; then
-            feature_not_found "libzstd" "Install libzstd devel"
-        fi
-        zstd="no"
-    fi
-fi
-
 ##########################################
 # libseccomp check
 
@@ -6070,12 +6053,6 @@ if test "$avx512f_opt" = "yes" ; then
   echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
 fi
 
-if test "$zstd" = "yes" ; then
-  echo "CONFIG_ZSTD=y" >> $config_host_mak
-  echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
-  echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
-fi
-
 if test "$seccomp" = "yes"; then
   echo "CONFIG_SECCOMP=y" >> $config_host_mak
   echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
@@ -6629,6 +6606,7 @@ NINJA=$ninja $meson setup \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
+        -Dzstd=$zstd \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index c02d9c3e1a..93a95d7a7f 100644
--- a/meson.build
+++ b/meson.build
@@ -380,9 +380,10 @@ if not get_option('libiscsi').auto() or have_block
                          method: 'pkg-config', static: enable_static)
 endif
 zstd = not_found
-if 'CONFIG_ZSTD' in config_host
-  zstd = declare_dependency(compile_args: config_host['ZSTD_CFLAGS'].split(),
-                            link_args: config_host['ZSTD_LIBS'].split())
+if not get_option('zstd').auto() or have_block
+  zstd = dependency('zstd', version: '>=1.4.0',
+                    required: get_option('zstd'),
+                    method: 'pkg-config', static: enable_static)
 endif
 gbm = not_found
 if 'CONFIG_GBM' in config_host
@@ -1003,6 +1004,7 @@ config_host_data.set('CONFIG_KEYUTILS', keyutils.found())
 config_host_data.set('CONFIG_GETTID', has_gettid)
 config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim)
 config_host_data.set('CONFIG_STATX', has_statx)
+config_host_data.set('CONFIG_ZSTD', zstd.found())
 config_host_data.set('CONFIG_FUSE', fuse.found())
 config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
 config_host_data.set('CONFIG_CFI', get_option('cfi'))
@@ -2377,7 +2379,7 @@ summary_info += {'lzo support':       lzo.found()}
 summary_info += {'snappy support':    snappy.found()}
 summary_info += {'bzip2 support':     libbzip2.found()}
 summary_info += {'lzfse support':     liblzfse.found()}
-summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
+summary_info += {'zstd support':      zstd.found()}
 summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
 summary_info += {'libxml2':           config_host.has_key('CONFIG_LIBXML2')}
 summary_info += {'memory allocator':  get_option('malloc')}
diff --git a/meson_options.txt b/meson_options.txt
index f74a3d78c4..5a1de9b1fe 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -92,6 +92,8 @@ option('virtiofsd', type: 'feature', value: 'auto',
        description: 'build virtiofs daemon (virtiofsd)')
 option('vhost_user_blk_server', type: 'feature', value: 'auto',
        description: 'build vhost-user-blk server')
+option('zstd', type : 'feature', value : 'auto',
+       description: 'zstd compression support')
 option('fuse', type: 'feature', value: 'auto',
        description: 'FUSE block device export')
 option('fuse_lseek', type : 'feature', value : 'auto',
diff --git a/migration/meson.build b/migration/meson.build
index 980e37865c..c783f2f2ae 100644
--- a/migration/meson.build
+++ b/migration/meson.build
@@ -29,6 +29,6 @@ softmmu_ss.add(files(
 
 softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
 softmmu_ss.add(when: 'CONFIG_LIVE_BLOCK_MIGRATION', if_true: files('block.c'))
-softmmu_ss.add(when: 'CONFIG_ZSTD', if_true: [files('multifd-zstd.c'), zstd])
+softmmu_ss.add(when: zstd, if_true: files('multifd-zstd.c'))
 
 specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files('dirtyrate.c', 'ram.c'))
-- 
2.29.2




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

* [PATCH 14/18] seccomp: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (12 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 13/18] zstd: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 13:36   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 15/18] virtfs: " Paolo Bonzini
                   ` (3 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure              | 32 ++++----------------------------
 meson.build            | 10 ++++++----
 meson_options.txt      |  2 ++
 softmmu/meson.build    |  2 +-
 softmmu/qemu-seccomp.c |  2 --
 tools/meson.build      |  4 ++--
 6 files changed, 15 insertions(+), 37 deletions(-)

diff --git a/configure b/configure
index 649da881a2..00c2d61a96 100755
--- a/configure
+++ b/configure
@@ -414,7 +414,7 @@ debug_stack_usage="no"
 crypto_afalg="no"
 cfi="false"
 cfi_debug="false"
-seccomp="$default_feature"
+seccomp="auto"
 glusterfs="auto"
 gtk="$default_feature"
 gtk_gl="no"
@@ -1356,9 +1356,9 @@ for opt do
   ;;
   --disable-tools) want_tools="no"
   ;;
-  --enable-seccomp) seccomp="yes"
+  --enable-seccomp) seccomp="enabled"
   ;;
-  --disable-seccomp) seccomp="no"
+  --disable-seccomp) seccomp="disabled"
   ;;
   --disable-glusterfs) glusterfs="disabled"
   ;;
@@ -2458,24 +2458,6 @@ EOF
   fi
 fi
 
-##########################################
-# libseccomp check
-
-if test "$seccomp" != "no" ; then
-    libseccomp_minver="2.3.0"
-    if $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
-        seccomp_cflags="$($pkg_config --cflags libseccomp)"
-        seccomp_libs="$($pkg_config --libs libseccomp)"
-        seccomp="yes"
-    else
-        if test "$seccomp" = "yes" ; then
-            feature_not_found "libseccomp" \
-                 "Install libseccomp devel >= $libseccomp_minver"
-        fi
-        seccomp="no"
-    fi
-fi
-
 ##########################################
 # xen probe
 
@@ -6053,12 +6035,6 @@ if test "$avx512f_opt" = "yes" ; then
   echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
 fi
 
-if test "$seccomp" = "yes"; then
-  echo "CONFIG_SECCOMP=y" >> $config_host_mak
-  echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
-  echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
-fi
-
 # XXX: suppress that
 if [ "$bsd" = "yes" ] ; then
   echo "CONFIG_BSD=y" >> $config_host_mak
@@ -6606,7 +6582,7 @@ NINJA=$ninja $meson setup \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
-        -Dzstd=$zstd \
+        -Dzstd=$zstd -Dseccomp=$seccomp \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 93a95d7a7f..a0132730d7 100644
--- a/meson.build
+++ b/meson.build
@@ -329,9 +329,10 @@ if 'CONFIG_ATTR' in config_host
   libattr = declare_dependency(link_args: config_host['LIBATTR_LIBS'].split())
 endif
 seccomp = not_found
-if 'CONFIG_SECCOMP' in config_host
-  seccomp = declare_dependency(compile_args: config_host['SECCOMP_CFLAGS'].split(),
-                               link_args: config_host['SECCOMP_LIBS'].split())
+if not get_option('libiscsi').auto() or have_system or have_tools
+  seccomp = dependency('libseccomp', version: '>=2.3.0',
+                       required: get_option('seccomp'),
+                       method: 'pkg-config', static: enable_static)
 endif
 libcap_ng = not_found
 if 'CONFIG_LIBCAP_NG' in config_host
@@ -993,6 +994,7 @@ config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
 config_host_data.set('CONFIG_RBD', rbd.found())
 config_host_data.set('CONFIG_SDL', sdl.found())
 config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
+config_host_data.set('CONFIG_SECCOMP', seccomp.found())
 config_host_data.set('CONFIG_SNAPPY', snappy.found())
 config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER', have_vhost_user_blk_server)
 config_host_data.set('CONFIG_VNC', vnc.found())
@@ -2361,7 +2363,7 @@ if targetos == 'windows'
   summary_info += {'QGA w32 disk info': config_host.has_key('CONFIG_QGA_NTDDSCSI')}
   summary_info += {'QGA MSI support':   config_host.has_key('CONFIG_QGA_MSI')}
 endif
-summary_info += {'seccomp support':   config_host.has_key('CONFIG_SECCOMP')}
+summary_info += {'seccomp support':   seccomp.found()}
 summary_info += {'CFI support':       get_option('cfi')}
 summary_info += {'CFI debug support': get_option('cfi_debug')}
 summary_info += {'coroutine backend': config_host['CONFIG_COROUTINE_BACKEND']}
diff --git a/meson_options.txt b/meson_options.txt
index 5a1de9b1fe..1854a9639f 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -74,6 +74,8 @@ option('sdl', type : 'feature', value : 'auto',
        description: 'SDL user interface')
 option('sdl_image', type : 'feature', value : 'auto',
        description: 'SDL Image support for icons')
+option('seccomp', type : 'feature', value : 'auto',
+       description: 'seccomp support')
 option('snappy', type : 'feature', value : 'auto',
        description: 'snappy compression support')
 option('u2f', type : 'feature', value : 'auto',
diff --git a/softmmu/meson.build b/softmmu/meson.build
index 2dab6c7eb6..d8e03018ab 100644
--- a/softmmu/meson.build
+++ b/softmmu/meson.build
@@ -28,5 +28,5 @@ softmmu_ss.add(files(
 ), sdl, libpmem, libdaxctl)
 
 softmmu_ss.add(when: 'CONFIG_TPM', if_true: files('tpm.c'))
-softmmu_ss.add(when: 'CONFIG_SECCOMP', if_true: [files('qemu-seccomp.c'), seccomp])
+softmmu_ss.add(when: seccomp, if_true: files('qemu-seccomp.c'))
 softmmu_ss.add(when: fdt, if_true: files('device_tree.c'))
diff --git a/softmmu/qemu-seccomp.c b/softmmu/qemu-seccomp.c
index 8325ecb766..377ef6937c 100644
--- a/softmmu/qemu-seccomp.c
+++ b/softmmu/qemu-seccomp.c
@@ -202,7 +202,6 @@ static int seccomp_start(uint32_t seccomp_opts, Error **errp)
     return rc < 0 ? -1 : 0;
 }
 
-#ifdef CONFIG_SECCOMP
 int parse_sandbox(void *opaque, QemuOpts *opts, Error **errp)
 {
     if (qemu_opt_get_bool(opts, "enable", false)) {
@@ -328,4 +327,3 @@ static void seccomp_register(void)
     }
 }
 opts_init(seccomp_register);
-#endif
diff --git a/tools/meson.build b/tools/meson.build
index 76bf84df52..5c52d79fe4 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -1,6 +1,6 @@
 have_virtiofsd = (targetos == 'linux' and
     have_tools and
-    'CONFIG_SECCOMP' in config_host and
+    seccomp.found() and
     'CONFIG_LIBCAP_NG' in config_host and
     'CONFIG_VHOST_USER' in config_host)
 
@@ -8,7 +8,7 @@ if get_option('virtiofsd').enabled()
   if not have_virtiofsd
     if targetos != 'linux'
       error('virtiofsd requires Linux')
-    elif 'CONFIG_SECCOMP' not in config_host or 'CONFIG_LIBCAP_NG' not in config_host
+    elif not seccomp.found() or 'CONFIG_LIBCAP_NG' not in config_host
       error('virtiofsd requires libcap-ng-devel and seccomp-devel')
     elif not have_tools or 'CONFIG_VHOST_USER' not in config_host
       error('virtiofsd needs tools and vhost-user support')
-- 
2.29.2




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

* [PATCH 15/18] virtfs: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (13 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 14/18] seccomp: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 13:38   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 16/18] cap_ng: " Paolo Bonzini
                   ` (2 subsequent siblings)
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 29 ++++-------------------------
 meson.build       | 24 ++++++++++++++++++++++--
 meson_options.txt | 11 +++++++----
 3 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/configure b/configure
index 00c2d61a96..11d6f40f92 100755
--- a/configure
+++ b/configure
@@ -316,7 +316,7 @@ netmap="no"
 sdl="auto"
 sdl_image="auto"
 virtiofsd="auto"
-virtfs="$default_feature"
+virtfs="auto"
 libudev="auto"
 mpath="auto"
 vnc="enabled"
@@ -1005,9 +1005,9 @@ for opt do
   ;;
   --enable-qom-cast-debug) qom_cast_debug="yes"
   ;;
-  --disable-virtfs) virtfs="no"
+  --disable-virtfs) virtfs="disabled"
   ;;
-  --enable-virtfs) virtfs="yes"
+  --enable-virtfs) virtfs="enabled"
   ;;
   --disable-libudev) libudev="disabled"
   ;;
@@ -5445,24 +5445,6 @@ if [ "$eventfd" = "yes" ]; then
   ivshmem=yes
 fi
 
-if test "$softmmu" = yes ; then
-  if test "$linux" = yes; then
-    if test "$virtfs" != no && test "$cap_ng" = yes && test "$attr" = yes ; then
-      virtfs=yes
-    else
-      if test "$virtfs" = yes; then
-        error_exit "VirtFS requires libcap-ng devel and libattr devel"
-      fi
-      virtfs=no
-    fi
-  else
-    if test "$virtfs" = yes; then
-      error_exit "VirtFS is supported only on Linux"
-    fi
-    virtfs=no
-  fi
-fi
-
 # Probe for guest agent support/options
 
 if [ "$guest_agent" != "no" ]; then
@@ -5919,9 +5901,6 @@ fi
 if test "$libattr" = "yes" ; then
   echo "CONFIG_LIBATTR=y" >> $config_host_mak
 fi
-if test "$virtfs" = "yes" ; then
-  echo "CONFIG_VIRTFS=y" >> $config_host_mak
-fi
 if test "$vhost_scsi" = "yes" ; then
   echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
 fi
@@ -6582,7 +6561,7 @@ NINJA=$ninja $meson setup \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
-        -Dzstd=$zstd -Dseccomp=$seccomp \
+        -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index a0132730d7..08d3586df5 100644
--- a/meson.build
+++ b/meson.build
@@ -959,6 +959,25 @@ endif
 # config-host.h #
 #################
 
+have_virtfs = (targetos == 'linux' and
+    have_system and
+    libattr.found() and
+    libcap_ng.found())
+
+if get_option('virtfs').enabled()
+  if not have_virtfs
+    if targetos != 'linux'
+      error('virtio-9p (virtfs) requires Linux')
+    elif not libcap_ng.found() or not libattr.found()
+      error('virtio-9p (virtfs) requires libcap-ng-devel and libattr-devel')
+    elif not have_system
+      error('virtio-9p (virtfs) needs system emulation support')
+    endif
+  endif
+elif get_option('virtfs').disabled()
+  have_virtfs = false
+endif
+
 config_host_data.set_quoted('CONFIG_BINDIR', get_option('prefix') / get_option('bindir'))
 config_host_data.set_quoted('CONFIG_PREFIX', get_option('prefix'))
 config_host_data.set_quoted('CONFIG_QEMU_CONFDIR', get_option('prefix') / qemu_confdir)
@@ -1001,6 +1020,7 @@ config_host_data.set('CONFIG_VNC', vnc.found())
 config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
 config_host_data.set('CONFIG_VNC_PNG', png.found())
 config_host_data.set('CONFIG_VNC_SASL', sasl.found())
+config_host_data.set('CONFIG_VIRTFS', have_virtfs)
 config_host_data.set('CONFIG_XKBCOMMON', xkbcommon.found())
 config_host_data.set('CONFIG_KEYUTILS', keyutils.found())
 config_host_data.set('CONFIG_GETTID', has_gettid)
@@ -1099,7 +1119,7 @@ host_kconfig = \
   ('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \
   ('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \
   ('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : []) + \
-  ('CONFIG_VIRTFS' in config_host ? ['CONFIG_VIRTFS=y'] : []) + \
+  (have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \
   ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
   ('CONFIG_PVRDMA' in config_host ? ['CONFIG_PVRDMA=y'] : [])
 
@@ -2287,7 +2307,7 @@ summary_info += {'mingw32 support':   targetos == 'windows'}
 summary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
 summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
 summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
-summary_info += {'VirtFS support':    config_host.has_key('CONFIG_VIRTFS')}
+summary_info += {'VirtFS support':    have_virtfs}
 summary_info += {'build virtiofs daemon': have_virtiofsd}
 summary_info += {'Multipath support': mpathpersist.found()}
 summary_info += {'VNC support':       vnc.found()}
diff --git a/meson_options.txt b/meson_options.txt
index 1854a9639f..59a8a50e5b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -90,10 +90,6 @@ option('vnc_sasl', type : 'feature', value : 'auto',
        description: 'SASL authentication for VNC server')
 option('xkbcommon', type : 'feature', value : 'auto',
        description: 'xkbcommon support')
-option('virtiofsd', type: 'feature', value: 'auto',
-       description: 'build virtiofs daemon (virtiofsd)')
-option('vhost_user_blk_server', type: 'feature', value: 'auto',
-       description: 'build vhost-user-blk server')
 option('zstd', type : 'feature', value : 'auto',
        description: 'zstd compression support')
 option('fuse', type: 'feature', value: 'auto',
@@ -101,6 +97,13 @@ option('fuse', type: 'feature', value: 'auto',
 option('fuse_lseek', type : 'feature', value : 'auto',
        description: 'SEEK_HOLE/SEEK_DATA support for FUSE exports')
 
+option('vhost_user_blk_server', type: 'feature', value: 'auto',
+       description: 'build vhost-user-blk server')
+option('virtfs', type: 'feature', value: 'auto',
+       description: 'virtio-9p support')
+option('virtiofsd', type: 'feature', value: 'auto',
+       description: 'build virtiofs daemon (virtiofsd)')
+
 option('capstone', type: 'combo', value: 'auto',
        choices: ['disabled', 'enabled', 'auto', 'system', 'internal'],
        description: 'Whether and how to find the capstone library')
-- 
2.29.2




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

* [PATCH 16/18] cap_ng: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (14 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 15/18] virtfs: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 13:54   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 17/18] libattr: " Paolo Bonzini
  2020-12-17  9:40 ` [PATCH 18/18] meson.build: convert --with-default-devices " Paolo Bonzini
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 34 ++++------------------------------
 meson.build       | 24 ++++++++++++++++++++----
 meson_options.txt |  2 ++
 tools/meson.build |  4 ++--
 4 files changed, 28 insertions(+), 36 deletions(-)

diff --git a/configure b/configure
index 11d6f40f92..faee71612f 100755
--- a/configure
+++ b/configure
@@ -331,7 +331,7 @@ xen_ctrl_version="$default_feature"
 xen_pci_passthrough="auto"
 linux_aio="$default_feature"
 linux_io_uring="$default_feature"
-cap_ng="$default_feature"
+cap_ng="auto"
 attr="$default_feature"
 libattr="$default_feature"
 xfs="$default_feature"
@@ -1123,9 +1123,9 @@ for opt do
   ;;
   --enable-tcg-interpreter) tcg_interpreter="yes"
   ;;
-  --disable-cap-ng)  cap_ng="no"
+  --disable-cap-ng)  cap_ng="disabled"
   ;;
-  --enable-cap-ng) cap_ng="yes"
+  --enable-cap-ng) cap_ng="enabled"
   ;;
   --disable-tcg) tcg="disabled"
   ;;
@@ -3193,28 +3193,6 @@ EOF
   fi
 fi
 
-##########################################
-# libcap-ng library probe
-if test "$cap_ng" != "no" ; then
-  cap_libs="-lcap-ng"
-  cat > $TMPC << EOF
-#include <cap-ng.h>
-int main(void)
-{
-    capng_capability_to_name(CAPNG_EFFECTIVE);
-    return 0;
-}
-EOF
-  if compile_prog "" "$cap_libs" ; then
-    cap_ng=yes
-  else
-    if test "$cap_ng" = "yes" ; then
-      feature_not_found "cap_ng" "Install libcap-ng devel"
-    fi
-    cap_ng=no
-  fi
-fi
-
 ##########################################
 # Sound support libraries probe
 
@@ -5671,10 +5649,6 @@ fi
 if test "$gprof" = "yes" ; then
   echo "CONFIG_GPROF=y" >> $config_host_mak
 fi
-if test "$cap_ng" = "yes" ; then
-  echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak
-  echo "LIBCAP_NG_LIBS=$cap_libs" >> $config_host_mak
-fi
 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
 for drv in $audio_drv_list; do
     def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
@@ -6561,7 +6535,7 @@ NINJA=$ninja $meson setup \
         -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
-        -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs \
+        -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 08d3586df5..56ab291d87 100644
--- a/meson.build
+++ b/meson.build
@@ -334,10 +334,25 @@ if not get_option('libiscsi').auto() or have_system or have_tools
                        required: get_option('seccomp'),
                        method: 'pkg-config', static: enable_static)
 endif
-libcap_ng = not_found
-if 'CONFIG_LIBCAP_NG' in config_host
-  libcap_ng = declare_dependency(link_args: config_host['LIBCAP_NG_LIBS'].split())
+
+libcap_ng = cc.find_library('cap-ng', has_headers: ['cap-ng.h'],
+                      required: get_option('cap_ng'),
+                      static: enable_static)
+if libcap_ng.found() and not cc.links('''
+   #include <cap-ng.h>
+   int main(void)
+   {
+     capng_capability_to_name(CAPNG_EFFECTIVE);
+     return 0;
+   }''', dependencies: libcap_ng)
+  libcap_ng = not_found
+  if get_option('cap_ng').enabled()
+    error('could not link libcap-ng')
+  else
+    warning('could not link libcap-ng, disabling')
+  endif
 endif
+
 if get_option('xkbcommon').auto() and not have_system and not have_tools
   xkbcommon = not_found
 else
@@ -1006,6 +1021,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE', glusterfs.version().version_c
 config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL', glusterfs.version().version_compare('>=6'))
 config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
 config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
+config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found())
 config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
 config_host_data.set('CONFIG_LIBNFS', libnfs.found())
 config_host_data.set('CONFIG_LIBSSH', libssh.found())
@@ -2348,7 +2364,7 @@ summary_info += {'fdatasync':         config_host.has_key('CONFIG_FDATASYNC')}
 summary_info += {'madvise':           config_host.has_key('CONFIG_MADVISE')}
 summary_info += {'posix_madvise':     config_host.has_key('CONFIG_POSIX_MADVISE')}
 summary_info += {'posix_memalign':    config_host.has_key('CONFIG_POSIX_MEMALIGN')}
-summary_info += {'libcap-ng support': config_host.has_key('CONFIG_LIBCAP_NG')}
+summary_info += {'libcap-ng support': libcap_ng.found()}
 summary_info += {'vhost-kernel support': config_host.has_key('CONFIG_VHOST_KERNEL')}
 summary_info += {'vhost-net support': config_host.has_key('CONFIG_VHOST_NET')}
 summary_info += {'vhost-crypto support': config_host.has_key('CONFIG_VHOST_CRYPTO')}
diff --git a/meson_options.txt b/meson_options.txt
index 59a8a50e5b..12a1872f20 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -44,6 +44,8 @@ option('brlapi', type : 'feature', value : 'auto',
        description: 'brlapi character device driver')
 option('bzip2', type : 'feature', value : 'auto',
        description: 'bzip2 support for DMG images')
+option('cap_ng', type : 'feature', value : 'auto',
+       description: 'cap_ng support')
 option('cocoa', type : 'feature', value : 'auto',
        description: 'Cocoa user interface (macOS only)')
 option('curl', type : 'feature', value : 'auto',
diff --git a/tools/meson.build b/tools/meson.build
index 5c52d79fe4..fdce66857d 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -1,14 +1,14 @@
 have_virtiofsd = (targetos == 'linux' and
     have_tools and
     seccomp.found() and
-    'CONFIG_LIBCAP_NG' in config_host and
+    libcap_ng.found() and
     'CONFIG_VHOST_USER' in config_host)
 
 if get_option('virtiofsd').enabled()
   if not have_virtiofsd
     if targetos != 'linux'
       error('virtiofsd requires Linux')
-    elif not seccomp.found() or 'CONFIG_LIBCAP_NG' not in config_host
+    elif not seccomp.found() or not libcap_ng.found()
       error('virtiofsd requires libcap-ng-devel and seccomp-devel')
     elif not have_tools or 'CONFIG_VHOST_USER' not in config_host
       error('virtiofsd needs tools and vhost-user support')
-- 
2.29.2




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

* [PATCH 17/18] libattr: convert to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (15 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 16/18] cap_ng: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 14:05   ` Marc-André Lureau
  2020-12-17  9:40 ` [PATCH 18/18] meson.build: convert --with-default-devices " Paolo Bonzini
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 45 ++++-----------------------------------------
 meson.build       | 38 +++++++++++++++++++++++++++++++++++---
 meson_options.txt |  2 ++
 3 files changed, 41 insertions(+), 44 deletions(-)

diff --git a/configure b/configure
index faee71612f..420663d69a 100755
--- a/configure
+++ b/configure
@@ -332,8 +332,7 @@ xen_pci_passthrough="auto"
 linux_aio="$default_feature"
 linux_io_uring="$default_feature"
 cap_ng="auto"
-attr="$default_feature"
-libattr="$default_feature"
+attr="auto"
 xfs="$default_feature"
 tcg="enabled"
 membarrier="$default_feature"
@@ -1230,9 +1229,9 @@ for opt do
   ;;
   --enable-linux-io-uring) linux_io_uring="yes"
   ;;
-  --disable-attr) attr="no"
+  --disable-attr) attr="disabled"
   ;;
-  --enable-attr) attr="yes"
+  --enable-attr) attr="enabled"
   ;;
   --disable-membarrier) membarrier="no"
   ;;
@@ -3544,36 +3543,6 @@ elif test "$tpm" = "yes"; then
   fi
 fi
 
-##########################################
-# attr probe
-
-libattr_libs=
-if test "$attr" != "no" ; then
-  cat > $TMPC <<EOF
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef CONFIG_LIBATTR
-#include <attr/xattr.h>
-#else
-#include <sys/xattr.h>
-#endif
-int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
-EOF
-  if compile_prog "" "" ; then
-    attr=yes
-  # Older distros have <attr/xattr.h>, and need -lattr:
-  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
-    attr=yes
-    libattr_libs="-lattr"
-    libattr=yes
-  else
-    if test "$attr" = "yes" ; then
-      feature_not_found "ATTR" "Install libc6 or libattr devel"
-    fi
-    attr=no
-  fi
-fi
-
 ##########################################
 # iovec probe
 cat > $TMPC <<EOF
@@ -5868,13 +5837,6 @@ if test "$linux_io_uring" = "yes" ; then
   echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak
   echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak
 fi
-if test "$attr" = "yes" ; then
-  echo "CONFIG_ATTR=y" >> $config_host_mak
-  echo "LIBATTR_LIBS=$libattr_libs" >> $config_host_mak
-fi
-if test "$libattr" = "yes" ; then
-  echo "CONFIG_LIBATTR=y" >> $config_host_mak
-fi
 if test "$vhost_scsi" = "yes" ; then
   echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
 fi
@@ -6536,6 +6498,7 @@ NINJA=$ninja $meson setup \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
         -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
+        -Dattr=$attr \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 56ab291d87..341eadaa5c 100644
--- a/meson.build
+++ b/meson.build
@@ -324,10 +324,40 @@ if not get_option('libnfs').auto() or have_block
                       required: get_option('libnfs'),
                       method: 'pkg-config', static: enable_static)
 endif
+
+libattr_test = '''
+  #include <stddef.h>
+  #include <sys/types.h>
+  #ifdef CONFIG_LIBATTR
+  #include <attr/xattr.h>
+  #else
+  #include <sys/xattr.h>
+  #endif
+  int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }'''
+
 libattr = not_found
-if 'CONFIG_ATTR' in config_host
-  libattr = declare_dependency(link_args: config_host['LIBATTR_LIBS'].split())
+have_old_libattr = false
+if not get_option('attr').disabled()
+  if cc.links(libattr_test)
+    libattr = declare_dependency()
+  else
+    libattr = cc.find_library('attr', has_headers: ['attr/xattr.h'],
+                              required: get_option('attr'),
+                              static: enable_static)
+    if libattr.found() and not \
+      cc.links(libattr_test, dependencies: libattr, args: '-DCONFIG_LIBATTR')
+      libattr = not_found
+      if get_option('attr').enabled()
+        error('could not link libattr')
+      else
+        warning('could not link libattr, disabling')
+      endif
+    else
+      have_old_libattr = libattr.found()
+    endif
+  endif
 endif
+
 seccomp = not_found
 if not get_option('libiscsi').auto() or have_system or have_tools
   seccomp = dependency('libseccomp', version: '>=2.3.0',
@@ -1006,6 +1036,7 @@ config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR', get_option('prefix') /
 config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / qemu_moddir)
 config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_option('sysconfdir'))
 
+config_host_data.set('CONFIG_ATTR', libattr.found())
 config_host_data.set('CONFIG_BRLAPI', brlapi.found())
 config_host_data.set('CONFIG_COCOA', cocoa.found())
 config_host_data.set('CONFIG_LIBUDEV', libudev.found())
@@ -1021,6 +1052,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE', glusterfs.version().version_c
 config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL', glusterfs.version().version_compare('>=6'))
 config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT', glusterfs_ftruncate_has_stat)
 config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT', glusterfs_iocb_has_stat)
+config_host_data.set('CONFIG_LIBATTR', have_old_libattr)
 config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found())
 config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
 config_host_data.set('CONFIG_LIBNFS', libnfs.found())
@@ -2343,7 +2375,7 @@ summary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
 summary_info += {'netmap support':    config_host.has_key('CONFIG_NETMAP')}
 summary_info += {'Linux AIO support': config_host.has_key('CONFIG_LINUX_AIO')}
 summary_info += {'Linux io_uring support': config_host.has_key('CONFIG_LINUX_IO_URING')}
-summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
+summary_info += {'ATTR/XATTR support': libattr.found()}
 summary_info += {'Install blobs':     get_option('install_blobs')}
 summary_info += {'KVM support':       config_all.has_key('CONFIG_KVM')}
 summary_info += {'HAX support':       config_all.has_key('CONFIG_HAX')}
diff --git a/meson_options.txt b/meson_options.txt
index 12a1872f20..8fcec056cd 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -40,6 +40,8 @@ option('cfi', type: 'boolean', value: 'false',
 option('cfi_debug', type: 'boolean', value: 'false',
        description: 'Verbose errors in case of CFI violation')
 
+option('attr', type : 'feature', value : 'auto',
+       description: 'attr/xattr support')
 option('brlapi', type : 'feature', value : 'auto',
        description: 'brlapi character device driver')
 option('bzip2', type : 'feature', value : 'auto',
-- 
2.29.2




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

* [PATCH 18/18] meson.build: convert --with-default-devices to meson
  2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
                   ` (16 preceding siblings ...)
  2020-12-17  9:40 ` [PATCH 17/18] libattr: " Paolo Bonzini
@ 2020-12-17  9:40 ` Paolo Bonzini
  2020-12-17 14:08   ` Marc-André Lureau
  17 siblings, 1 reply; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

Pass the boolean option directly instead of writing
CONFIG_MINIKCONF_MODE to config-host.mak.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure         | 13 ++++---------
 meson.build       |  5 +++--
 meson_options.txt |  2 ++
 3 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/configure b/configure
index 420663d69a..ab4b826755 100755
--- a/configure
+++ b/configure
@@ -447,7 +447,7 @@ sheepdog="no"
 libxml2="$default_feature"
 debug_mutex="no"
 libpmem="$default_feature"
-default_devices="yes"
+default_devices="true"
 plugins="no"
 fuzzing="no"
 rng_none="no"
@@ -944,9 +944,9 @@ for opt do
   ;;
   --with-trace-file=*) trace_file="$optarg"
   ;;
-  --with-default-devices) default_devices="yes"
+  --with-default-devices) default_devices="true"
   ;;
-  --without-default-devices) default_devices="no"
+  --without-default-devices) default_devices="false"
   ;;
   --without-default-features) # processed above
   ;;
@@ -5541,11 +5541,6 @@ echo "GIT_UPDATE=$git_update" >> $config_host_mak
 
 echo "ARCH=$ARCH" >> $config_host_mak
 
-if test "$default_devices" = "yes" ; then
-  echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
-else
-  echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak
-fi
 if test "$debug_tcg" = "yes" ; then
   echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
 fi
@@ -6498,7 +6493,7 @@ NINJA=$ninja $meson setup \
         -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
         -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse \
         -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
-        -Dattr=$attr \
+        -Dattr=$attr -Ddefault_devices=$default_devices \
         -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
         -Dvhost_user_blk_server=$vhost_user_blk_server \
         -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
diff --git a/meson.build b/meson.build
index 341eadaa5c..4d331405e4 100644
--- a/meson.build
+++ b/meson.build
@@ -1276,7 +1276,8 @@ foreach target : target_dirs
       output: config_devices_mak,
       depfile: config_devices_mak + '.d',
       capture: true,
-      command: [minikconf, config_host['CONFIG_MINIKCONF_MODE'],
+      command: [minikconf,
+                get_option('default_devices') ? '--defconfig' : '--allnoconfig',
                 config_devices_mak, '@DEPFILE@', '@INPUT@',
                 host_kconfig, accel_kconfig])
 
@@ -2469,7 +2470,7 @@ summary_info += {'capstone':          capstone_opt == 'disabled' ? false : capst
 summary_info += {'libpmem support':   config_host.has_key('CONFIG_LIBPMEM')}
 summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
 summary_info += {'libudev':           libudev.found()}
-summary_info += {'default devices':   config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
+summary_info += {'default devices':   get_option('default_devices')}
 summary_info += {'plugin support':    config_host.has_key('CONFIG_PLUGIN')}
 summary_info += {'fuzzing support':   config_host.has_key('CONFIG_FUZZ')}
 if config_host.has_key('HAVE_GDB_BIN')
diff --git a/meson_options.txt b/meson_options.txt
index 8fcec056cd..1d4a71772e 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -7,6 +7,8 @@ option('qemu_firmwarepath', type : 'string', value : '',
 option('sphinx_build', type : 'string', value : '',
        description: 'Use specified sphinx-build [$sphinx_build] for building document (default to be empty)')
 
+option('default_devices', type : 'boolean', value : true,
+       description: 'Include a default selection of devices in emulators')
 option('docs', type : 'feature', value : 'auto',
        description: 'Documentations build support')
 option('gettext', type : 'feature', value : 'auto',
-- 
2.29.2



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

* Re: [PATCH 02/18] curl: remove compatibility code, require 7.29.0
  2020-12-17  9:40 ` [PATCH 02/18] curl: remove compatibility code, require 7.29.0 Paolo Bonzini
@ 2020-12-17 10:08   ` Daniel P. Berrangé
  2020-12-17 11:48   ` Marc-André Lureau
  1 sibling, 0 replies; 43+ messages in thread
From: Daniel P. Berrangé @ 2020-12-17 10:08 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Marc-André Lureau, qemu-devel

On Thu, Dec 17, 2020 at 10:40:28AM +0100, Paolo Bonzini wrote:
> cURL 7.16.0 was released in October 2006.  Just remove code that is
> in all likelihood not being used anywhere, and require the oldest version
> found in currently supported distros, which is 7.29.0 from CentOS 7.
> 
> pkg-config is enough for QEMU, since it does not need extra information
> such as the path for certicate authorities.  All supported platforms
> today will all have pkg-config for curl, so we can drop curl-config.
> 
> Suggested-by: Daniel Berrangé <berrange@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  block/curl.c | 28 ----------------------------
>  configure    |  9 ++-------
>  2 files changed, 2 insertions(+), 35 deletions(-)
> 

> diff --git a/configure b/configure
> index 42b39544d4..c0a3e1556b 100755
> --- a/configure
> +++ b/configure
> @@ -3428,17 +3428,12 @@ done
>  ##########################################
>  # curl probe
>  if test "$curl" != "no" ; then
> -  if $pkg_config libcurl --exists; then
> -    curlconfig="$pkg_config libcurl"
> -  else
> -    curlconfig=curl-config
> -  fi
>    cat > $TMPC << EOF
>  #include <curl/curl.h>
>  int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
>  EOF
> -  curl_cflags=$($curlconfig --cflags 2>/dev/null)
> -  curl_libs=$($curlconfig --libs 2>/dev/null)
> +  curl_cflags=$($pkg_config libcurl --cflags 2>/dev/null)
> +  curl_libs=$($pkg_config libcurl --libs 2>/dev/null)

Should really be  libcurl >= 7.29.0, but since you're removing this in
the next patch, and have the right version check in meson, I'm ambivalent
here.

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



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



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

* Re: [PATCH 03/18] curl: convert to meson
  2020-12-17  9:40 ` [PATCH 03/18] curl: convert to meson Paolo Bonzini
@ 2020-12-17 10:11   ` Daniel P. Berrangé
  2020-12-17 11:59   ` Marc-André Lureau
  1 sibling, 0 replies; 43+ messages in thread
From: Daniel P. Berrangé @ 2020-12-17 10:11 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Marc-André Lureau, qemu-devel

On Thu, Dec 17, 2020 at 10:40:29AM +0100, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure                   | 31 ++++---------------------------
>  contrib/elf2dmp/meson.build |  2 +-
>  meson.build                 | 11 +++++++----
>  meson_options.txt           |  2 ++
>  4 files changed, 14 insertions(+), 32 deletions(-)

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


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



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

* Re: [PATCH 01/18] brlapi: convert to meson
  2020-12-17  9:40 ` [PATCH 01/18] brlapi: convert to meson Paolo Bonzini
@ 2020-12-17 11:35   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 11:35 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 6253 bytes --]

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  chardev/meson.build |  2 +-
>  configure           | 32 ++++----------------------------
>  meson.build         | 20 +++++++++++++++++---
>  meson_options.txt   |  2 ++
>  4 files changed, 24 insertions(+), 32 deletions(-)
>
> diff --git a/chardev/meson.build b/chardev/meson.build
> index 4e19722c5e..32377af383 100644
> --- a/chardev/meson.build
> +++ b/chardev/meson.build
> @@ -29,7 +29,7 @@ softmmu_ss.add(files('msmouse.c', 'wctablet.c',
> 'testdev.c'))
>
>  chardev_modules = {}
>
> -if config_host.has_key('CONFIG_BRLAPI')
> +if brlapi.found()
>    module_ss = ss.source_set()
>    module_ss.add(when: [brlapi], if_true: [files('baum.c'), pixman])
>    chardev_modules += { 'baum': module_ss }
> diff --git a/configure b/configure
> index 74eebfd692..42b39544d4 100755
> --- a/configure
> +++ b/configure
> @@ -306,7 +306,7 @@ for opt do
>    esac
>  done
>
> -brlapi="$default_feature"
> +brlapi="auto"
>  curl="$default_feature"
>  iconv="auto"
>  curses="auto"
> @@ -1105,9 +1105,9 @@ for opt do
>    ;;
>    --enable-xen-pci-passthrough) xen_pci_passthrough="enabled"
>    ;;
> -  --disable-brlapi) brlapi="no"
> +  --disable-brlapi) brlapi="disabled"
>    ;;
> -  --enable-brlapi) brlapi="yes"
> +  --enable-brlapi) brlapi="enabled"
>    ;;
>    --disable-kvm) kvm="disabled"
>    ;;
> @@ -3425,26 +3425,6 @@ for drv in $audio_drv_list; do
>      esac
>  done
>
> -##########################################
> -# BrlAPI probe
> -
> -if test "$brlapi" != "no" ; then
> -  brlapi_libs="-lbrlapi"
> -  cat > $TMPC << EOF
> -#include <brlapi.h>
> -#include <stddef.h>
> -int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
> -EOF
> -  if compile_prog "" "$brlapi_libs" ; then
> -    brlapi=yes
> -  else
> -    if test "$brlapi" = "yes" ; then
> -      feature_not_found "brlapi" "Install brlapi devel"
> -    fi
> -    brlapi=no
> -  fi
> -fi
> -
>  ##########################################
>  # curl probe
>  if test "$curl" != "no" ; then
> @@ -6134,10 +6114,6 @@ if test "$curl" = "yes" ; then
>    echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
>    echo "CURL_LIBS=$curl_libs" >> $config_host_mak
>  fi
> -if test "$brlapi" = "yes" ; then
> -  echo "CONFIG_BRLAPI=y" >> $config_host_mak
> -  echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
> -fi
>  if test "$gtk" = "yes" ; then
>    echo "CONFIG_GTK=y" >> $config_host_mak
>    echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
> @@ -6971,7 +6947,7 @@ NINJA=$ninja $meson setup \
>          -Dcocoa=$cocoa -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
>          -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 \
> +        -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
> diff --git a/meson.build b/meson.build
> index bb198f792a..70f81121d7 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -570,8 +570,21 @@ if have_system and not get_option('curses').disabled()
>  endif
>
>  brlapi = not_found
> -if 'CONFIG_BRLAPI' in config_host
> -  brlapi = declare_dependency(link_args:
> config_host['BRLAPI_LIBS'].split())
> +if not get_option('brlapi').auto() or have_system
>

with some new legit conditional check, ok


> +  brlapi = cc.find_library('brlapi', has_headers: ['brlapi.h'],
> +                         required: get_option('brlapi'),
> +                         static: enable_static)
> +  if brlapi.found() and not cc.links('''
> +     #include <brlapi.h>
> +     #include <stddef.h>
> +     int main(void) { return brlapi__openConnection (NULL, NULL, NULL);
> }''', dependencies: brlapi)
> +    brlapi = not_found
> +    if get_option('brlapi').enabled()
> +      error('could not link brlapi')
> +    else
> +      warning('could not link brlapi, disabling')
> +    endif
> +  endif
>  endif
>
>  sdl = not_found
> @@ -854,6 +867,7 @@
> config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR',
> get_option('prefix') /
>  config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') /
> qemu_moddir)
>  config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') /
> get_option('sysconfdir'))
>
> +config_host_data.set('CONFIG_BRLAPI', brlapi.found())
>  config_host_data.set('CONFIG_COCOA', cocoa.found())
>  config_host_data.set('CONFIG_LIBUDEV', libudev.found())
>  config_host_data.set('CONFIG_MPATH', mpathpersist.found())
> @@ -2164,7 +2178,7 @@ summary_info += {'xen support':
>  config_host.has_key('CONFIG_XEN_BACKEND')}
>  if config_host.has_key('CONFIG_XEN_BACKEND')
>    summary_info += {'xen ctrl version':
> config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
>  endif
> -summary_info += {'brlapi support':
> config_host.has_key('CONFIG_BRLAPI')}
> +summary_info += {'brlapi support':    brlapi.found()}
>  summary_info += {'Documentation':     build_docs}
>  summary_info += {'PIE':               get_option('b_pie')}
>  summary_info += {'vde support':       config_host.has_key('CONFIG_VDE')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 242e0769fb..62efe96a91 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -40,6 +40,8 @@ option('cfi', type: 'boolean', value: 'false',
>  option('cfi_debug', type: 'boolean', value: 'false',
>         description: 'Verbose errors in case of CFI violation')
>
> +option('brlapi', type : 'feature', value : 'auto',
> +       description: 'brlapi character device driver')
>  option('cocoa', type : 'feature', value : 'auto',
>         description: 'Cocoa user interface (macOS only)')
>  option('mpath', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 8437 bytes --]

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

* Re: [PATCH 02/18] curl: remove compatibility code, require 7.29.0
  2020-12-17  9:40 ` [PATCH 02/18] curl: remove compatibility code, require 7.29.0 Paolo Bonzini
  2020-12-17 10:08   ` Daniel P. Berrangé
@ 2020-12-17 11:48   ` Marc-André Lureau
  1 sibling, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 11:48 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Daniel Berrangé, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 4416 bytes --]

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> cURL 7.16.0 was released in October 2006.  Just remove code that is
> in all likelihood not being used anywhere, and require the oldest version
> found in currently supported distros, which is 7.29.0 from CentOS 7.
>
> pkg-config is enough for QEMU, since it does not need extra information
> such as the path for certicate authorities.  All supported platforms
> today will all have pkg-config for curl, so we can drop curl-config.
>
> Suggested-by: Daniel Berrangé <berrange@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  block/curl.c | 28 ----------------------------
>  configure    |  9 ++-------
>  2 files changed, 2 insertions(+), 35 deletions(-)
>
> diff --git a/block/curl.c b/block/curl.c
> index d24a4c5897..4ff895df8f 100644
> --- a/block/curl.c
> +++ b/block/curl.c
> @@ -37,26 +37,6 @@
>
>  // #define DEBUG_VERBOSE
>
> -#if LIBCURL_VERSION_NUM >= 0x071000
> -/* The multi interface timer callback was introduced in 7.16.0 */
> -#define NEED_CURL_TIMER_CALLBACK
> -#define HAVE_SOCKET_ACTION
> -#endif
> -
> -#ifndef HAVE_SOCKET_ACTION
> -/* If curl_multi_socket_action isn't available, define it statically here
> in
> - * terms of curl_multi_socket. Note that ev_bitmask will be ignored,
> which is
> - * less efficient but still safe. */
> -static CURLMcode __curl_multi_socket_action(CURLM *multi_handle,
> -                                            curl_socket_t sockfd,
> -                                            int ev_bitmask,
> -                                            int *running_handles)
> -{
> -    return curl_multi_socket(multi_handle, sockfd, running_handles);
> -}
> -#define curl_multi_socket_action __curl_multi_socket_action
> -#endif
> -
>  #define PROTOCOLS (CURLPROTO_HTTP | CURLPROTO_HTTPS | \
>                     CURLPROTO_FTP | CURLPROTO_FTPS)
>
> @@ -140,7 +120,6 @@ typedef struct BDRVCURLState {
>  static void curl_clean_state(CURLState *s);
>  static void curl_multi_do(void *arg);
>
> -#ifdef NEED_CURL_TIMER_CALLBACK
>  /* Called from curl_multi_do_locked, with s->mutex held.  */
>  static int curl_timer_cb(CURLM *multi, long timeout_ms, void *opaque)
>  {
> @@ -156,7 +135,6 @@ static int curl_timer_cb(CURLM *multi, long
> timeout_ms, void *opaque)
>      }
>      return 0;
>  }
> -#endif
>
>  /* Called from curl_multi_do_locked, with s->mutex held.  */
>  static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
> @@ -433,7 +411,6 @@ static void curl_multi_do(void *arg)
>
>  static void curl_multi_timeout_do(void *arg)
>  {
> -#ifdef NEED_CURL_TIMER_CALLBACK
>      BDRVCURLState *s = (BDRVCURLState *)arg;
>      int running;
>
> @@ -446,9 +423,6 @@ static void curl_multi_timeout_do(void *arg)
>
>      curl_multi_check_completion(s);
>      qemu_mutex_unlock(&s->mutex);
> -#else
> -    abort();
> -#endif
>  }
>
>  /* Called with s->mutex held.  */
> @@ -598,10 +572,8 @@ static void curl_attach_aio_context(BlockDriverState
> *bs,
>      s->multi = curl_multi_init();
>      s->aio_context = new_context;
>      curl_multi_setopt(s->multi, CURLMOPT_SOCKETFUNCTION, curl_sock_cb);
> -#ifdef NEED_CURL_TIMER_CALLBACK
>      curl_multi_setopt(s->multi, CURLMOPT_TIMERDATA, s);
>      curl_multi_setopt(s->multi, CURLMOPT_TIMERFUNCTION, curl_timer_cb);
> -#endif
>  }
>
>  static QemuOptsList runtime_opts = {
> diff --git a/configure b/configure
> index 42b39544d4..c0a3e1556b 100755
> --- a/configure
> +++ b/configure
> @@ -3428,17 +3428,12 @@ done
>  ##########################################
>  # curl probe
>  if test "$curl" != "no" ; then
> -  if $pkg_config libcurl --exists; then
> -    curlconfig="$pkg_config libcurl"
> -  else
> -    curlconfig=curl-config
> -  fi
>    cat > $TMPC << EOF
>  #include <curl/curl.h>
>  int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
>  EOF
> -  curl_cflags=$($curlconfig --cflags 2>/dev/null)
> -  curl_libs=$($curlconfig --libs 2>/dev/null)
> +  curl_cflags=$($pkg_config libcurl --cflags 2>/dev/null)
> +  curl_libs=$($pkg_config libcurl --libs 2>/dev/null)
>    if compile_prog "$curl_cflags" "$curl_libs" ; then
>      curl=yes
>    else
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 5596 bytes --]

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

* Re: [PATCH 03/18] curl: convert to meson
  2020-12-17  9:40 ` [PATCH 03/18] curl: convert to meson Paolo Bonzini
  2020-12-17 10:11   ` Daniel P. Berrangé
@ 2020-12-17 11:59   ` Marc-André Lureau
  2020-12-17 12:00     ` Marc-André Lureau
  1 sibling, 1 reply; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 11:59 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5708 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>
---
>  configure                   | 31 ++++---------------------------
>  contrib/elf2dmp/meson.build |  2 +-
>  meson.build                 | 11 +++++++----
>  meson_options.txt           |  2 ++
>  4 files changed, 14 insertions(+), 32 deletions(-)
>
> diff --git a/configure b/configure
> index c0a3e1556b..71196b1fe7 100755
> --- a/configure
> +++ b/configure
> @@ -307,7 +307,7 @@ for opt do
>  done
>
>  brlapi="auto"
> -curl="$default_feature"
> +curl="auto"
>

What about default_feature=no ?

 iconv="auto"
>  curses="auto"
>  docs="auto"
> @@ -1216,9 +1216,9 @@ for opt do
>    ;;
>    --enable-iconv) iconv="enabled"
>    ;;
> -  --disable-curl) curl="no"
> +  --disable-curl) curl="disabled"
>    ;;
> -  --enable-curl) curl="yes"
> +  --enable-curl) curl="enabled"
>    ;;
>    --disable-fdt) fdt="disabled"
>    ;;
> @@ -3425,25 +3425,6 @@ for drv in $audio_drv_list; do
>      esac
>  done
>
> -##########################################
> -# curl probe
> -if test "$curl" != "no" ; then
> -  cat > $TMPC << EOF
> -#include <curl/curl.h>
> -int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
> -EOF
> -  curl_cflags=$($pkg_config libcurl --cflags 2>/dev/null)
> -  curl_libs=$($pkg_config libcurl --libs 2>/dev/null)
> -  if compile_prog "$curl_cflags" "$curl_libs" ; then
> -    curl=yes
> -  else
> -    if test "$curl" = "yes" ; then
> -      feature_not_found "curl" "Install libcurl devel"
> -    fi
> -    curl=no
> -  fi
> -fi # test "$curl"
> -
>  ##########################################
>  # glib support probe
>
> @@ -6104,11 +6085,6 @@ fi
>  if test "$bswap_h" = "yes" ; then
>    echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
>  fi
> -if test "$curl" = "yes" ; then
> -  echo "CONFIG_CURL=y" >> $config_host_mak
> -  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
> -  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
> -fi
>  if test "$gtk" = "yes" ; then
>    echo "CONFIG_GTK=y" >> $config_host_mak
>    echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
> @@ -6943,6 +6919,7 @@ NINJA=$ninja $meson setup \
>          -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 \
> +        -Dcurl=$curl \
>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
> diff --git a/contrib/elf2dmp/meson.build b/contrib/elf2dmp/meson.build
> index b3de173316..4d86cb390a 100644
> --- a/contrib/elf2dmp/meson.build
> +++ b/contrib/elf2dmp/meson.build
> @@ -1,4 +1,4 @@
> -if 'CONFIG_CURL' in config_host
> +if curl.found()
>    executable('elf2dmp', files('main.c', 'addrspace.c', 'download.c',
> 'pdb.c', 'qemu_elf.c'),
>               dependencies: [glib, curl],
>               install: true)
> diff --git a/meson.build b/meson.build
> index 70f81121d7..83dbc61acd 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -392,9 +392,11 @@ if 'CONFIG_VIRGL' in config_host
>                               link_args: config_host['VIRGL_LIBS'].split())
>  endif
>  curl = not_found
> -if 'CONFIG_CURL' in config_host
> -  curl = declare_dependency(compile_args:
> config_host['CURL_CFLAGS'].split(),
> -                            link_args: config_host['CURL_LIBS'].split())
> +if not get_option('curl').auto() or have_block
> +  curl = dependency('libcurl', version: '>=7.29.0',
> +                    method: 'pkg-config',
> +                    required: get_option('curl'),
> +                    static: enable_static)
>  endif
>  libudev = not_found
>  if targetos == 'linux' and (have_system or have_tools)
> @@ -872,6 +874,7 @@ config_host_data.set('CONFIG_COCOA', cocoa.found())
>  config_host_data.set('CONFIG_LIBUDEV', libudev.found())
>  config_host_data.set('CONFIG_MPATH', mpathpersist.found())
>  config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
> +config_host_data.set('CONFIG_CURL', curl.found())
>  config_host_data.set('CONFIG_CURSES', curses.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
> @@ -2160,7 +2163,7 @@ summary_info += {'iconv support':     iconv.found()}
>  summary_info += {'curses support':    curses.found()}
>  # TODO: add back version
>  summary_info += {'virgl support':     config_host.has_key('CONFIG_VIRGL')}
> -summary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
> +summary_info += {'curl support':      curl.found()}
>  summary_info += {'mingw32 support':   targetos == 'windows'}
>  summary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
>  summary_info += {'Block whitelist (rw)':
> config_host['CONFIG_BDRV_RW_WHITELIST']}
> diff --git a/meson_options.txt b/meson_options.txt
> index 62efe96a91..2b845ac62b 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -44,6 +44,8 @@ option('brlapi', type : 'feature', value : 'auto',
>         description: 'brlapi character device driver')
>  option('cocoa', type : 'feature', value : 'auto',
>         description: 'Cocoa user interface (macOS only)')
> +option('curl', type : 'feature', value : 'auto',
> +       description: 'CURL block device driver')
>  option('mpath', type : 'feature', value : 'auto',
>         description: 'Multipath persistent reservation passthrough')
>  option('iconv', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 7903 bytes --]

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

* Re: [PATCH 03/18] curl: convert to meson
  2020-12-17 11:59   ` Marc-André Lureau
@ 2020-12-17 12:00     ` Marc-André Lureau
  2020-12-17 12:05       ` Paolo Bonzini
  0 siblings, 1 reply; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:00 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 6307 bytes --]

On Thu, Dec 17, 2020 at 3:59 PM Marc-André Lureau <
marcandre.lureau@redhat.com> wrote:

> Hi
>
> On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>
> ---
>>  configure                   | 31 ++++---------------------------
>>  contrib/elf2dmp/meson.build |  2 +-
>>  meson.build                 | 11 +++++++----
>>  meson_options.txt           |  2 ++
>>  4 files changed, 14 insertions(+), 32 deletions(-)
>>
>> diff --git a/configure b/configure
>> index c0a3e1556b..71196b1fe7 100755
>> --- a/configure
>> +++ b/configure
>> @@ -307,7 +307,7 @@ for opt do
>>  done
>>
>>  brlapi="auto"
>> -curl="$default_feature"
>> +curl="auto"
>>
>
> What about default_feature=no ?
>

Oh got it:
        $(if test "$default_features" = no; then echo
"-Dauto_features=disabled"; fi) \

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


>  iconv="auto"
>>  curses="auto"
>>  docs="auto"
>> @@ -1216,9 +1216,9 @@ for opt do
>>    ;;
>>    --enable-iconv) iconv="enabled"
>>    ;;
>> -  --disable-curl) curl="no"
>> +  --disable-curl) curl="disabled"
>>    ;;
>> -  --enable-curl) curl="yes"
>> +  --enable-curl) curl="enabled"
>>    ;;
>>    --disable-fdt) fdt="disabled"
>>    ;;
>> @@ -3425,25 +3425,6 @@ for drv in $audio_drv_list; do
>>      esac
>>  done
>>
>> -##########################################
>> -# curl probe
>> -if test "$curl" != "no" ; then
>> -  cat > $TMPC << EOF
>> -#include <curl/curl.h>
>> -int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0;
>> }
>> -EOF
>> -  curl_cflags=$($pkg_config libcurl --cflags 2>/dev/null)
>> -  curl_libs=$($pkg_config libcurl --libs 2>/dev/null)
>> -  if compile_prog "$curl_cflags" "$curl_libs" ; then
>> -    curl=yes
>> -  else
>> -    if test "$curl" = "yes" ; then
>> -      feature_not_found "curl" "Install libcurl devel"
>> -    fi
>> -    curl=no
>> -  fi
>> -fi # test "$curl"
>> -
>>  ##########################################
>>  # glib support probe
>>
>> @@ -6104,11 +6085,6 @@ fi
>>  if test "$bswap_h" = "yes" ; then
>>    echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
>>  fi
>> -if test "$curl" = "yes" ; then
>> -  echo "CONFIG_CURL=y" >> $config_host_mak
>> -  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
>> -  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
>> -fi
>>  if test "$gtk" = "yes" ; then
>>    echo "CONFIG_GTK=y" >> $config_host_mak
>>    echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
>> @@ -6943,6 +6919,7 @@ NINJA=$ninja $meson setup \
>>          -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 \
>> +        -Dcurl=$curl \
>>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
>>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs
>> \
>>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>> diff --git a/contrib/elf2dmp/meson.build b/contrib/elf2dmp/meson.build
>> index b3de173316..4d86cb390a 100644
>> --- a/contrib/elf2dmp/meson.build
>> +++ b/contrib/elf2dmp/meson.build
>> @@ -1,4 +1,4 @@
>> -if 'CONFIG_CURL' in config_host
>> +if curl.found()
>>    executable('elf2dmp', files('main.c', 'addrspace.c', 'download.c',
>> 'pdb.c', 'qemu_elf.c'),
>>               dependencies: [glib, curl],
>>               install: true)
>> diff --git a/meson.build b/meson.build
>> index 70f81121d7..83dbc61acd 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -392,9 +392,11 @@ if 'CONFIG_VIRGL' in config_host
>>                               link_args:
>> config_host['VIRGL_LIBS'].split())
>>  endif
>>  curl = not_found
>> -if 'CONFIG_CURL' in config_host
>> -  curl = declare_dependency(compile_args:
>> config_host['CURL_CFLAGS'].split(),
>> -                            link_args: config_host['CURL_LIBS'].split())
>> +if not get_option('curl').auto() or have_block
>> +  curl = dependency('libcurl', version: '>=7.29.0',
>> +                    method: 'pkg-config',
>> +                    required: get_option('curl'),
>> +                    static: enable_static)
>>  endif
>>  libudev = not_found
>>  if targetos == 'linux' and (have_system or have_tools)
>> @@ -872,6 +874,7 @@ config_host_data.set('CONFIG_COCOA', cocoa.found())
>>  config_host_data.set('CONFIG_LIBUDEV', libudev.found())
>>  config_host_data.set('CONFIG_MPATH', mpathpersist.found())
>>  config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
>> +config_host_data.set('CONFIG_CURL', curl.found())
>>  config_host_data.set('CONFIG_CURSES', curses.found())
>>  config_host_data.set('CONFIG_SDL', sdl.found())
>>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>> @@ -2160,7 +2163,7 @@ summary_info += {'iconv support':     iconv.found()}
>>  summary_info += {'curses support':    curses.found()}
>>  # TODO: add back version
>>  summary_info += {'virgl support':
>>  config_host.has_key('CONFIG_VIRGL')}
>> -summary_info += {'curl support':      config_host.has_key('CONFIG_CURL')}
>> +summary_info += {'curl support':      curl.found()}
>>  summary_info += {'mingw32 support':   targetos == 'windows'}
>>  summary_info += {'Audio drivers':
>>  config_host['CONFIG_AUDIO_DRIVERS']}
>>  summary_info += {'Block whitelist (rw)':
>> config_host['CONFIG_BDRV_RW_WHITELIST']}
>> diff --git a/meson_options.txt b/meson_options.txt
>> index 62efe96a91..2b845ac62b 100644
>> --- a/meson_options.txt
>> +++ b/meson_options.txt
>> @@ -44,6 +44,8 @@ option('brlapi', type : 'feature', value : 'auto',
>>         description: 'brlapi character device driver')
>>  option('cocoa', type : 'feature', value : 'auto',
>>         description: 'Cocoa user interface (macOS only)')
>> +option('curl', type : 'feature', value : 'auto',
>> +       description: 'CURL block device driver')
>>  option('mpath', type : 'feature', value : 'auto',
>>         description: 'Multipath persistent reservation passthrough')
>>  option('iconv', type : 'feature', value : 'auto',
>> --
>> 2.29.2
>>
>>
>>

[-- Attachment #2: Type: text/html, Size: 8829 bytes --]

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

* Re: [PATCH 03/18] curl: convert to meson
  2020-12-17 12:00     ` Marc-André Lureau
@ 2020-12-17 12:05       ` Paolo Bonzini
  0 siblings, 0 replies; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17 12:05 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: qemu-devel

On 17/12/20 13:00, Marc-André Lureau wrote:
> 
>         -curl="$default_feature"
>         +curl="auto"
> 
> 
>     What about default_feature=no ?
> 
> 
> Oh got it:
>          $(if test "$default_features" = no; then echo 
> "-Dauto_features=disabled"; fi) \

Yeah, Meson has that feature natively.  The plan is to:

1) remove xxx="$default_features" altogether by moving all options to meson

2) possibly remove xxx="auto" by resurrecting the introspection-based 
command line option parsing script.

Paolo



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

* Re: [PATCH 04/18] glusterfs: convert to meson
  2020-12-17  9:40 ` [PATCH 04/18] glusterfs: " Paolo Bonzini
@ 2020-12-17 12:15   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:15 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 10057 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 102 ++--------------------------------------------
>  meson.build       |  46 +++++++++++++++++++--
>  meson_options.txt |   2 +
>  3 files changed, 48 insertions(+), 102 deletions(-)
>
> diff --git a/configure b/configure
> index 71196b1fe7..5529ac4b32 100755
> --- a/configure
> +++ b/configure
> @@ -415,13 +415,7 @@ crypto_afalg="no"
>  cfi="false"
>  cfi_debug="false"
>  seccomp="$default_feature"
> -glusterfs="$default_feature"
> -glusterfs_xlator_opt="no"
> -glusterfs_discard="no"
> -glusterfs_fallocate="no"
> -glusterfs_zerofill="no"
> -glusterfs_ftruncate_has_stat="no"
> -glusterfs_iocb_has_stat="no"
> +glusterfs="auto"
>  gtk="$default_feature"
>  gtk_gl="no"
>  tls_priority="NORMAL"
> @@ -1366,7 +1360,7 @@ for opt do
>    ;;
>    --disable-seccomp) seccomp="no"
>    ;;
> -  --disable-glusterfs) glusterfs="no"
> +  --disable-glusterfs) glusterfs="disabled"
>    ;;
>    --disable-avx2) avx2_opt="no"
>    ;;
> @@ -1377,7 +1371,7 @@ for opt do
>    --enable-avx512f) avx512f_opt="yes"
>    ;;
>
> -  --enable-glusterfs) glusterfs="yes"
> +  --enable-glusterfs) glusterfs="enabled"
>    ;;
>    --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
>        echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
> @@ -3871,64 +3865,6 @@ if test "$libxml2" != "no" ; then
>      fi
>  fi
>
> -##########################################
> -# glusterfs probe
> -if test "$glusterfs" != "no" ; then
> -  if $pkg_config --atleast-version=3 glusterfs-api; then
> -    glusterfs="yes"
> -    glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
> -    glusterfs_libs=$($pkg_config --libs glusterfs-api)
> -    if $pkg_config --atleast-version=4 glusterfs-api; then
> -      glusterfs_xlator_opt="yes"
> -    fi
> -    if $pkg_config --atleast-version=5 glusterfs-api; then
> -      glusterfs_discard="yes"
> -    fi
> -    if $pkg_config --atleast-version=6 glusterfs-api; then
> -      glusterfs_fallocate="yes"
> -      glusterfs_zerofill="yes"
> -    fi
> -    cat > $TMPC << EOF
> -#include <glusterfs/api/glfs.h>
> -
> -int
> -main(void)
> -{
> -       /* new glfs_ftruncate() passes two additional args */
> -       return glfs_ftruncate(NULL, 0, NULL, NULL);
> -}
> -EOF
> -    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
> -      glusterfs_ftruncate_has_stat="yes"
> -    fi
> -    cat > $TMPC << EOF
> -#include <glusterfs/api/glfs.h>
> -
> -/* new glfs_io_cbk() passes two additional glfs_stat structs */
> -static void
> -glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat,
> struct glfs_stat *poststat, void *data)
> -{}
> -
> -int
> -main(void)
> -{
> -       glfs_io_cbk iocb = &glusterfs_iocb;
> -       iocb(NULL, 0 , NULL, NULL, NULL);
> -       return 0;
> -}
> -EOF
> -    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
> -      glusterfs_iocb_has_stat="yes"
> -    fi
> -  else
> -    if test "$glusterfs" = "yes" ; then
> -      feature_not_found "GlusterFS backend support" \
> -          "Install glusterfs-api devel >= 3"
> -    fi
> -    glusterfs="no"
> -  fi
> -fi
> -
>  # Check for inotify functions when we are building linux-user
>  # emulator.  This is done because older glibc versions don't
>  # have syscall stubs for these implemented.  In that case we
> @@ -6415,36 +6351,6 @@ if test "$getauxval" = "yes" ; then
>    echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
>  fi
>
> -if test "$glusterfs" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
> -  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
> -  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
> -fi
> -
> -if test "$glusterfs_xlator_opt" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
> -fi
> -
> -if test "$glusterfs_discard" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
> -fi
> -
> -if test "$glusterfs_fallocate" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
> -fi
> -
> -if test "$glusterfs_zerofill" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
> -fi
> -
> -if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
> -fi
> -
> -if test "$glusterfs_iocb_has_stat" = "yes" ; then
> -  echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
> -fi
> -
>  if test "$libssh" = "yes" ; then
>    echo "CONFIG_LIBSSH=y" >> $config_host_mak
>    echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
> @@ -6919,7 +6825,7 @@ NINJA=$ninja $meson setup \
>          -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 \
> -        -Dcurl=$curl \
> +        -Dcurl=$curl -Dglusterfs=$glusterfs \
>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
> diff --git a/meson.build b/meson.build
> index 83dbc61acd..409b958a7f 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -613,9 +613,40 @@ if 'CONFIG_RBD' in config_host
>    rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
>  endif
>  glusterfs = not_found
> -if 'CONFIG_GLUSTERFS' in config_host
> -  glusterfs = declare_dependency(compile_args:
> config_host['GLUSTERFS_CFLAGS'].split(),
> -                                 link_args:
> config_host['GLUSTERFS_LIBS'].split())
> +glusterfs_ftruncate_has_stat = false
> +glusterfs_iocb_has_stat = false
> +if not get_option('glusterfs').auto() or have_block
> +  glusterfs = dependency('glusterfs-api', version: '>=3',
> +                         required: get_option('glusterfs'),
> +                         method: 'pkg-config', static: enable_static)
> +  if glusterfs.found()
> +    glusterfs_ftruncate_has_stat = cc.links('''
> +      #include <glusterfs/api/glfs.h>
> +
> +      int
> +      main(void)
> +      {
> +          /* new glfs_ftruncate() passes two additional args */
> +          return glfs_ftruncate(NULL, 0, NULL, NULL);
> +      }
> +    ''', dependencies: glusterfs)
> +    glusterfs_iocb_has_stat = cc.links('''
> +      #include <glusterfs/api/glfs.h>
> +
> +      /* new glfs_io_cbk() passes two additional glfs_stat structs */
> +      static void
> +      glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat
> *prestat, struct glfs_stat *poststat, void *data)
> +      {}
> +
> +      int
> +      main(void)
> +      {
> +          glfs_io_cbk iocb = &glusterfs_iocb;
> +          iocb(NULL, 0 , NULL, NULL, NULL);
> +          return 0;
> +      }
> +    ''', dependencies: glusterfs)
> +  endif
>  endif
>  libssh = not_found
>  if 'CONFIG_LIBSSH' in config_host
> @@ -876,6 +907,13 @@ config_host_data.set('CONFIG_MPATH',
> mpathpersist.found())
>  config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
>  config_host_data.set('CONFIG_CURL', curl.found())
>  config_host_data.set('CONFIG_CURSES', curses.found())
> +config_host_data.set('CONFIG_GLUSTERFS', glusterfs.found())
> +config_host_data.set('CONFIG_GLUSTERFS_XLATOR_OPT',
> glusterfs.version().version_compare('>=4'))
> +config_host_data.set('CONFIG_GLUSTERFS_DISCARD',
> glusterfs.version().version_compare('>=5'))
> +config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE',
> glusterfs.version().version_compare('>=6'))
> +config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL',
> glusterfs.version().version_compare('>=6'))
> +config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT',
> glusterfs_ftruncate_has_stat)
> +config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT',
> glusterfs_iocb_has_stat)
>


Since the header doesn't seem to export the version, we could have a
CONFIG_GLUSTERFS_VERSION with the major version instead.. for a future
cleanup eventually

lgtm
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

 config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
> @@ -2252,7 +2290,7 @@ summary_info += {'coroutine pool':
> config_host['CONFIG_COROUTINE_POOL'] == '1
>  summary_info += {'debug stack usage':
> config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
>  summary_info += {'mutex debugging':
>  config_host.has_key('CONFIG_DEBUG_MUTEX')}
>  summary_info += {'crypto afalg':
> config_host.has_key('CONFIG_AF_ALG')}
> -summary_info += {'GlusterFS support':
> config_host.has_key('CONFIG_GLUSTERFS')}
> +summary_info += {'GlusterFS support': glusterfs.found()}
>  summary_info += {'gcov':              get_option('b_coverage')}
>  summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
>  summary_info += {'libssh support':
> config_host.has_key('CONFIG_LIBSSH')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 2b845ac62b..b5d84bb88b 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -46,6 +46,8 @@ option('cocoa', type : 'feature', value : 'auto',
>         description: 'Cocoa user interface (macOS only)')
>  option('curl', type : 'feature', value : 'auto',
>         description: 'CURL block device driver')
> +option('glusterfs', type : 'feature', value : 'auto',
> +       description: 'Glusterfs block device driver')
>  option('mpath', type : 'feature', value : 'auto',
>         description: 'Multipath persistent reservation passthrough')
>  option('iconv', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 12958 bytes --]

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

* Re: [PATCH 05/18] bzip2: convert to meson
  2020-12-17  9:40 ` [PATCH 05/18] bzip2: " Paolo Bonzini
@ 2020-12-17 12:24   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:24 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5284 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 31 ++++---------------------------
>  meson.build       | 18 +++++++++++++++---
>  meson_options.txt |  2 ++
>  3 files changed, 21 insertions(+), 30 deletions(-)
>
> diff --git a/configure b/configure
> index 5529ac4b32..082ac3bf35 100755
> --- a/configure
> +++ b/configure
> @@ -396,7 +396,7 @@ avx2_opt="$default_feature"
>  capstone="auto"
>  lzo="$default_feature"
>  snappy="$default_feature"
> -bzip2="$default_feature"
> +bzip2="auto"
>  lzfse="$default_feature"
>  zstd="$default_feature"
>  guest_agent="$default_feature"
> @@ -1320,9 +1320,9 @@ for opt do
>    ;;
>    --enable-snappy) snappy="yes"
>    ;;
> -  --disable-bzip2) bzip2="no"
> +  --disable-bzip2) bzip2="disabled"
>    ;;
> -  --enable-bzip2) bzip2="yes"
> +  --enable-bzip2) bzip2="enabled"
>    ;;
>    --enable-lzfse) lzfse="yes"
>    ;;
> @@ -2496,24 +2496,6 @@ EOF
>      fi
>  fi
>
> -##########################################
> -# bzip2 check
> -
> -if test "$bzip2" != "no" ; then
> -    cat > $TMPC << EOF
> -#include <bzlib.h>
> -int main(void) { BZ2_bzlibVersion(); return 0; }
> -EOF
> -    if compile_prog "" "-lbz2" ; then
> -        bzip2="yes"
> -    else
> -        if test "$bzip2" = "yes"; then
> -            feature_not_found "libbzip2" "Install libbzip2 devel"
> -        fi
> -        bzip2="no"
> -    fi
> -fi
> -
>  ##########################################
>  # lzfse check
>
> @@ -6238,11 +6220,6 @@ if test "$snappy" = "yes" ; then
>    echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
>  fi
>
> -if test "$bzip2" = "yes" ; then
> -  echo "CONFIG_BZIP2=y" >> $config_host_mak
> -  echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
> -fi
> -
>  if test "$lzfse" = "yes" ; then
>    echo "CONFIG_LZFSE=y" >> $config_host_mak
>    echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
> @@ -6825,7 +6802,7 @@ NINJA=$ninja $meson setup \
>          -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 \
> -        -Dcurl=$curl -Dglusterfs=$glusterfs \
> +        -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 \
>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
> diff --git a/meson.build b/meson.build
> index 409b958a7f..9ba8eecf37 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -654,8 +654,20 @@ if 'CONFIG_LIBSSH' in config_host
>                                link_args:
> config_host['LIBSSH_LIBS'].split())
>  endif
>  libbzip2 = not_found
> -if 'CONFIG_BZIP2' in config_host
> -  libbzip2 = declare_dependency(link_args:
> config_host['BZIP2_LIBS'].split())
> +if not get_option('bzip2').auto() or have_block
> +  libbzip2 = cc.find_library('bz2', has_headers: ['bzlib.h'],
> +                             required: get_option('bzip2'),
> +                             static: enable_static)
> +  if libbzip2.found() and not cc.links('''
> +     #include <bzlib.h>
> +     int main(void) { BZ2_bzlibVersion(); return 0; }''', dependencies:
> libbzip2)
> +    libbzip2 = not_found
> +    if get_option('bzip2').enabled()
> +      error('could not link libbzip2')
> +    else
> +      warning('could not link libbzip2, disabling')
> +    endif
>

sigh, they don't have pkg-config yet... oh well, the diff stat is still
looking good

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

+  endif
>  endif
>  liblzfse = not_found
>  if 'CONFIG_LZFSE' in config_host
> @@ -2298,7 +2310,7 @@ summary_info += {'QOM debugging':
>  config_host.has_key('CONFIG_QOM_CAST_DEBUG
>  summary_info += {'Live block migration':
> config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
>  summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
>  summary_info += {'snappy support':
> config_host.has_key('CONFIG_SNAPPY')}
> -summary_info += {'bzip2 support':     config_host.has_key('CONFIG_BZIP2')}
> +summary_info += {'bzip2 support':     libbzip2.found()}
>  summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
>  summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
>  summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
> diff --git a/meson_options.txt b/meson_options.txt
> index b5d84bb88b..fd16f3b399 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -42,6 +42,8 @@ option('cfi_debug', type: 'boolean', value: 'false',
>
>  option('brlapi', type : 'feature', value : 'auto',
>         description: 'brlapi character device driver')
> +option('bzip2', type : 'feature', value : 'auto',
> +       description: 'bzip2 support for DMG images')
>  option('cocoa', type : 'feature', value : 'auto',
>         description: 'Cocoa user interface (macOS only)')
>  option('curl', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 7226 bytes --]

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

* Re: [PATCH 06/18] libiscsi: convert to meson
  2020-12-17  9:40 ` [PATCH 06/18] libiscsi: " Paolo Bonzini
@ 2020-12-17 12:25   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:25 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 7322 bytes --]

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  block/meson.build                   |  2 +-
>  configure                           | 29 ++++-------------------------
>  contrib/vhost-user-scsi/meson.build |  2 +-
>  meson.build                         | 10 ++++++----
>  meson_options.txt                   |  2 ++
>  5 files changed, 14 insertions(+), 31 deletions(-)
>
> diff --git a/block/meson.build b/block/meson.build
> index b02cb14aad..134034abb4 100644
> --- a/block/meson.build
> +++ b/block/meson.build
> @@ -59,7 +59,7 @@ block_ss.add(when: 'CONFIG_QED', if_true: files(
>  block_ss.add(when: [libxml2, 'CONFIG_PARALLELS'], if_true:
> files('parallels.c'))
>  block_ss.add(when: 'CONFIG_WIN32', if_true: files('file-win32.c',
> 'win32-aio.c'))
>  block_ss.add(when: 'CONFIG_POSIX', if_true: [files('file-posix.c'),
> coref, iokit])
> -block_ss.add(when: 'CONFIG_LIBISCSI', if_true: files('iscsi-opts.c'))
> +block_ss.add(when: libiscsi, if_true: files('iscsi-opts.c'))
>  block_ss.add(when: 'CONFIG_LINUX', if_true: files('nvme.c'))
>  block_ss.add(when: 'CONFIG_REPLICATION', if_true: files('replication.c'))
>  block_ss.add(when: 'CONFIG_SHEEPDOG', if_true: files('sheepdog.c'))
> diff --git a/configure b/configure
> index 082ac3bf35..e22c56e8f6 100755
> --- a/configure
> +++ b/configure
> @@ -406,7 +406,7 @@ guest_agent_msi="$default_feature"
>  vss_win32_sdk="$default_feature"
>  win_sdk="no"
>  want_tools="$default_feature"
> -libiscsi="$default_feature"
> +libiscsi="auto"
>  libnfs="$default_feature"
>  coroutine=""
>  coroutine_pool="$default_feature"
> @@ -1139,9 +1139,9 @@ for opt do
>    ;;
>    --enable-spice) spice="yes"
>    ;;
> -  --disable-libiscsi) libiscsi="no"
> +  --disable-libiscsi) libiscsi="disabled"
>    ;;
> -  --enable-libiscsi) libiscsi="yes"
> +  --enable-libiscsi) libiscsi="enabled"
>    ;;
>    --disable-libnfs) libnfs="no"
>    ;;
> @@ -4315,21 +4315,6 @@ if compile_prog "" "" ; then
>    bswap_h=yes
>  fi
>
> -##########################################
> -# Do we have libiscsi >= 1.9.0
> -if test "$libiscsi" != "no" ; then
> -  if $pkg_config --atleast-version=1.9.0 libiscsi; then
> -    libiscsi="yes"
> -    libiscsi_cflags=$($pkg_config --cflags libiscsi)
> -    libiscsi_libs=$($pkg_config --libs libiscsi)
> -  else
> -    if test "$libiscsi" = "yes" ; then
> -      feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
> -    fi
> -    libiscsi="no"
> -  fi
> -fi
> -
>  ##########################################
>  # Do we need librt
>  # uClibc provides 2 versions of clock_gettime(), one with realtime
> @@ -6231,12 +6216,6 @@ if test "$zstd" = "yes" ; then
>    echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
>  fi
>
> -if test "$libiscsi" = "yes" ; then
> -  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
> -  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
> -  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
> -fi
> -
>  if test "$libnfs" = "yes" ; then
>    echo "CONFIG_LIBNFS=y" >> $config_host_mak
>    echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
> @@ -6802,7 +6781,7 @@ NINJA=$ninja $meson setup \
>          -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 \
> -        -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 \
> +        -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
> diff --git a/contrib/vhost-user-scsi/meson.build
> b/contrib/vhost-user-scsi/meson.build
> index 044c50bf43..cc893f6f20 100644
> --- a/contrib/vhost-user-scsi/meson.build
> +++ b/contrib/vhost-user-scsi/meson.build
> @@ -1,4 +1,4 @@
> -if 'CONFIG_LIBISCSI' in config_host
> +if libiscsi.found()
>    executable('vhost-user-scsi', files('vhost-user-scsi.c'),
>               dependencies: [qemuutil, libiscsi, vhost_user],
>               build_by_default: targetos == 'linux',
> diff --git a/meson.build b/meson.build
> index 9ba8eecf37..3f53a7f1b2 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -372,9 +372,10 @@ if 'CONFIG_PLUGIN' in config_host
>    libdl = cc.find_library('dl', required: true)
>  endif
>  libiscsi = not_found
> -if 'CONFIG_LIBISCSI' in config_host
> -  libiscsi = declare_dependency(compile_args:
> config_host['LIBISCSI_CFLAGS'].split(),
> -                                link_args:
> config_host['LIBISCSI_LIBS'].split())
> +if not get_option('libiscsi').auto() or have_block
> +  libiscsi = dependency('libiscsi', version: '>=1.9.0',
> +                         required: get_option('libiscsi'),
> +                         method: 'pkg-config', static: enable_static)
>  endif
>  zstd = not_found
>  if 'CONFIG_ZSTD' in config_host
> @@ -926,6 +927,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE',
> glusterfs.version().version_c
>  config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL',
> glusterfs.version().version_compare('>=6'))
>  config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT',
> glusterfs_ftruncate_has_stat)
>  config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT',
> glusterfs_iocb_has_stat)
> +config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
> @@ -2283,7 +2285,7 @@ summary_info += {'libusb':
> config_host.has_key('CONFIG_USB_LIBUSB')}
>  summary_info += {'usb net redir':
>  config_host.has_key('CONFIG_USB_REDIR')}
>  summary_info += {'OpenGL support':
> config_host.has_key('CONFIG_OPENGL')}
>  summary_info += {'OpenGL dmabufs':
> config_host.has_key('CONFIG_OPENGL_DMABUF')}
> -summary_info += {'libiscsi support':
> config_host.has_key('CONFIG_LIBISCSI')}
> +summary_info += {'libiscsi support':  libiscsi.found()}
>  summary_info += {'libnfs support':
> config_host.has_key('CONFIG_LIBNFS')}
>  summary_info += {'build guest agent':
> config_host.has_key('CONFIG_GUEST_AGENT')}
>  if targetos == 'windows'
> diff --git a/meson_options.txt b/meson_options.txt
> index fd16f3b399..b562d4f1a6 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -50,6 +50,8 @@ option('curl', type : 'feature', value : 'auto',
>         description: 'CURL block device driver')
>  option('glusterfs', type : 'feature', value : 'auto',
>         description: 'Glusterfs block device driver')
> +option('libiscsi', type : 'feature', value : 'auto',
> +       description: 'libiscsi userspace initiator')
>  option('mpath', type : 'feature', value : 'auto',
>         description: 'Multipath persistent reservation passthrough')
>  option('iconv', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 9489 bytes --]

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

* Re: [PATCH 07/18] libnfs: convert to meson
  2020-12-17  9:40 ` [PATCH 07/18] libnfs: " Paolo Bonzini
@ 2020-12-17 12:26   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:26 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5505 bytes --]

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure         | 27 ++++-----------------------
>  meson.build       |  9 ++++++---
>  meson_options.txt |  2 ++
>  3 files changed, 12 insertions(+), 26 deletions(-)
>
> diff --git a/configure b/configure
> index e22c56e8f6..c404252b17 100755
> --- a/configure
> +++ b/configure
> @@ -407,7 +407,7 @@ vss_win32_sdk="$default_feature"
>  win_sdk="no"
>  want_tools="$default_feature"
>  libiscsi="auto"
> -libnfs="$default_feature"
> +libnfs="auto"
>  coroutine=""
>  coroutine_pool="$default_feature"
>  debug_stack_usage="no"
> @@ -1143,9 +1143,9 @@ for opt do
>    ;;
>    --enable-libiscsi) libiscsi="enabled"
>    ;;
> -  --disable-libnfs) libnfs="no"
> +  --disable-libnfs) libnfs="disabled"
>    ;;
> -  --enable-libnfs) libnfs="yes"
> +  --enable-libnfs) libnfs="enabled"
>    ;;
>    --enable-profiler) profiler="yes"
>    ;;
> @@ -5561,20 +5561,6 @@ if test "$have_ubsan" = "yes"; then
>    QEMU_LDFLAGS="-fsanitize=undefined $QEMU_LDFLAGS"
>  fi
>
> -##########################################
> -# Do we have libnfs
> -if test "$libnfs" != "no" ; then
> -  if $pkg_config --atleast-version=1.9.3 libnfs; then
> -    libnfs="yes"
> -    libnfs_libs=$($pkg_config --libs libnfs)
> -  else
> -    if test "$libnfs" = "yes" ; then
> -      feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
> -    fi
> -    libnfs="no"
> -  fi
> -fi
> -
>  ##########################################
>
>  # Exclude --warn-common with TSan to suppress warnings from the TSan
> libraries.
> @@ -6216,11 +6202,6 @@ if test "$zstd" = "yes" ; then
>    echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
>  fi
>
> -if test "$libnfs" = "yes" ; then
> -  echo "CONFIG_LIBNFS=y" >> $config_host_mak
> -  echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
> -fi
> -
>  if test "$seccomp" = "yes"; then
>    echo "CONFIG_SECCOMP=y" >> $config_host_mak
>    echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
> @@ -6782,7 +6763,7 @@ NINJA=$ninja $meson setup \
>          -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f
> -Dvirtiofsd=$virtiofsd \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
> -        -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
> +        -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 3f53a7f1b2..0b8c9c5917 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -319,8 +319,10 @@ if 'CONFIG_LIBXML2' in config_host
>                                 link_args:
> config_host['LIBXML2_LIBS'].split())
>  endif
>  libnfs = not_found
> -if 'CONFIG_LIBNFS' in config_host
> -  libnfs = declare_dependency(link_args:
> config_host['LIBNFS_LIBS'].split())
> +if not get_option('libnfs').auto() or have_block
> +  libnfs = dependency('libnfs', version: '>=1.9.3',
> +                      required: get_option('libnfs'),
> +                      method: 'pkg-config', static: enable_static)
>  endif
>  libattr = not_found
>  if 'CONFIG_ATTR' in config_host
> @@ -928,6 +930,7 @@ config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL',
> glusterfs.version().version_co
>  config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT',
> glusterfs_ftruncate_has_stat)
>  config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT',
> glusterfs_iocb_has_stat)
>  config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
> +config_host_data.set('CONFIG_LIBNFS', libnfs.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
> @@ -2286,7 +2289,7 @@ summary_info += {'usb net redir':
>  config_host.has_key('CONFIG_USB_REDIR')}
>  summary_info += {'OpenGL support':
> config_host.has_key('CONFIG_OPENGL')}
>  summary_info += {'OpenGL dmabufs':
> config_host.has_key('CONFIG_OPENGL_DMABUF')}
>  summary_info += {'libiscsi support':  libiscsi.found()}
> -summary_info += {'libnfs support':
> config_host.has_key('CONFIG_LIBNFS')}
> +summary_info += {'libnfs support':    libnfs.found()}
>  summary_info += {'build guest agent':
> config_host.has_key('CONFIG_GUEST_AGENT')}
>  if targetos == 'windows'
>    if 'WIN_SDK' in config_host
> diff --git a/meson_options.txt b/meson_options.txt
> index b562d4f1a6..4535bc4dc2 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -52,6 +52,8 @@ option('glusterfs', type : 'feature', value : 'auto',
>         description: 'Glusterfs block device driver')
>  option('libiscsi', type : 'feature', value : 'auto',
>         description: 'libiscsi userspace initiator')
> +option('libnfs', type : 'feature', value : 'auto',
> +       description: 'libnfs block device driver')
>  option('mpath', type : 'feature', value : 'auto',
>         description: 'Multipath persistent reservation passthrough')
>  option('iconv', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 7334 bytes --]

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

* Re: [PATCH 08/18] libssh: convert to meson
  2020-12-17  9:40 ` [PATCH 08/18] libssh: " Paolo Bonzini
@ 2020-12-17 12:35   ` Marc-André Lureau
  2020-12-17 13:09     ` Paolo Bonzini
  0 siblings, 1 reply; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:35 UTC (permalink / raw)
  To: Paolo Bonzini, Pino Toscano; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 6643 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:40 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 45 ++++-----------------------------------------
>  meson.build       | 18 ++++++++++++++----
>  meson_options.txt |  2 ++
>  3 files changed, 20 insertions(+), 45 deletions(-)
>
> diff --git a/configure b/configure
> index c404252b17..f3271381f1 100755
> --- a/configure
> +++ b/configure
> @@ -430,7 +430,7 @@ auth_pam="$default_feature"
>  vte="$default_feature"
>  virglrenderer="$default_feature"
>  tpm="$default_feature"
> -libssh="$default_feature"
> +libssh="auto"
>  live_block_migration=${default_feature:-yes}
>  numa="$default_feature"
>  tcmalloc="no"
> @@ -1424,9 +1424,9 @@ for opt do
>    ;;
>    --enable-tpm) tpm="yes"
>    ;;
> -  --disable-libssh) libssh="no"
> +  --disable-libssh) libssh="disabled"
>    ;;
> -  --enable-libssh) libssh="yes"
> +  --enable-libssh) libssh="enabled"
>    ;;
>    --disable-live-block-migration) live_block_migration="no"
>    ;;
> @@ -3630,38 +3630,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# libssh probe
> -if test "$libssh" != "no" ; then
> -  if $pkg_config --exists libssh; then
> -    libssh_cflags=$($pkg_config libssh --cflags)
> -    libssh_libs=$($pkg_config libssh --libs)
> -    libssh=yes
> -  else
> -    if test "$libssh" = "yes" ; then
> -      error_exit "libssh required for --enable-libssh"
> -    fi
> -    libssh=no
> -  fi
> -fi
> -
> -##########################################
> -# Check for libssh 0.8
> -# This is done like this instead of using the LIBSSH_VERSION_* and
> -# SSH_VERSION_* macros because some distributions in the past shipped
> -# snapshots of the future 0.8 from Git, and those snapshots did not
> -# have updated version numbers (still referring to 0.7.0).
> -
> -if test "$libssh" = "yes"; then
> -  cat > $TMPC <<EOF
> -#include <libssh/libssh.h>
> -int main(void) { return ssh_get_server_publickey(NULL, NULL); }
> -EOF
> -  if compile_prog "$libssh_cflags" "$libssh_libs"; then
> -    libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags"
> -  fi
> -fi
> -
>  ##########################################
>  # linux-aio probe
>
> @@ -6288,12 +6256,6 @@ if test "$getauxval" = "yes" ; then
>    echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
>  fi
>
> -if test "$libssh" = "yes" ; then
> -  echo "CONFIG_LIBSSH=y" >> $config_host_mak
> -  echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
> -  echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
> -fi
> -
>  if test "$live_block_migration" = "yes" ; then
>    echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
>  fi
> @@ -6764,6 +6726,7 @@ NINJA=$ninja $meson setup \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
> +        -Dlibssh=$libssh \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 0b8c9c5917..2d6660aa46 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -652,9 +652,17 @@ if not get_option('glusterfs').auto() or have_block
>    endif
>  endif
>  libssh = not_found
> -if 'CONFIG_LIBSSH' in config_host
> -  libssh = declare_dependency(compile_args:
> config_host['LIBSSH_CFLAGS'].split(),
> -                              link_args:
> config_host['LIBSSH_LIBS'].split())
> +have_libssh_0_8 = false
> +if not get_option('libssh').auto() or have_block
> +  libssh = dependency('libssh',
> +                      required: get_option('libssh'),
> +                      method: 'pkg-config', static: enable_static)
> +  if libssh.found()
> +    have_libssh_0_8 = cc.links('''
> +      #include <libssh/libssh.h>
> +      int main(void) { return ssh_get_server_publickey(NULL, NULL); }
> +    ''', dependencies: libssh)
> +  endif
>

You dropped the comment about  LIBSSH_VERSION_*,  I think it's worth
keeping. Eventually, we should set an expectation when this can be dropped.
(presumably when debian old stable with 0.7.3 support is dropped, Pino?)

otherwise
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

 endif
>  libbzip2 = not_found
>  if not get_option('bzip2').auto() or have_block
> @@ -931,6 +939,8 @@
> config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT',
> glusterfs_ftruncate_
>  config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT',
> glusterfs_iocb_has_stat)
>  config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
>  config_host_data.set('CONFIG_LIBNFS', libnfs.found())
> +config_host_data.set('CONFIG_LIBSSH', libssh.found())
> +config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
> @@ -2310,7 +2320,7 @@ summary_info += {'crypto afalg':
> config_host.has_key('CONFIG_AF_ALG')}
>  summary_info += {'GlusterFS support': glusterfs.found()}
>  summary_info += {'gcov':              get_option('b_coverage')}
>  summary_info += {'TPM support':       config_host.has_key('CONFIG_TPM')}
> -summary_info += {'libssh support':
> config_host.has_key('CONFIG_LIBSSH')}
> +summary_info += {'libssh support':    libssh.found()}
>  summary_info += {'QOM debugging':
>  config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
>  summary_info += {'Live block migration':
> config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
>  summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 4535bc4dc2..6466dc67f6 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -54,6 +54,8 @@ option('libiscsi', type : 'feature', value : 'auto',
>         description: 'libiscsi userspace initiator')
>  option('libnfs', type : 'feature', value : 'auto',
>         description: 'libnfs block device driver')
> +option('libssh', type : 'feature', value : 'auto',
> +       description: 'libssh block device driver')
>  option('mpath', type : 'feature', value : 'auto',
>         description: 'Multipath persistent reservation passthrough')
>  option('iconv', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 8620 bytes --]

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

* Re: [PATCH 09/18] rbd: convert to meson
  2020-12-17  9:40 ` [PATCH 09/18] rbd: " Paolo Bonzini
@ 2020-12-17 12:36   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:36 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5630 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure         | 35 ++++-------------------------------
>  meson.build       | 22 +++++++++++++++++++---
>  meson_options.txt |  2 ++
>  3 files changed, 25 insertions(+), 34 deletions(-)
>
> diff --git a/configure b/configure
> index f3271381f1..e34885d505 100755
> --- a/configure
> +++ b/configure
> @@ -384,7 +384,7 @@ qom_cast_debug="yes"
>  trace_backends="log"
>  trace_file="trace"
>  spice="$default_feature"
> -rbd="$default_feature"
> +rbd="auto"
>  smartcard="$default_feature"
>  u2f="auto"
>  libusb="$default_feature"
> @@ -1286,9 +1286,9 @@ for opt do
>    ;;
>    --enable-opengl) opengl="yes"
>    ;;
> -  --disable-rbd) rbd="no"
> +  --disable-rbd) rbd="disabled"
>    ;;
> -  --enable-rbd) rbd="yes"
> +  --enable-rbd) rbd="enabled"
>    ;;
>    --disable-xfsctl) xfs="no"
>    ;;
> @@ -3607,29 +3607,6 @@ if compile_prog "" "$pthread_lib" ; then
>    pthread_setname_np_wo_tid=yes
>  fi
>
> -##########################################
> -# rbd probe
> -if test "$rbd" != "no" ; then
> -  cat > $TMPC <<EOF
> -#include <stdio.h>
> -#include <rbd/librbd.h>
> -int main(void) {
> -    rados_t cluster;
> -    rados_create(&cluster, NULL);
> -    return 0;
> -}
> -EOF
> -  rbd_libs="-lrbd -lrados"
> -  if compile_prog "" "$rbd_libs" ; then
> -    rbd=yes
> -  else
> -    if test "$rbd" = "yes" ; then
> -      feature_not_found "rados block device" "Install librbd/ceph devel"
> -    fi
> -    rbd=no
> -  fi
> -fi
> -
>  ##########################################
>  # linux-aio probe
>
> @@ -6184,10 +6161,6 @@ fi
>  if test "$qom_cast_debug" = "yes" ; then
>    echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
>  fi
> -if test "$rbd" = "yes" ; then
> -  echo "CONFIG_RBD=y" >> $config_host_mak
> -  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
> -fi
>
>  echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
>  if test "$coroutine_pool" = "yes" ; then
> @@ -6726,7 +6699,7 @@ NINJA=$ninja $meson setup \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
> -        -Dlibssh=$libssh \
> +        -Dlibssh=$libssh -Drbd=$rbd \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 2d6660aa46..6fa80e2d7e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -612,9 +612,24 @@ else
>  endif
>
>  rbd = not_found
> -if 'CONFIG_RBD' in config_host
> -  rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
> +if not get_option('rbd').auto() or have_block
> +  librados = cc.find_library('rados', required: get_option('rbd'),
> +                             static: enable_static)
> +  librbd = cc.find_library('rbd', has_headers: ['rbd/librbd.h'],
> +                           required: get_option('rbd'),
> +                           static: enable_static)
> +  if librados.found() and librbd.found() and cc.links('''
> +    #include <stdio.h>
> +    #include <rbd/librbd.h>
> +    int main(void) {
> +      rados_t cluster;
> +      rados_create(&cluster, NULL);
> +      return 0;
> +    }''', dependencies: [librbd, librados])
> +    rbd = declare_dependency(dependencies: [librbd, librados])
> +  endif
>  endif
> +
>  glusterfs = not_found
>  glusterfs_ftruncate_has_stat = false
>  glusterfs_iocb_has_stat = false
> @@ -941,6 +956,7 @@ config_host_data.set('CONFIG_LIBISCSI',
> libiscsi.found())
>  config_host_data.set('CONFIG_LIBNFS', libnfs.found())
>  config_host_data.set('CONFIG_LIBSSH', libssh.found())
>  config_host_data.set('HAVE_LIBSSH_0_8', have_libssh_0_8)
> +config_host_data.set('CONFIG_RBD', rbd.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
> @@ -2290,7 +2306,7 @@ if
> config_host['TRACE_BACKENDS'].split().contains('simple')
>  endif
>  # TODO: add back protocol and server version
>  summary_info += {'spice support':     config_host.has_key('CONFIG_SPICE')}
> -summary_info += {'rbd support':       config_host.has_key('CONFIG_RBD')}
> +summary_info += {'rbd support':       rbd.found()}
>  summary_info += {'xfsctl support':    config_host.has_key('CONFIG_XFS')}
>  summary_info += {'smartcard support':
> config_host.has_key('CONFIG_SMARTCARD')}
>  summary_info += {'U2F support':       u2f.found()}
> diff --git a/meson_options.txt b/meson_options.txt
> index 6466dc67f6..630c9dceb7 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
>         description: 'curses UI')
>  option('libudev', type : 'feature', value : 'auto',
>         description: 'Use libudev to enumerate host devices')
> +option('rbd', type : 'feature', value : 'auto',
> +       description: 'Ceph block device driver')
>  option('sdl', type : 'feature', value : 'auto',
>         description: 'SDL user interface')
>  option('sdl_image', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 7565 bytes --]

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

* Re: [PATCH 10/18] lzo: convert to meson
  2020-12-17  9:40 ` [PATCH 10/18] lzo: " Paolo Bonzini
@ 2020-12-17 12:42   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:42 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5630 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure         | 32 ++++----------------------------
>  meson.build       | 20 ++++++++++++++++----
>  meson_options.txt |  2 ++
>  3 files changed, 22 insertions(+), 32 deletions(-)
>
> diff --git a/configure b/configure
> index e34885d505..f52f04d0e3 100755
> --- a/configure
> +++ b/configure
> @@ -394,7 +394,7 @@ opengl_dmabuf="no"
>  cpuid_h="no"
>  avx2_opt="$default_feature"
>  capstone="auto"
> -lzo="$default_feature"
> +lzo="auto"
>  snappy="$default_feature"
>  bzip2="auto"
>  lzfse="$default_feature"
> @@ -1312,9 +1312,9 @@ for opt do
>    ;;
>    --disable-zlib-test)
>    ;;
> -  --disable-lzo) lzo="no"
> +  --disable-lzo) lzo="disabled"
>    ;;
> -  --enable-lzo) lzo="yes"
> +  --enable-lzo) lzo="enabled"
>    ;;
>    --disable-snappy) snappy="no"
>    ;;
> @@ -2458,25 +2458,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# lzo check
> -
> -if test "$lzo" != "no" ; then
> -    cat > $TMPC << EOF
> -#include <lzo/lzo1x.h>
> -int main(void) { lzo_version(); return 0; }
> -EOF
> -    if compile_prog "" "-llzo2" ; then
> -        lzo_libs="-llzo2"
> -        lzo="yes"
> -    else
> -        if test "$lzo" = "yes"; then
> -            feature_not_found "liblzo2" "Install liblzo2 devel"
> -        fi
> -        lzo="no"
> -    fi
> -fi
> -
>  ##########################################
>  # snappy check
>
> @@ -6126,11 +6107,6 @@ if test "$avx512f_opt" = "yes" ; then
>    echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
>  fi
>
> -if test "$lzo" = "yes" ; then
> -  echo "CONFIG_LZO=y" >> $config_host_mak
> -  echo "LZO_LIBS=$lzo_libs" >> $config_host_mak
> -fi
> -
>  if test "$snappy" = "yes" ; then
>    echo "CONFIG_SNAPPY=y" >> $config_host_mak
>    echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
> @@ -6699,7 +6675,7 @@ NINJA=$ninja $meson setup \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
> -        -Dlibssh=$libssh -Drbd=$rbd \
> +        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 6fa80e2d7e..0310d6d89a 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -753,10 +753,21 @@ snappy = not_found
>  if 'CONFIG_SNAPPY' in config_host
>    snappy = declare_dependency(link_args:
> config_host['SNAPPY_LIBS'].split())
>  endif
> -lzo = not_found
> -if 'CONFIG_LZO' in config_host
> -  lzo = declare_dependency(link_args: config_host['LZO_LIBS'].split())
> +
> +lzo = cc.find_library('lzo2', has_headers: ['lzo/lzo1x.h'],
> +                      required: get_option('lzo'),
> +                      static: enable_static)
> +if lzo.found() and not cc.links('''
> +   #include <lzo/lzo1x.h>
> +   int main(void) { lzo_version(); return 0; }''', dependencies: lzo)
> +  lzo = not_found
> +  if get_option('lzo').enabled()
> +    error('could not link liblzo2')
> +  else
> +    warning('could not link liblzo2, disabling')
> +  endif
>  endif
>

(fwiw, the .pc file was added in 2.10)

+
>  rdma = not_found
>  if 'CONFIG_RDMA' in config_host
>    rdma = declare_dependency(link_args: config_host['RDMA_LIBS'].split())
> @@ -941,6 +952,7 @@ config_host_data.set_quoted('CONFIG_SYSCONFDIR',
> get_option('prefix') / get_opti
>  config_host_data.set('CONFIG_BRLAPI', brlapi.found())
>  config_host_data.set('CONFIG_COCOA', cocoa.found())
>  config_host_data.set('CONFIG_LIBUDEV', libudev.found())
> +config_host_data.set('CONFIG_LZO', lzo.found())
>  config_host_data.set('CONFIG_MPATH', mpathpersist.found())
>  config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
>  config_host_data.set('CONFIG_CURL', curl.found())
> @@ -2339,7 +2351,7 @@ summary_info += {'TPM support':
>  config_host.has_key('CONFIG_TPM')}
>  summary_info += {'libssh support':    libssh.found()}
>  summary_info += {'QOM debugging':
>  config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
>  summary_info += {'Live block migration':
> config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
> -summary_info += {'lzo support':       config_host.has_key('CONFIG_LZO')}
> +summary_info += {'lzo support':       lzo.found()}
>  summary_info += {'snappy support':
> config_host.has_key('CONFIG_SNAPPY')}
>  summary_info += {'bzip2 support':     libbzip2.found()}
>  summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 630c9dceb7..00a5ec55bd 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
>         description: 'curses UI')
>  option('libudev', type : 'feature', value : 'auto',
>         description: 'Use libudev to enumerate host devices')
> +option('lzo', type : 'feature', value : 'auto',
> +       description: 'lzo compression support')
>  option('rbd', type : 'feature', value : 'auto',
>         description: 'Ceph block device driver')
>  option('sdl', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 7761 bytes --]

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

* Re: [PATCH 11/18] snappy: convert to meson
  2020-12-17  9:40 ` [PATCH 11/18] snappy: " Paolo Bonzini
@ 2020-12-17 12:47   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 12:47 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5739 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>  configure         | 32 ++++----------------------------
>  meson.build       | 19 +++++++++++++++----
>  meson_options.txt |  2 ++
>  3 files changed, 21 insertions(+), 32 deletions(-)
>
> diff --git a/configure b/configure
> index f52f04d0e3..aee27d9cdd 100755
> --- a/configure
> +++ b/configure
> @@ -395,7 +395,7 @@ cpuid_h="no"
>  avx2_opt="$default_feature"
>  capstone="auto"
>  lzo="auto"
> -snappy="$default_feature"
> +snappy="auto"
>  bzip2="auto"
>  lzfse="$default_feature"
>  zstd="$default_feature"
> @@ -1316,9 +1316,9 @@ for opt do
>    ;;
>    --enable-lzo) lzo="enabled"
>    ;;
> -  --disable-snappy) snappy="no"
> +  --disable-snappy) snappy="disabled"
>    ;;
> -  --enable-snappy) snappy="yes"
> +  --enable-snappy) snappy="enabled"
>    ;;
>    --disable-bzip2) bzip2="disabled"
>    ;;
> @@ -2458,25 +2458,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# snappy check
> -
> -if test "$snappy" != "no" ; then
> -    cat > $TMPC << EOF
> -#include <snappy-c.h>
> -int main(void) { snappy_max_compressed_length(4096); return 0; }
> -EOF
> -    if compile_prog "" "-lsnappy" ; then
> -        snappy_libs='-lsnappy'
> -        snappy="yes"
> -    else
> -        if test "$snappy" = "yes"; then
> -            feature_not_found "libsnappy" "Install libsnappy devel"
> -        fi
> -        snappy="no"
> -    fi
> -fi
> -
>  ##########################################
>  # lzfse check
>
> @@ -6107,11 +6088,6 @@ if test "$avx512f_opt" = "yes" ; then
>    echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
>  fi
>
> -if test "$snappy" = "yes" ; then
> -  echo "CONFIG_SNAPPY=y" >> $config_host_mak
> -  echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
> -fi
> -
>  if test "$lzfse" = "yes" ; then
>    echo "CONFIG_LZFSE=y" >> $config_host_mak
>    echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
> @@ -6675,7 +6651,7 @@ NINJA=$ninja $meson setup \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
> -        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo \
> +        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 0310d6d89a..9f6ea65626 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -749,9 +749,19 @@ if get_option('vnc').enabled()
>                                compile_args: '-DSTRUCT_IOVEC_DEFINED')
>    endif
>  endif
> -snappy = not_found
> -if 'CONFIG_SNAPPY' in config_host
> -  snappy = declare_dependency(link_args:
> config_host['SNAPPY_LIBS'].split())
> +
> +snappy = cc.find_library('snappy', has_headers: ['snappy-c.h'],
> +                      required: get_option('snappy'),
> +                      static: enable_static)
> +if snappy.found() and not cc.links('''
> +   #include <snappy-c.h>
> +   int main(void) { snappy_max_compressed_length(4096); return 0; }''',
> dependencies: snappy)
> +  snappy = not_found
> +  if get_option('snappy').enabled()
> +    error('could not link libsnappy')
> +  else
> +    warning('could not link libsnappy, disabling')
> +  endif
>  endif
>

fwiw, .pc file is provided since 1.1.4, released about 4y ago (in debian
oldstable, but not centos7..)


>  lzo = cc.find_library('lzo2', has_headers: ['lzo/lzo1x.h'],
> @@ -971,6 +981,7 @@ config_host_data.set('HAVE_LIBSSH_0_8',
> have_libssh_0_8)
>  config_host_data.set('CONFIG_RBD', rbd.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
> +config_host_data.set('CONFIG_SNAPPY', snappy.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
>  config_host_data.set('CONFIG_VNC', vnc.found())
>  config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
> @@ -2352,7 +2363,7 @@ summary_info += {'libssh support':    libssh.found()}
>  summary_info += {'QOM debugging':
>  config_host.has_key('CONFIG_QOM_CAST_DEBUG')}
>  summary_info += {'Live block migration':
> config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')}
>  summary_info += {'lzo support':       lzo.found()}
> -summary_info += {'snappy support':
> config_host.has_key('CONFIG_SNAPPY')}
> +summary_info += {'snappy support':    snappy.found()}
>  summary_info += {'bzip2 support':     libbzip2.found()}
>  summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
>  summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 00a5ec55bd..e2b7e23887 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -72,6 +72,8 @@ option('sdl', type : 'feature', value : 'auto',
>         description: 'SDL user interface')
>  option('sdl_image', type : 'feature', value : 'auto',
>         description: 'SDL Image support for icons')
> +option('snappy', type : 'feature', value : 'auto',
> +       description: 'snappy compression support')
>  option('u2f', type : 'feature', value : 'auto',
>         description: 'U2F emulation support')
>  option('vnc', type : 'feature', value : 'enabled',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 7860 bytes --]

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

* Re: [PATCH 08/18] libssh: convert to meson
  2020-12-17 12:35   ` Marc-André Lureau
@ 2020-12-17 13:09     ` Paolo Bonzini
  0 siblings, 0 replies; 43+ messages in thread
From: Paolo Bonzini @ 2020-12-17 13:09 UTC (permalink / raw)
  To: Marc-André Lureau, Pino Toscano; +Cc: qemu-devel

On 17/12/20 13:35, Marc-André Lureau wrote:
> 
> You dropped the comment about  LIBSSH_VERSION_*,  I think it's worth 
> keeping. Eventually, we should set an expectation when this can be 
> dropped. (presumably when debian old stable with 0.7.3 support is 
> dropped, Pino?)

Yes, it should be added.

Paolo



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

* Re: [PATCH 12/18] lzfse: convert to meson
  2020-12-17  9:40 ` [PATCH 12/18] lzfse: " Paolo Bonzini
@ 2020-12-17 13:11   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 13:11 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5079 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure         | 31 ++++---------------------------
>  meson.build       | 19 +++++++++++++++----
>  meson_options.txt |  2 ++
>  3 files changed, 21 insertions(+), 31 deletions(-)
>
> diff --git a/configure b/configure
> index aee27d9cdd..ea5650acca 100755
> --- a/configure
> +++ b/configure
> @@ -397,7 +397,7 @@ capstone="auto"
>  lzo="auto"
>  snappy="auto"
>  bzip2="auto"
> -lzfse="$default_feature"
> +lzfse="auto"
>  zstd="$default_feature"
>  guest_agent="$default_feature"
>  guest_agent_with_vss="no"
> @@ -1324,9 +1324,9 @@ for opt do
>    ;;
>    --enable-bzip2) bzip2="enabled"
>    ;;
> -  --enable-lzfse) lzfse="yes"
> +  --enable-lzfse) lzfse="enabled"
>    ;;
> -  --disable-lzfse) lzfse="no"
> +  --disable-lzfse) lzfse="disabled"
>    ;;
>    --disable-zstd) zstd="no"
>    ;;
> @@ -2458,24 +2458,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# lzfse check
> -
> -if test "$lzfse" != "no" ; then
> -    cat > $TMPC << EOF
> -#include <lzfse.h>
> -int main(void) { lzfse_decode_scratch_size(); return 0; }
> -EOF
> -    if compile_prog "" "-llzfse" ; then
> -        lzfse="yes"
> -    else
> -        if test "$lzfse" = "yes"; then
> -            feature_not_found "lzfse" "Install lzfse devel"
> -        fi
> -        lzfse="no"
> -    fi
> -fi
> -
>  ##########################################
>  # zstd check
>
> @@ -6088,11 +6070,6 @@ if test "$avx512f_opt" = "yes" ; then
>    echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
>  fi
>
> -if test "$lzfse" = "yes" ; then
> -  echo "CONFIG_LZFSE=y" >> $config_host_mak
> -  echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
> -fi
> -
>  if test "$zstd" = "yes" ; then
>    echo "CONFIG_ZSTD=y" >> $config_host_mak
>    echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
> @@ -6651,7 +6628,7 @@ NINJA=$ninja $meson setup \
>          -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
> -        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy \
> +        -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 9f6ea65626..c02d9c3e1a 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -695,10 +695,21 @@ if not get_option('bzip2').auto() or have_block
>      endif
>    endif
>  endif
> -liblzfse = not_found
> -if 'CONFIG_LZFSE' in config_host
> -  liblzfse = declare_dependency(link_args:
> config_host['LZFSE_LIBS'].split())
> +
> +liblzfse = cc.find_library('lzfse', has_headers: ['lzfse.h'],
> +                      required: get_option('lzfse'),
> +                      static: enable_static)
> +if liblzfse.found() and not cc.links('''
> +   #include <lzfse.h>
> +   int main(void) { lzfse_decode_scratch_size(); return 0; }''',
> dependencies: liblzfse)
> +  liblzfse = not_found
> +  if get_option('lzfse').enabled()
> +    error('could not link liblzfse')
> +  else
> +    warning('could not link liblzfse, disabling')
> +  endif
>  endif
> +
>  oss = not_found
>  if 'CONFIG_AUDIO_OSS' in config_host
>    oss = declare_dependency(link_args: config_host['OSS_LIBS'].split())
> @@ -2365,7 +2376,7 @@ summary_info += {'Live block migration':
> config_host.has_key('CONFIG_LIVE_BLOCK_
>  summary_info += {'lzo support':       lzo.found()}
>  summary_info += {'snappy support':    snappy.found()}
>  summary_info += {'bzip2 support':     libbzip2.found()}
> -summary_info += {'lzfse support':     config_host.has_key('CONFIG_LZFSE')}
> +summary_info += {'lzfse support':     liblzfse.found()}
>  summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
>  summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
>  summary_info += {'libxml2':
>  config_host.has_key('CONFIG_LIBXML2')}
> diff --git a/meson_options.txt b/meson_options.txt
> index e2b7e23887..f74a3d78c4 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -64,6 +64,8 @@ option('curses', type : 'feature', value : 'auto',
>         description: 'curses UI')
>  option('libudev', type : 'feature', value : 'auto',
>         description: 'Use libudev to enumerate host devices')
> +option('lzfse', type : 'feature', value : 'auto',
> +       description: 'lzfse support for DMG images')
>  option('lzo', type : 'feature', value : 'auto',
>         description: 'lzo compression support')
>  option('rbd', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 6933 bytes --]

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

* Re: [PATCH 13/18] zstd: convert to meson
  2020-12-17  9:40 ` [PATCH 13/18] zstd: " Paolo Bonzini
@ 2020-12-17 13:31   ` Marc-André Lureau
  2020-12-17 13:32     ` Marc-André Lureau
  0 siblings, 1 reply; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 13:31 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5897 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure             | 30 ++++--------------------------
>  meson.build           | 10 ++++++----
>  meson_options.txt     |  2 ++
>  migration/meson.build |  2 +-
>  4 files changed, 13 insertions(+), 31 deletions(-)
>
> diff --git a/configure b/configure
> index ea5650acca..649da881a2 100755
> --- a/configure
> +++ b/configure
> @@ -398,7 +398,7 @@ lzo="auto"
>  snappy="auto"
>  bzip2="auto"
>  lzfse="auto"
> -zstd="$default_feature"
> +zstd="auto"
>  guest_agent="$default_feature"
>  guest_agent_with_vss="no"
>  guest_agent_ntddscsi="no"
> @@ -1328,9 +1328,9 @@ for opt do
>    ;;
>    --disable-lzfse) lzfse="disabled"
>    ;;
> -  --disable-zstd) zstd="no"
> +  --disable-zstd) zstd="disabled"
>    ;;
> -  --enable-zstd) zstd="yes"
> +  --enable-zstd) zstd="enabled"
>    ;;
>    --enable-guest-agent) guest_agent="yes"
>    ;;
> @@ -2458,23 +2458,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# zstd check
> -
> -if test "$zstd" != "no" ; then
> -    libzstd_minver="1.4.0"
> -    if $pkg_config --atleast-version=$libzstd_minver libzstd ; then
> -        zstd_cflags="$($pkg_config --cflags libzstd)"
> -        zstd_libs="$($pkg_config --libs libzstd)"
> -        zstd="yes"
> -    else
> -        if test "$zstd" = "yes" ; then
> -            feature_not_found "libzstd" "Install libzstd devel"
> -        fi
> -        zstd="no"
> -    fi
> -fi
> -
>  ##########################################
>  # libseccomp check
>
> @@ -6070,12 +6053,6 @@ if test "$avx512f_opt" = "yes" ; then
>    echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
>  fi
>
> -if test "$zstd" = "yes" ; then
> -  echo "CONFIG_ZSTD=y" >> $config_host_mak
> -  echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
> -  echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
> -fi
> -
>  if test "$seccomp" = "yes"; then
>    echo "CONFIG_SECCOMP=y" >> $config_host_mak
>    echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
> @@ -6629,6 +6606,7 @@ NINJA=$ninja $meson setup \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
> +        -Dzstd=$zstd \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index c02d9c3e1a..93a95d7a7f 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -380,9 +380,10 @@ if not get_option('libiscsi').auto() or have_block
>                           method: 'pkg-config', static: enable_static)
>  endif
>  zstd = not_found
> -if 'CONFIG_ZSTD' in config_host
> -  zstd = declare_dependency(compile_args:
> config_host['ZSTD_CFLAGS'].split(),
> -                            link_args: config_host['ZSTD_LIBS'].split())
> +if not get_option('zstd').auto() or have_block
> +  zstd = dependency('zstd', version: '>=1.4.0',
>

-> libzstd

Interestingly, meson didn't seem to overwrite config-host.h correctly
(that's how I noticed failed to link). I removed it and now it regenerates
it correctly.. weird.

+                    required: get_option('zstd'),
> +                    method: 'pkg-config', static: enable_static)
>  endif
>  gbm = not_found
>  if 'CONFIG_GBM' in config_host
> @@ -1003,6 +1004,7 @@ config_host_data.set('CONFIG_KEYUTILS',
> keyutils.found())
>  config_host_data.set('CONFIG_GETTID', has_gettid)
>  config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim)
>  config_host_data.set('CONFIG_STATX', has_statx)
> +config_host_data.set('CONFIG_ZSTD', zstd.found())
>  config_host_data.set('CONFIG_FUSE', fuse.found())
>  config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
>  config_host_data.set('CONFIG_CFI', get_option('cfi'))
> @@ -2377,7 +2379,7 @@ summary_info += {'lzo support':       lzo.found()}
>  summary_info += {'snappy support':    snappy.found()}
>  summary_info += {'bzip2 support':     libbzip2.found()}
>  summary_info += {'lzfse support':     liblzfse.found()}
> -summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
> +summary_info += {'zstd support':      zstd.found()}
>  summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
>  summary_info += {'libxml2':
>  config_host.has_key('CONFIG_LIBXML2')}
>  summary_info += {'memory allocator':  get_option('malloc')}
> diff --git a/meson_options.txt b/meson_options.txt
> index f74a3d78c4..5a1de9b1fe 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -92,6 +92,8 @@ option('virtiofsd', type: 'feature', value: 'auto',
>         description: 'build virtiofs daemon (virtiofsd)')
>  option('vhost_user_blk_server', type: 'feature', value: 'auto',
>         description: 'build vhost-user-blk server')
> +option('zstd', type : 'feature', value : 'auto',
> +       description: 'zstd compression support')
>  option('fuse', type: 'feature', value: 'auto',
>         description: 'FUSE block device export')
>  option('fuse_lseek', type : 'feature', value : 'auto',
> diff --git a/migration/meson.build b/migration/meson.build
> index 980e37865c..c783f2f2ae 100644
> --- a/migration/meson.build
> +++ b/migration/meson.build
> @@ -29,6 +29,6 @@ softmmu_ss.add(files(
>
>  softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
>  softmmu_ss.add(when: 'CONFIG_LIVE_BLOCK_MIGRATION', if_true:
> files('block.c'))
> -softmmu_ss.add(when: 'CONFIG_ZSTD', if_true: [files('multifd-zstd.c'),
> zstd])
> +softmmu_ss.add(when: zstd, if_true: files('multifd-zstd.c'))
>
>  specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files('dirtyrate.c',
> 'ram.c'))
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 8068 bytes --]

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

* Re: [PATCH 13/18] zstd: convert to meson
  2020-12-17 13:31   ` Marc-André Lureau
@ 2020-12-17 13:32     ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 13:32 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 6412 bytes --]

On Thu, Dec 17, 2020 at 5:31 PM Marc-André Lureau <
marcandre.lureau@redhat.com> wrote:

>
>
> On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>  configure             | 30 ++++--------------------------
>>  meson.build           | 10 ++++++----
>>  meson_options.txt     |  2 ++
>>  migration/meson.build |  2 +-
>>  4 files changed, 13 insertions(+), 31 deletions(-)
>>
>> diff --git a/configure b/configure
>> index ea5650acca..649da881a2 100755
>> --- a/configure
>> +++ b/configure
>> @@ -398,7 +398,7 @@ lzo="auto"
>>  snappy="auto"
>>  bzip2="auto"
>>  lzfse="auto"
>> -zstd="$default_feature"
>> +zstd="auto"
>>  guest_agent="$default_feature"
>>  guest_agent_with_vss="no"
>>  guest_agent_ntddscsi="no"
>> @@ -1328,9 +1328,9 @@ for opt do
>>    ;;
>>    --disable-lzfse) lzfse="disabled"
>>    ;;
>> -  --disable-zstd) zstd="no"
>> +  --disable-zstd) zstd="disabled"
>>    ;;
>> -  --enable-zstd) zstd="yes"
>> +  --enable-zstd) zstd="enabled"
>>    ;;
>>    --enable-guest-agent) guest_agent="yes"
>>    ;;
>> @@ -2458,23 +2458,6 @@ EOF
>>    fi
>>  fi
>>
>> -##########################################
>> -# zstd check
>> -
>> -if test "$zstd" != "no" ; then
>> -    libzstd_minver="1.4.0"
>> -    if $pkg_config --atleast-version=$libzstd_minver libzstd ; then
>> -        zstd_cflags="$($pkg_config --cflags libzstd)"
>> -        zstd_libs="$($pkg_config --libs libzstd)"
>> -        zstd="yes"
>> -    else
>> -        if test "$zstd" = "yes" ; then
>> -            feature_not_found "libzstd" "Install libzstd devel"
>> -        fi
>> -        zstd="no"
>> -    fi
>> -fi
>> -
>>  ##########################################
>>  # libseccomp check
>>
>> @@ -6070,12 +6053,6 @@ if test "$avx512f_opt" = "yes" ; then
>>    echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
>>  fi
>>
>> -if test "$zstd" = "yes" ; then
>> -  echo "CONFIG_ZSTD=y" >> $config_host_mak
>> -  echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
>> -  echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
>> -fi
>> -
>>  if test "$seccomp" = "yes"; then
>>    echo "CONFIG_SECCOMP=y" >> $config_host_mak
>>    echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
>> @@ -6629,6 +6606,7 @@ NINJA=$ninja $meson setup \
>>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
>> -Dlibiscsi=$libiscsi \
>>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
>> -Dlibudev=$libudev\
>>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
>> -Dlzfse=$lzfse \
>> +        -Dzstd=$zstd \
>>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs
>> \
>>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
>> diff --git a/meson.build b/meson.build
>> index c02d9c3e1a..93a95d7a7f 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -380,9 +380,10 @@ if not get_option('libiscsi').auto() or have_block
>>                           method: 'pkg-config', static: enable_static)
>>  endif
>>  zstd = not_found
>> -if 'CONFIG_ZSTD' in config_host
>> -  zstd = declare_dependency(compile_args:
>> config_host['ZSTD_CFLAGS'].split(),
>> -                            link_args: config_host['ZSTD_LIBS'].split())
>> +if not get_option('zstd').auto() or have_block
>> +  zstd = dependency('zstd', version: '>=1.4.0',
>>
>
> -> libzstd
>
> Interestingly, meson didn't seem to overwrite config-host.h correctly
> (that's how I noticed failed to link). I removed it and now it regenerates
> it correctly.. weird.
>
>
with that fix,
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

+                    required: get_option('zstd'),
>> +                    method: 'pkg-config', static: enable_static)
>>  endif
>>  gbm = not_found
>>  if 'CONFIG_GBM' in config_host
>> @@ -1003,6 +1004,7 @@ config_host_data.set('CONFIG_KEYUTILS',
>> keyutils.found())
>>  config_host_data.set('CONFIG_GETTID', has_gettid)
>>  config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim)
>>  config_host_data.set('CONFIG_STATX', has_statx)
>> +config_host_data.set('CONFIG_ZSTD', zstd.found())
>>  config_host_data.set('CONFIG_FUSE', fuse.found())
>>  config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
>>  config_host_data.set('CONFIG_CFI', get_option('cfi'))
>> @@ -2377,7 +2379,7 @@ summary_info += {'lzo support':       lzo.found()}
>>  summary_info += {'snappy support':    snappy.found()}
>>  summary_info += {'bzip2 support':     libbzip2.found()}
>>  summary_info += {'lzfse support':     liblzfse.found()}
>> -summary_info += {'zstd support':      config_host.has_key('CONFIG_ZSTD')}
>> +summary_info += {'zstd support':      zstd.found()}
>>  summary_info += {'NUMA host support': config_host.has_key('CONFIG_NUMA')}
>>  summary_info += {'libxml2':
>>  config_host.has_key('CONFIG_LIBXML2')}
>>  summary_info += {'memory allocator':  get_option('malloc')}
>> diff --git a/meson_options.txt b/meson_options.txt
>> index f74a3d78c4..5a1de9b1fe 100644
>> --- a/meson_options.txt
>> +++ b/meson_options.txt
>> @@ -92,6 +92,8 @@ option('virtiofsd', type: 'feature', value: 'auto',
>>         description: 'build virtiofs daemon (virtiofsd)')
>>  option('vhost_user_blk_server', type: 'feature', value: 'auto',
>>         description: 'build vhost-user-blk server')
>> +option('zstd', type : 'feature', value : 'auto',
>> +       description: 'zstd compression support')
>>  option('fuse', type: 'feature', value: 'auto',
>>         description: 'FUSE block device export')
>>  option('fuse_lseek', type : 'feature', value : 'auto',
>> diff --git a/migration/meson.build b/migration/meson.build
>> index 980e37865c..c783f2f2ae 100644
>> --- a/migration/meson.build
>> +++ b/migration/meson.build
>> @@ -29,6 +29,6 @@ softmmu_ss.add(files(
>>
>>  softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
>>  softmmu_ss.add(when: 'CONFIG_LIVE_BLOCK_MIGRATION', if_true:
>> files('block.c'))
>> -softmmu_ss.add(when: 'CONFIG_ZSTD', if_true: [files('multifd-zstd.c'),
>> zstd])
>> +softmmu_ss.add(when: zstd, if_true: files('multifd-zstd.c'))
>>
>>  specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files('dirtyrate.c',
>> 'ram.c'))
>> --
>> 2.29.2
>>
>>
>>

[-- Attachment #2: Type: text/html, Size: 8872 bytes --]

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

* Re: [PATCH 14/18] seccomp: convert to meson
  2020-12-17  9:40 ` [PATCH 14/18] seccomp: " Paolo Bonzini
@ 2020-12-17 13:36   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 13:36 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 7617 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>

and improve CONFIG_SECCOMP usage.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

 configure              | 32 ++++----------------------------
>  meson.build            | 10 ++++++----
>  meson_options.txt      |  2 ++
>  softmmu/meson.build    |  2 +-
>  softmmu/qemu-seccomp.c |  2 --
>  tools/meson.build      |  4 ++--
>  6 files changed, 15 insertions(+), 37 deletions(-)
>
> diff --git a/configure b/configure
> index 649da881a2..00c2d61a96 100755
> --- a/configure
> +++ b/configure
> @@ -414,7 +414,7 @@ debug_stack_usage="no"
>  crypto_afalg="no"
>  cfi="false"
>  cfi_debug="false"
> -seccomp="$default_feature"
> +seccomp="auto"
>  glusterfs="auto"
>  gtk="$default_feature"
>  gtk_gl="no"
> @@ -1356,9 +1356,9 @@ for opt do
>    ;;
>    --disable-tools) want_tools="no"
>    ;;
> -  --enable-seccomp) seccomp="yes"
> +  --enable-seccomp) seccomp="enabled"
>    ;;
> -  --disable-seccomp) seccomp="no"
> +  --disable-seccomp) seccomp="disabled"
>    ;;
>    --disable-glusterfs) glusterfs="disabled"
>    ;;
> @@ -2458,24 +2458,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# libseccomp check
> -
> -if test "$seccomp" != "no" ; then
> -    libseccomp_minver="2.3.0"
> -    if $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
> -        seccomp_cflags="$($pkg_config --cflags libseccomp)"
> -        seccomp_libs="$($pkg_config --libs libseccomp)"
> -        seccomp="yes"
> -    else
> -        if test "$seccomp" = "yes" ; then
> -            feature_not_found "libseccomp" \
> -                 "Install libseccomp devel >= $libseccomp_minver"
> -        fi
> -        seccomp="no"
> -    fi
> -fi
> -
>  ##########################################
>  # xen probe
>
> @@ -6053,12 +6035,6 @@ if test "$avx512f_opt" = "yes" ; then
>    echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
>  fi
>
> -if test "$seccomp" = "yes"; then
> -  echo "CONFIG_SECCOMP=y" >> $config_host_mak
> -  echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
> -  echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
> -fi
> -
>  # XXX: suppress that
>  if [ "$bsd" = "yes" ] ; then
>    echo "CONFIG_BSD=y" >> $config_host_mak
> @@ -6606,7 +6582,7 @@ NINJA=$ninja $meson setup \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
> -        -Dzstd=$zstd \
> +        -Dzstd=$zstd -Dseccomp=$seccomp \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 93a95d7a7f..a0132730d7 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -329,9 +329,10 @@ if 'CONFIG_ATTR' in config_host
>    libattr = declare_dependency(link_args:
> config_host['LIBATTR_LIBS'].split())
>  endif
>  seccomp = not_found
> -if 'CONFIG_SECCOMP' in config_host
> -  seccomp = declare_dependency(compile_args:
> config_host['SECCOMP_CFLAGS'].split(),
> -                               link_args:
> config_host['SECCOMP_LIBS'].split())
> +if not get_option('libiscsi').auto() or have_system or have_tools
> +  seccomp = dependency('libseccomp', version: '>=2.3.0',
> +                       required: get_option('seccomp'),
> +                       method: 'pkg-config', static: enable_static)
>  endif
>  libcap_ng = not_found
>  if 'CONFIG_LIBCAP_NG' in config_host
> @@ -993,6 +994,7 @@ config_host_data.set('HAVE_LIBSSH_0_8',
> have_libssh_0_8)
>  config_host_data.set('CONFIG_RBD', rbd.found())
>  config_host_data.set('CONFIG_SDL', sdl.found())
>  config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
> +config_host_data.set('CONFIG_SECCOMP', seccomp.found())
>  config_host_data.set('CONFIG_SNAPPY', snappy.found())
>  config_host_data.set('CONFIG_VHOST_USER_BLK_SERVER',
> have_vhost_user_blk_server)
>  config_host_data.set('CONFIG_VNC', vnc.found())
> @@ -2361,7 +2363,7 @@ if targetos == 'windows'
>    summary_info += {'QGA w32 disk info':
> config_host.has_key('CONFIG_QGA_NTDDSCSI')}
>    summary_info += {'QGA MSI support':
>  config_host.has_key('CONFIG_QGA_MSI')}
>  endif
> -summary_info += {'seccomp support':
>  config_host.has_key('CONFIG_SECCOMP')}
> +summary_info += {'seccomp support':   seccomp.found()}
>  summary_info += {'CFI support':       get_option('cfi')}
>  summary_info += {'CFI debug support': get_option('cfi_debug')}
>  summary_info += {'coroutine backend':
> config_host['CONFIG_COROUTINE_BACKEND']}
> diff --git a/meson_options.txt b/meson_options.txt
> index 5a1de9b1fe..1854a9639f 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -74,6 +74,8 @@ option('sdl', type : 'feature', value : 'auto',
>         description: 'SDL user interface')
>  option('sdl_image', type : 'feature', value : 'auto',
>         description: 'SDL Image support for icons')
> +option('seccomp', type : 'feature', value : 'auto',
> +       description: 'seccomp support')
>  option('snappy', type : 'feature', value : 'auto',
>         description: 'snappy compression support')
>  option('u2f', type : 'feature', value : 'auto',
> diff --git a/softmmu/meson.build b/softmmu/meson.build
> index 2dab6c7eb6..d8e03018ab 100644
> --- a/softmmu/meson.build
> +++ b/softmmu/meson.build
> @@ -28,5 +28,5 @@ softmmu_ss.add(files(
>  ), sdl, libpmem, libdaxctl)
>
>  softmmu_ss.add(when: 'CONFIG_TPM', if_true: files('tpm.c'))
> -softmmu_ss.add(when: 'CONFIG_SECCOMP', if_true: [files('qemu-seccomp.c'),
> seccomp])
> +softmmu_ss.add(when: seccomp, if_true: files('qemu-seccomp.c'))
>  softmmu_ss.add(when: fdt, if_true: files('device_tree.c'))
> diff --git a/softmmu/qemu-seccomp.c b/softmmu/qemu-seccomp.c
> index 8325ecb766..377ef6937c 100644
> --- a/softmmu/qemu-seccomp.c
> +++ b/softmmu/qemu-seccomp.c
> @@ -202,7 +202,6 @@ static int seccomp_start(uint32_t seccomp_opts, Error
> **errp)
>      return rc < 0 ? -1 : 0;
>  }
>
> -#ifdef CONFIG_SECCOMP
>  int parse_sandbox(void *opaque, QemuOpts *opts, Error **errp)
>  {
>      if (qemu_opt_get_bool(opts, "enable", false)) {
> @@ -328,4 +327,3 @@ static void seccomp_register(void)
>      }
>  }
>  opts_init(seccomp_register);
> -#endif
> diff --git a/tools/meson.build b/tools/meson.build
> index 76bf84df52..5c52d79fe4 100644
> --- a/tools/meson.build
> +++ b/tools/meson.build
> @@ -1,6 +1,6 @@
>  have_virtiofsd = (targetos == 'linux' and
>      have_tools and
> -    'CONFIG_SECCOMP' in config_host and
> +    seccomp.found() and
>      'CONFIG_LIBCAP_NG' in config_host and
>      'CONFIG_VHOST_USER' in config_host)
>
> @@ -8,7 +8,7 @@ if get_option('virtiofsd').enabled()
>    if not have_virtiofsd
>      if targetos != 'linux'
>        error('virtiofsd requires Linux')
> -    elif 'CONFIG_SECCOMP' not in config_host or 'CONFIG_LIBCAP_NG' not in
> config_host
> +    elif not seccomp.found() or 'CONFIG_LIBCAP_NG' not in config_host
>        error('virtiofsd requires libcap-ng-devel and seccomp-devel')
>      elif not have_tools or 'CONFIG_VHOST_USER' not in config_host
>        error('virtiofsd needs tools and vhost-user support')
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 9850 bytes --]

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

* Re: [PATCH 15/18] virtfs: convert to meson
  2020-12-17  9:40 ` [PATCH 15/18] virtfs: " Paolo Bonzini
@ 2020-12-17 13:38   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 13:38 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 6989 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure         | 29 ++++-------------------------
>  meson.build       | 24 ++++++++++++++++++++++--
>  meson_options.txt | 11 +++++++----
>  3 files changed, 33 insertions(+), 31 deletions(-)
>
> diff --git a/configure b/configure
> index 00c2d61a96..11d6f40f92 100755
> --- a/configure
> +++ b/configure
> @@ -316,7 +316,7 @@ netmap="no"
>  sdl="auto"
>  sdl_image="auto"
>  virtiofsd="auto"
> -virtfs="$default_feature"
> +virtfs="auto"
>  libudev="auto"
>  mpath="auto"
>  vnc="enabled"
> @@ -1005,9 +1005,9 @@ for opt do
>    ;;
>    --enable-qom-cast-debug) qom_cast_debug="yes"
>    ;;
> -  --disable-virtfs) virtfs="no"
> +  --disable-virtfs) virtfs="disabled"
>    ;;
> -  --enable-virtfs) virtfs="yes"
> +  --enable-virtfs) virtfs="enabled"
>    ;;
>    --disable-libudev) libudev="disabled"
>    ;;
> @@ -5445,24 +5445,6 @@ if [ "$eventfd" = "yes" ]; then
>    ivshmem=yes
>  fi
>
> -if test "$softmmu" = yes ; then
> -  if test "$linux" = yes; then
> -    if test "$virtfs" != no && test "$cap_ng" = yes && test "$attr" = yes
> ; then
> -      virtfs=yes
> -    else
> -      if test "$virtfs" = yes; then
> -        error_exit "VirtFS requires libcap-ng devel and libattr devel"
> -      fi
> -      virtfs=no
> -    fi
> -  else
> -    if test "$virtfs" = yes; then
> -      error_exit "VirtFS is supported only on Linux"
> -    fi
> -    virtfs=no
> -  fi
> -fi
> -
>  # Probe for guest agent support/options
>
>  if [ "$guest_agent" != "no" ]; then
> @@ -5919,9 +5901,6 @@ fi
>  if test "$libattr" = "yes" ; then
>    echo "CONFIG_LIBATTR=y" >> $config_host_mak
>  fi
> -if test "$virtfs" = "yes" ; then
> -  echo "CONFIG_VIRTFS=y" >> $config_host_mak
> -fi
>  if test "$vhost_scsi" = "yes" ; then
>    echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
>  fi
> @@ -6582,7 +6561,7 @@ NINJA=$ninja $meson setup \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
> -        -Dzstd=$zstd -Dseccomp=$seccomp \
> +        -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index a0132730d7..08d3586df5 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -959,6 +959,25 @@ endif
>  # config-host.h #
>  #################
>
> +have_virtfs = (targetos == 'linux' and
> +    have_system and
> +    libattr.found() and
> +    libcap_ng.found())
> +
> +if get_option('virtfs').enabled()
> +  if not have_virtfs
> +    if targetos != 'linux'
> +      error('virtio-9p (virtfs) requires Linux')
> +    elif not libcap_ng.found() or not libattr.found()
> +      error('virtio-9p (virtfs) requires libcap-ng-devel and
> libattr-devel')
> +    elif not have_system
> +      error('virtio-9p (virtfs) needs system emulation support')
> +    endif
> +  endif
> +elif get_option('virtfs').disabled()
> +  have_virtfs = false
> +endif
> +
>  config_host_data.set_quoted('CONFIG_BINDIR', get_option('prefix') /
> get_option('bindir'))
>  config_host_data.set_quoted('CONFIG_PREFIX', get_option('prefix'))
>  config_host_data.set_quoted('CONFIG_QEMU_CONFDIR', get_option('prefix') /
> qemu_confdir)
> @@ -1001,6 +1020,7 @@ config_host_data.set('CONFIG_VNC', vnc.found())
>  config_host_data.set('CONFIG_VNC_JPEG', jpeg.found())
>  config_host_data.set('CONFIG_VNC_PNG', png.found())
>  config_host_data.set('CONFIG_VNC_SASL', sasl.found())
> +config_host_data.set('CONFIG_VIRTFS', have_virtfs)
>  config_host_data.set('CONFIG_XKBCOMMON', xkbcommon.found())
>  config_host_data.set('CONFIG_KEYUTILS', keyutils.found())
>  config_host_data.set('CONFIG_GETTID', has_gettid)
> @@ -1099,7 +1119,7 @@ host_kconfig = \
>    ('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \
>    ('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \
>    ('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : [])
> + \
> -  ('CONFIG_VIRTFS' in config_host ? ['CONFIG_VIRTFS=y'] : []) + \
> +  (have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \
>    ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
>    ('CONFIG_PVRDMA' in config_host ? ['CONFIG_PVRDMA=y'] : [])
>
> @@ -2287,7 +2307,7 @@ summary_info += {'mingw32 support':   targetos ==
> 'windows'}
>  summary_info += {'Audio drivers':     config_host['CONFIG_AUDIO_DRIVERS']}
>  summary_info += {'Block whitelist (rw)':
> config_host['CONFIG_BDRV_RW_WHITELIST']}
>  summary_info += {'Block whitelist (ro)':
> config_host['CONFIG_BDRV_RO_WHITELIST']}
> -summary_info += {'VirtFS support':
> config_host.has_key('CONFIG_VIRTFS')}
> +summary_info += {'VirtFS support':    have_virtfs}
>  summary_info += {'build virtiofs daemon': have_virtiofsd}
>  summary_info += {'Multipath support': mpathpersist.found()}
>  summary_info += {'VNC support':       vnc.found()}
> diff --git a/meson_options.txt b/meson_options.txt
> index 1854a9639f..59a8a50e5b 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -90,10 +90,6 @@ option('vnc_sasl', type : 'feature', value : 'auto',
>         description: 'SASL authentication for VNC server')
>  option('xkbcommon', type : 'feature', value : 'auto',
>         description: 'xkbcommon support')
> -option('virtiofsd', type: 'feature', value: 'auto',
> -       description: 'build virtiofs daemon (virtiofsd)')
> -option('vhost_user_blk_server', type: 'feature', value: 'auto',
> -       description: 'build vhost-user-blk server')
>  option('zstd', type : 'feature', value : 'auto',
>         description: 'zstd compression support')
>  option('fuse', type: 'feature', value: 'auto',
> @@ -101,6 +97,13 @@ option('fuse', type: 'feature', value: 'auto',
>  option('fuse_lseek', type : 'feature', value : 'auto',
>         description: 'SEEK_HOLE/SEEK_DATA support for FUSE exports')
>
> +option('vhost_user_blk_server', type: 'feature', value: 'auto',
> +       description: 'build vhost-user-blk server')
> +option('virtfs', type: 'feature', value: 'auto',
> +       description: 'virtio-9p support')
> +option('virtiofsd', type: 'feature', value: 'auto',
> +       description: 'build virtiofs daemon (virtiofsd)')
> +
>  option('capstone', type: 'combo', value: 'auto',
>         choices: ['disabled', 'enabled', 'auto', 'system', 'internal'],
>         description: 'Whether and how to find the capstone library')
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 9333 bytes --]

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

* Re: [PATCH 16/18] cap_ng: convert to meson
  2020-12-17  9:40 ` [PATCH 16/18] cap_ng: " Paolo Bonzini
@ 2020-12-17 13:54   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 13:54 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 7659 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 34 ++++------------------------------
>  meson.build       | 24 ++++++++++++++++++++----
>  meson_options.txt |  2 ++
>  tools/meson.build |  4 ++--
>  4 files changed, 28 insertions(+), 36 deletions(-)
>
> diff --git a/configure b/configure
> index 11d6f40f92..faee71612f 100755
> --- a/configure
> +++ b/configure
> @@ -331,7 +331,7 @@ xen_ctrl_version="$default_feature"
>  xen_pci_passthrough="auto"
>  linux_aio="$default_feature"
>  linux_io_uring="$default_feature"
> -cap_ng="$default_feature"
> +cap_ng="auto"
>  attr="$default_feature"
>  libattr="$default_feature"
>  xfs="$default_feature"
> @@ -1123,9 +1123,9 @@ for opt do
>    ;;
>    --enable-tcg-interpreter) tcg_interpreter="yes"
>    ;;
> -  --disable-cap-ng)  cap_ng="no"
> +  --disable-cap-ng)  cap_ng="disabled"
>    ;;
> -  --enable-cap-ng) cap_ng="yes"
> +  --enable-cap-ng) cap_ng="enabled"
>    ;;
>    --disable-tcg) tcg="disabled"
>    ;;
> @@ -3193,28 +3193,6 @@ EOF
>    fi
>  fi
>
> -##########################################
> -# libcap-ng library probe
> -if test "$cap_ng" != "no" ; then
> -  cap_libs="-lcap-ng"
> -  cat > $TMPC << EOF
> -#include <cap-ng.h>
> -int main(void)
> -{
> -    capng_capability_to_name(CAPNG_EFFECTIVE);
> -    return 0;
> -}
> -EOF
> -  if compile_prog "" "$cap_libs" ; then
> -    cap_ng=yes
> -  else
> -    if test "$cap_ng" = "yes" ; then
> -      feature_not_found "cap_ng" "Install libcap-ng devel"
> -    fi
> -    cap_ng=no
> -  fi
> -fi
> -
>  ##########################################
>  # Sound support libraries probe
>
> @@ -5671,10 +5649,6 @@ fi
>  if test "$gprof" = "yes" ; then
>    echo "CONFIG_GPROF=y" >> $config_host_mak
>  fi
> -if test "$cap_ng" = "yes" ; then
> -  echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak
> -  echo "LIBCAP_NG_LIBS=$cap_libs" >> $config_host_mak
> -fi
>  echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
>  for drv in $audio_drv_list; do
>      def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
> @@ -6561,7 +6535,7 @@ NINJA=$ninja $meson setup \
>          -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2
> -Dlibiscsi=$libiscsi \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
> -        -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs \
> +        -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng
> \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 08d3586df5..56ab291d87 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -334,10 +334,25 @@ if not get_option('libiscsi').auto() or have_system
> or have_tools
>                         required: get_option('seccomp'),
>                         method: 'pkg-config', static: enable_static)
>  endif
> -libcap_ng = not_found
> -if 'CONFIG_LIBCAP_NG' in config_host
> -  libcap_ng = declare_dependency(link_args:
> config_host['LIBCAP_NG_LIBS'].split())
> +
> +libcap_ng = cc.find_library('cap-ng', has_headers: ['cap-ng.h'],
> +                      required: get_option('cap_ng'),
> +                      static: enable_static)
> +if libcap_ng.found() and not cc.links('''
> +   #include <cap-ng.h>
> +   int main(void)
> +   {
> +     capng_capability_to_name(CAPNG_EFFECTIVE);
> +     return 0;
> +   }''', dependencies: libcap_ng)
> +  libcap_ng = not_found
> +  if get_option('cap_ng').enabled()
> +    error('could not link libcap-ng')
> +  else
> +    warning('could not link libcap-ng, disabling')
>

.pc file is provided since 0.6.5
curl -s 'https://repology.org/api/v1/project/libcap-ng' |  \
   jq -r 'group_by(.repo) | .[] | "\(.[0].repo): \(map(.version))"' | \
   egrep -i 'ubuntu_18|debian_old|rhel|centos|bsd|suse_leap_15_2|sles'

centos_6: ["0.6.4"]
centos_7: ["0.7.5"]
centos_8: ["0.7.9"]
debian_oldstable: ["0.7.7"]
opensuse_leap_15_2: ["0.7.9"]
ubuntu_18_04: ["0.7.7"]

RHEL6 is EOL, we no longer support it, right?

Then we should be good to switch to pkg-config method.

It can be done later. For this patch:
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


+  endif
>  endif
> +
>  if get_option('xkbcommon').auto() and not have_system and not have_tools
>    xkbcommon = not_found
>  else
> @@ -1006,6 +1021,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE',
> glusterfs.version().version_c
>  config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL',
> glusterfs.version().version_compare('>=6'))
>  config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT',
> glusterfs_ftruncate_has_stat)
>  config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT',
> glusterfs_iocb_has_stat)
> +config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found())
>  config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
>  config_host_data.set('CONFIG_LIBNFS', libnfs.found())
>  config_host_data.set('CONFIG_LIBSSH', libssh.found())
> @@ -2348,7 +2364,7 @@ summary_info += {'fdatasync':
>  config_host.has_key('CONFIG_FDATASYNC')}
>  summary_info += {'madvise':
>  config_host.has_key('CONFIG_MADVISE')}
>  summary_info += {'posix_madvise':
>  config_host.has_key('CONFIG_POSIX_MADVISE')}
>  summary_info += {'posix_memalign':
> config_host.has_key('CONFIG_POSIX_MEMALIGN')}
> -summary_info += {'libcap-ng support':
> config_host.has_key('CONFIG_LIBCAP_NG')}
> +summary_info += {'libcap-ng support': libcap_ng.found()}
>  summary_info += {'vhost-kernel support':
> config_host.has_key('CONFIG_VHOST_KERNEL')}
>  summary_info += {'vhost-net support':
> config_host.has_key('CONFIG_VHOST_NET')}
>  summary_info += {'vhost-crypto support':
> config_host.has_key('CONFIG_VHOST_CRYPTO')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 59a8a50e5b..12a1872f20 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -44,6 +44,8 @@ option('brlapi', type : 'feature', value : 'auto',
>         description: 'brlapi character device driver')
>  option('bzip2', type : 'feature', value : 'auto',
>         description: 'bzip2 support for DMG images')
> +option('cap_ng', type : 'feature', value : 'auto',
> +       description: 'cap_ng support')
>  option('cocoa', type : 'feature', value : 'auto',
>         description: 'Cocoa user interface (macOS only)')
>  option('curl', type : 'feature', value : 'auto',
> diff --git a/tools/meson.build b/tools/meson.build
> index 5c52d79fe4..fdce66857d 100644
> --- a/tools/meson.build
> +++ b/tools/meson.build
> @@ -1,14 +1,14 @@
>  have_virtiofsd = (targetos == 'linux' and
>      have_tools and
>      seccomp.found() and
> -    'CONFIG_LIBCAP_NG' in config_host and
> +    libcap_ng.found() and
>      'CONFIG_VHOST_USER' in config_host)
>
>  if get_option('virtiofsd').enabled()
>    if not have_virtiofsd
>      if targetos != 'linux'
>        error('virtiofsd requires Linux')
> -    elif not seccomp.found() or 'CONFIG_LIBCAP_NG' not in config_host
> +    elif not seccomp.found() or not libcap_ng.found()
>        error('virtiofsd requires libcap-ng-devel and seccomp-devel')
>      elif not have_tools or 'CONFIG_VHOST_USER' not in config_host
>        error('virtiofsd needs tools and vhost-user support')
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 10054 bytes --]

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

* Re: [PATCH 17/18] libattr: convert to meson
  2020-12-17  9:40 ` [PATCH 17/18] libattr: " Paolo Bonzini
@ 2020-12-17 14:05   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 14:05 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 7643 bytes --]

Hi

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  configure         | 45 ++++-----------------------------------------
>  meson.build       | 38 +++++++++++++++++++++++++++++++++++---
>  meson_options.txt |  2 ++
>  3 files changed, 41 insertions(+), 44 deletions(-)
>
> diff --git a/configure b/configure
> index faee71612f..420663d69a 100755
> --- a/configure
> +++ b/configure
> @@ -332,8 +332,7 @@ xen_pci_passthrough="auto"
>  linux_aio="$default_feature"
>  linux_io_uring="$default_feature"
>  cap_ng="auto"
> -attr="$default_feature"
> -libattr="$default_feature"
> +attr="auto"
>  xfs="$default_feature"
>  tcg="enabled"
>  membarrier="$default_feature"
> @@ -1230,9 +1229,9 @@ for opt do
>    ;;
>    --enable-linux-io-uring) linux_io_uring="yes"
>    ;;
> -  --disable-attr) attr="no"
> +  --disable-attr) attr="disabled"
>    ;;
> -  --enable-attr) attr="yes"
> +  --enable-attr) attr="enabled"
>    ;;
>    --disable-membarrier) membarrier="no"
>    ;;
> @@ -3544,36 +3543,6 @@ elif test "$tpm" = "yes"; then
>    fi
>  fi
>
> -##########################################
> -# attr probe
> -
> -libattr_libs=
> -if test "$attr" != "no" ; then
> -  cat > $TMPC <<EOF
> -#include <stdio.h>
> -#include <sys/types.h>
> -#ifdef CONFIG_LIBATTR
> -#include <attr/xattr.h>
> -#else
> -#include <sys/xattr.h>
> -#endif
> -int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL,
> NULL, 0, 0); return 0; }
> -EOF
> -  if compile_prog "" "" ; then
> -    attr=yes
> -  # Older distros have <attr/xattr.h>, and need -lattr:
> -  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
> -    attr=yes
> -    libattr_libs="-lattr"
> -    libattr=yes
> -  else
> -    if test "$attr" = "yes" ; then
> -      feature_not_found "ATTR" "Install libc6 or libattr devel"
> -    fi
> -    attr=no
> -  fi
> -fi
> -
>  ##########################################
>  # iovec probe
>  cat > $TMPC <<EOF
> @@ -5868,13 +5837,6 @@ if test "$linux_io_uring" = "yes" ; then
>    echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak
>    echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak
>  fi
> -if test "$attr" = "yes" ; then
> -  echo "CONFIG_ATTR=y" >> $config_host_mak
> -  echo "LIBATTR_LIBS=$libattr_libs" >> $config_host_mak
> -fi
> -if test "$libattr" = "yes" ; then
> -  echo "CONFIG_LIBATTR=y" >> $config_host_mak
> -fi
>  if test "$vhost_scsi" = "yes" ; then
>    echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
>  fi
> @@ -6536,6 +6498,7 @@ NINJA=$ninja $meson setup \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
>          -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng
> \
> +        -Dattr=$attr \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 56ab291d87..341eadaa5c 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -324,10 +324,40 @@ if not get_option('libnfs').auto() or have_block
>                        required: get_option('libnfs'),
>                        method: 'pkg-config', static: enable_static)
>  endif
> +
> +libattr_test = '''
> +  #include <stddef.h>
> +  #include <sys/types.h>
> +  #ifdef CONFIG_LIBATTR
> +  #include <attr/xattr.h>
> +  #else
> +  #include <sys/xattr.h>
> +  #endif
> +  int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL,
> NULL, 0, 0); return 0; }'''
> +
>  libattr = not_found
> -if 'CONFIG_ATTR' in config_host
> -  libattr = declare_dependency(link_args:
> config_host['LIBATTR_LIBS'].split())
> +have_old_libattr = false
> +if not get_option('attr').disabled()
> +  if cc.links(libattr_test)
> +    libattr = declare_dependency()
> +  else
> +    libattr = cc.find_library('attr', has_headers: ['attr/xattr.h'],
> +                              required: get_option('attr'),
> +                              static: enable_static)
> +    if libattr.found() and not \
> +      cc.links(libattr_test, dependencies: libattr, args:
> '-DCONFIG_LIBATTR')
>

Most probably we can drop that libattr support now, it was added in qemu in
2011.

glibc supports attr since 2.3, that's from 2002-10-02...

Aaanyway,
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


+      libattr = not_found
> +      if get_option('attr').enabled()
> +        error('could not link libattr')
> +      else
> +        warning('could not link libattr, disabling')
> +      endif
> +    else
> +      have_old_libattr = libattr.found()
> +    endif
> +  endif
>  endif
> +
>  seccomp = not_found
>  if not get_option('libiscsi').auto() or have_system or have_tools
>    seccomp = dependency('libseccomp', version: '>=2.3.0',
> @@ -1006,6 +1036,7 @@
> config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR',
> get_option('prefix') /
>  config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') /
> qemu_moddir)
>  config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') /
> get_option('sysconfdir'))
>
> +config_host_data.set('CONFIG_ATTR', libattr.found())
>  config_host_data.set('CONFIG_BRLAPI', brlapi.found())
>  config_host_data.set('CONFIG_COCOA', cocoa.found())
>  config_host_data.set('CONFIG_LIBUDEV', libudev.found())
> @@ -1021,6 +1052,7 @@ config_host_data.set('CONFIG_GLUSTERFS_FALLOCATE',
> glusterfs.version().version_c
>  config_host_data.set('CONFIG_GLUSTERFS_ZEROFILL',
> glusterfs.version().version_compare('>=6'))
>  config_host_data.set('CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT',
> glusterfs_ftruncate_has_stat)
>  config_host_data.set('CONFIG_GLUSTERFS_IOCB_HAS_STAT',
> glusterfs_iocb_has_stat)
> +config_host_data.set('CONFIG_LIBATTR', have_old_libattr)
>  config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found())
>  config_host_data.set('CONFIG_LIBISCSI', libiscsi.found())
>  config_host_data.set('CONFIG_LIBNFS', libnfs.found())
> @@ -2343,7 +2375,7 @@ summary_info += {'vde support':
>  config_host.has_key('CONFIG_VDE')}
>  summary_info += {'netmap support':
> config_host.has_key('CONFIG_NETMAP')}
>  summary_info += {'Linux AIO support':
> config_host.has_key('CONFIG_LINUX_AIO')}
>  summary_info += {'Linux io_uring support':
> config_host.has_key('CONFIG_LINUX_IO_URING')}
> -summary_info += {'ATTR/XATTR support': config_host.has_key('CONFIG_ATTR')}
> +summary_info += {'ATTR/XATTR support': libattr.found()}
>  summary_info += {'Install blobs':     get_option('install_blobs')}
>  summary_info += {'KVM support':       config_all.has_key('CONFIG_KVM')}
>  summary_info += {'HAX support':       config_all.has_key('CONFIG_HAX')}
> diff --git a/meson_options.txt b/meson_options.txt
> index 12a1872f20..8fcec056cd 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -40,6 +40,8 @@ option('cfi', type: 'boolean', value: 'false',
>  option('cfi_debug', type: 'boolean', value: 'false',
>         description: 'Verbose errors in case of CFI violation')
>
> +option('attr', type : 'feature', value : 'auto',
> +       description: 'attr/xattr support')
>  option('brlapi', type : 'feature', value : 'auto',
>         description: 'brlapi character device driver')
>  option('bzip2', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>
>

[-- Attachment #2: Type: text/html, Size: 10024 bytes --]

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

* Re: [PATCH 18/18] meson.build: convert --with-default-devices to meson
  2020-12-17  9:40 ` [PATCH 18/18] meson.build: convert --with-default-devices " Paolo Bonzini
@ 2020-12-17 14:08   ` Marc-André Lureau
  0 siblings, 0 replies; 43+ messages in thread
From: Marc-André Lureau @ 2020-12-17 14:08 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 4244 bytes --]

On Thu, Dec 17, 2020 at 1:41 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> Pass the boolean option directly instead of writing
> CONFIG_MINIKCONF_MODE to config-host.mak.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

---
>  configure         | 13 ++++---------
>  meson.build       |  5 +++--
>  meson_options.txt |  2 ++
>  3 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/configure b/configure
> index 420663d69a..ab4b826755 100755
> --- a/configure
> +++ b/configure
> @@ -447,7 +447,7 @@ sheepdog="no"
>  libxml2="$default_feature"
>  debug_mutex="no"
>  libpmem="$default_feature"
> -default_devices="yes"
> +default_devices="true"
>  plugins="no"
>  fuzzing="no"
>  rng_none="no"
> @@ -944,9 +944,9 @@ for opt do
>    ;;
>    --with-trace-file=*) trace_file="$optarg"
>    ;;
> -  --with-default-devices) default_devices="yes"
> +  --with-default-devices) default_devices="true"
>    ;;
> -  --without-default-devices) default_devices="no"
> +  --without-default-devices) default_devices="false"
>    ;;
>    --without-default-features) # processed above
>    ;;
> @@ -5541,11 +5541,6 @@ echo "GIT_UPDATE=$git_update" >> $config_host_mak
>
>  echo "ARCH=$ARCH" >> $config_host_mak
>
> -if test "$default_devices" = "yes" ; then
> -  echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
> -else
> -  echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak
> -fi
>  if test "$debug_tcg" = "yes" ; then
>    echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
>  fi
> @@ -6498,7 +6493,7 @@ NINJA=$ninja $meson setup \
>          -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses
> -Dlibudev=$libudev\
>          -Dlibssh=$libssh -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy
> -Dlzfse=$lzfse \
>          -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng
> \
> -        -Dattr=$attr \
> +        -Dattr=$attr -Ddefault_devices=$default_devices \
>          -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
>          -Dvhost_user_blk_server=$vhost_user_blk_server \
>          -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
> diff --git a/meson.build b/meson.build
> index 341eadaa5c..4d331405e4 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1276,7 +1276,8 @@ foreach target : target_dirs
>        output: config_devices_mak,
>        depfile: config_devices_mak + '.d',
>        capture: true,
> -      command: [minikconf, config_host['CONFIG_MINIKCONF_MODE'],
> +      command: [minikconf,
> +                get_option('default_devices') ? '--defconfig' :
> '--allnoconfig',
>                  config_devices_mak, '@DEPFILE@', '@INPUT@',
>                  host_kconfig, accel_kconfig])
>
> @@ -2469,7 +2470,7 @@ summary_info += {'capstone':          capstone_opt
> == 'disabled' ? false : capst
>  summary_info += {'libpmem support':
>  config_host.has_key('CONFIG_LIBPMEM')}
>  summary_info += {'libdaxctl support':
> config_host.has_key('CONFIG_LIBDAXCTL')}
>  summary_info += {'libudev':           libudev.found()}
> -summary_info += {'default devices':
>  config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
> +summary_info += {'default devices':   get_option('default_devices')}
>  summary_info += {'plugin support':
> config_host.has_key('CONFIG_PLUGIN')}
>  summary_info += {'fuzzing support':   config_host.has_key('CONFIG_FUZZ')}
>  if config_host.has_key('HAVE_GDB_BIN')
> diff --git a/meson_options.txt b/meson_options.txt
> index 8fcec056cd..1d4a71772e 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -7,6 +7,8 @@ option('qemu_firmwarepath', type : 'string', value : '',
>  option('sphinx_build', type : 'string', value : '',
>         description: 'Use specified sphinx-build [$sphinx_build] for
> building document (default to be empty)')
>
> +option('default_devices', type : 'boolean', value : true,
> +       description: 'Include a default selection of devices in emulators')
>  option('docs', type : 'feature', value : 'auto',
>         description: 'Documentations build support')
>  option('gettext', type : 'feature', value : 'auto',
> --
> 2.29.2
>
>

[-- Attachment #2: Type: text/html, Size: 5769 bytes --]

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

end of thread, other threads:[~2020-12-17 14:09 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-17  9:40 [PATCH 00/22] meson: move detection of various libraries to meson.build Paolo Bonzini
2020-12-17  9:40 ` [PATCH 01/18] brlapi: convert to meson Paolo Bonzini
2020-12-17 11:35   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 02/18] curl: remove compatibility code, require 7.29.0 Paolo Bonzini
2020-12-17 10:08   ` Daniel P. Berrangé
2020-12-17 11:48   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 03/18] curl: convert to meson Paolo Bonzini
2020-12-17 10:11   ` Daniel P. Berrangé
2020-12-17 11:59   ` Marc-André Lureau
2020-12-17 12:00     ` Marc-André Lureau
2020-12-17 12:05       ` Paolo Bonzini
2020-12-17  9:40 ` [PATCH 04/18] glusterfs: " Paolo Bonzini
2020-12-17 12:15   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 05/18] bzip2: " Paolo Bonzini
2020-12-17 12:24   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 06/18] libiscsi: " Paolo Bonzini
2020-12-17 12:25   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 07/18] libnfs: " Paolo Bonzini
2020-12-17 12:26   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 08/18] libssh: " Paolo Bonzini
2020-12-17 12:35   ` Marc-André Lureau
2020-12-17 13:09     ` Paolo Bonzini
2020-12-17  9:40 ` [PATCH 09/18] rbd: " Paolo Bonzini
2020-12-17 12:36   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 10/18] lzo: " Paolo Bonzini
2020-12-17 12:42   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 11/18] snappy: " Paolo Bonzini
2020-12-17 12:47   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 12/18] lzfse: " Paolo Bonzini
2020-12-17 13:11   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 13/18] zstd: " Paolo Bonzini
2020-12-17 13:31   ` Marc-André Lureau
2020-12-17 13:32     ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 14/18] seccomp: " Paolo Bonzini
2020-12-17 13:36   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 15/18] virtfs: " Paolo Bonzini
2020-12-17 13:38   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 16/18] cap_ng: " Paolo Bonzini
2020-12-17 13:54   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 17/18] libattr: " Paolo Bonzini
2020-12-17 14:05   ` Marc-André Lureau
2020-12-17  9:40 ` [PATCH 18/18] meson.build: convert --with-default-devices " Paolo Bonzini
2020-12-17 14:08   ` Marc-André Lureau

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.