build: hoist qemu dependence on yajl to configure

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 when qemu version is new enough.
* src/qemu/qemu_capabilities.c (qemuCapsComputeCmdFlags): Add
comment.
This commit is contained in:
Eric Blake 2012-06-13 10:09:39 -06:00
parent 2cd29c3107
commit 350583c859
2 changed files with 20 additions and 1 deletions

View File

@ -991,6 +991,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

View File

@ -1207,7 +1207,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) {