On Wed, Jun 13, 2012 at 12:00 PM, Eric Blake <eblake@xxxxxxxxxx> 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list