Hi

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

> Signed-off-by: Paolo Bonzini <pbonz...@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.lur...@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
>
>
>

Reply via email to