]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix detection of required RBD version
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 7 Apr 2017 14:12:08 +0000 (15:12 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 19 Apr 2017 09:51:51 +0000 (10:51 +0100)
If building libvirt against Ubuntu precise, the librbd.h is lacking
many functions that libvirt expects. We have no version check, so
we were enabling RBD even though it cannot compile. This configure
check uses existance of 'rbd_get_features' as an identifier for the
min required version.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
m4/virt-storage-rbd.m4

index 48522a6a724f0023a3879002ad7370da7a01b335..727bd715e1dd916c1c8fdc2a2c1009949c74f0df 100644 (file)
@@ -28,12 +28,24 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_RBD], [
     AC_CHECK_HEADER([rbd/librbd.h], [LIBRBD_FOUND=yes; break;])
 
     if test "$LIBRBD_FOUND" = "yes"; then
-      with_storage_rbd=yes
       LIBRBD_LIBS="-lrbd -lrados"
+
+      old_LIBS="$LIBS"
+      LIBS="$LIBS $LIBRBD_LIBS"
+      AC_CHECK_FUNCS([rbd_get_features],[],[LIBRBD_FOUND=no])
+      LIBS="$old_LIBS"
+    fi
+
+    if test "$LIBRDB_FOUND" = "yes"; then
+      with_storage_rbd=yes
       AC_DEFINE_UNQUOTED([WITH_STORAGE_RBD], [1],
                          [whether RBD backend for storage driver is enabled])
     else
-      with_storage_rbd=no
+      if test "$with_storage_rbd" = "yes"; then
+        AC_MSG_ERROR([You must install the librbd library & headers to compile libvirt])
+      else
+        with_storage_rbd=no
+      fi
     fi
   fi
   AM_CONDITIONAL([WITH_STORAGE_RBD], [test "$with_storage_rbd" = "yes"])