If libuuid from e2fsprogs is available, we use that to
generate UUIDs.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>

Index: libvirt/configure.in
===================================================================
--- libvirt.orig/configure.in
+++ libvirt/configure.in
@@ -189,6 +189,22 @@ dnl
 AC_CHECK_HEADERS(linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h,,
                  AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt]))
 
+dnl
+dnl check for libuuid
+dnl
+AC_ARG_ENABLE(libuuid,
+              AC_HELP_STRING([--disable-libuuid],
+                             [disable support for generating UUIDs using e2fsprogs libuuid [default=no]]),,
+              enable_libuuid=yes)
+
+if test "x$enable_libuuid" == "xyes" ; then
+    AC_CHECK_LIB(uuid, uuid_generate,
+                 [AC_CHECK_HEADER(uuid/uuid.h,
+		                  AC_DEFINE(ENABLE_LIBUUID,, [enable generating UUIDs using libuuid])
+				  UUID_LIBS="-luuid" AC_SUBST(UUID_LIBS),
+				  AC_MSG_ERROR([You must install libuuid in order to compile libvirt]))])
+fi
+
 dnl ==========================================================================
 dnl find libxml2 library, borrowed from xmlsec
 dnl ==========================================================================
Index: libvirt/qemud/Makefile.am
===================================================================
--- libvirt.orig/qemud/Makefile.am
+++ libvirt/qemud/Makefile.am
@@ -16,7 +16,7 @@ libvirt_qemud_CFLAGS = \
         -I$(top_srcdir)/include -I$(top_builddir)/include $(LIBXML_CFLAGS) \
         -Wall -Wextra -DLOCAL_STATE_DIR="\"$(localstatedir)\"" \
         -DSYSCONF_DIR="\"$(sysconfdir)\""
-libvirt_qemud_LDFLAGS = $(LIBXML_LIBS) $(SYSFS_LIBS)
+libvirt_qemud_LDFLAGS = $(LIBXML_LIBS) $(SYSFS_LIBS) $(UUID_LIBS)
 libvirt_qemud_DEPENDENCIES =
 libvirt_qemud_LDADD =
 
Index: libvirt/qemud/uuid.c
===================================================================
--- libvirt.orig/qemud/uuid.c
+++ libvirt/qemud/uuid.c
@@ -23,6 +23,9 @@
 
 #include "uuid.h"
 
+#ifdef ENABLE_LIBUUID
+#include <uuid/uuid.h>
+#else
 #include <errno.h>
 #include <fcntl.h>
 #include <stdlib.h>
@@ -34,6 +37,18 @@
 
 #include "protocol.h"
 #include "internal.h"
+#endif
+
+#ifdef ENABLE_LIBUUID
+
+int
+qemudGenerateUUID(unsigned char *uuid)
+{
+    uuid_generate(uuid);
+    return 0;
+}
+
+#else /* ENABLE_LIBUUID */
 
 static int
 qemudGenerateRandomBytes(unsigned char *buf,
@@ -89,6 +104,8 @@ qemudGenerateUUID(unsigned char *uuid)
     return qemudGeneratePseudoRandomBytes(uuid, QEMUD_UUID_RAW_LEN);
 }
 
+#endif /* ENABLE_LIBUUID */
+
 int
 qemudParseUUID(const char *uuid, unsigned char *rawuuid) {
     const char *cur;

-- 


