[libvirt] [PATCH] build: hoist qemu dependence on yajl to configure

Doug Goldstein cardoe at gentoo.org
Fri Jun 15 16:24:25 UTC 2012


On Wed, Jun 13, 2012 at 12:00 PM, Eric Blake <eblake at redhat.com> wrote:
> Commit 6e769eba made it a runtime error if libvirt was compiled
> without yajl support but targets a new enough qemu.  But enough
> users are hitting this on self-compiled libvirt that it is worth
> erroring out at compilation time, rather than an obscure failure
> when trying to use the built executable.
>
> * configure.ac: If qemu is requested and -version works, require
> yajl if qemu version is new enough.
> * src/qemu/qemu_capabilities.c (qemuCapsComputeCmdFlags): Add
> comment.
> ---
>  configure.ac                 |   19 ++++++++++++++++++-
>  src/qemu/qemu_capabilities.c |    3 ++-
>  2 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index dda764d..0ba0598 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -991,6 +990,24 @@ AC_ARG_WITH([yajl],
>   [],
>   [with_yajl=check])
>
> +if test "$with_qemu:$with_yajl" = yes:check; then
> +  dnl Some versions of qemu require the use of yajl; try to detect them
> +  dnl here, although we do not require qemu to exist in order to compile.
> +  dnl This check mirrors src/qemu/qemu_capabilities.c
> +  AC_PATH_PROGS([QEMU], [qemu-kvm qemu kvm qemu-system-x86_64],
> +               [], [$PATH:/usr/bin:/usr/libexec])
> +  if test -x "$QEMU"; then
> +    if `$QEMU -help | grep libvirt` >/dev/null; then
> +      with_yajl=yes
> +    else
> +      [qemu_version_sed='s/.*ersion \([0-9.,]*\).*/\1/']
> +      qemu_version=`$QEMU -version | sed "$qemu_version_sed"`
> +      AS_VERSION_COMPARE([$qemu_version], [0.15],
> +                         [], [with_yajl=yes], [with_yajl=yes])
> +    fi
> +  fi
> +fi
> +
>  YAJL_CFLAGS=
>  YAJL_LIBS=
>  with_yajl2=no
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index b410648..f263375 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -1206,7 +1206,8 @@ qemuCapsComputeCmdFlags(const char *help,
>      * forgot to include YAJL libraries when building their own
>      * libvirt but is targetting a newer qemu, we are better off
>      * telling them to recompile (the spec file includes the
> -     * dependency, so distros won't hit this).  */
> +     * dependency, so distros won't hit this).  This check is
> +     * also in configure.ac (see $with_yajl).  */
>     if (version >= 15000 ||
>         (version >= 12000 && strstr(help, "libvirt"))) {
>         if (check_yajl) {
> --
> 1.7.10.2

FWIW, visually inspecting this code I can ACK it. I'll do some test
builds with it later.

-- 
Doug Goldstein




More information about the libvir-list mailing list