From 350583c859deaaddc98d7319e1c2ad649e4d3e83 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 13 Jun 2012 10:09:39 -0600 Subject: [PATCH] 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. --- configure.ac | 18 ++++++++++++++++++ src/qemu/qemu_capabilities.c | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index dda764d3f0..3da1aa2eab 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 9b41469b39..4308833170 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -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) {