[libvirt] [PATCH 2/2] build: avoid ld_preload tests on mingw

Eric Blake eblake at redhat.com
Wed Feb 26 01:50:50 UTC 2014


Running ./autobuild.sh complained during the mingw cross-compile:

  CC       libvirportallocatormock_la-virportallocatortest.lo
../../tests/virportallocatortest.c:32:20: fatal error: dlfcn.h: No such file or directory
 # include <dlfcn.h>
                    ^
compilation terminated.  With that fixed, the next failure was:

  CCLD     qemuxml2argvmock.la
libtool: link: libtool library `qemuxml2argvmock.la' must begin with `lib'
libtool: link: Try `libtool --help --mode=link' for more information.

While we don't need to limit all LD_PRELOAD tests to just Linux, we
do need to limit them to platforms that actually support loading;
we also need to avoid building qemu tests when qemu is not enabled.

* tests/virportallocatortest.c: Make conditional on <dlfcn.h>.
* tests/Makefile.am (test_libraries): Only build qemu mock library
when building qemu tests.

Signed-off-by: Eric Blake <eblake at redhat.com>
---
 tests/Makefile.am            |  7 ++++---
 tests/virportallocatortest.c | 45 +++++++++++++++++++++++++++-----------------
 2 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 91eeeac..c374f14 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in

-## Copyright (C) 2005-2013 Red Hat, Inc.
+## Copyright (C) 2005-2014 Red Hat, Inc.
 ##
 ## This library is free software; you can redistribute it and/or
 ## modify it under the terms of the GNU Lesser General Public
@@ -333,10 +333,11 @@ test_libraries = libshunload.la \
 		virnetserverclientmock.la \
 		vircgroupmock.la \
 		virpcimock.la \
-		qemuxml2argvmock.la \
 		$(NULL)
 if WITH_QEMU
-test_libraries += libqemumonitortestutils.la
+test_libraries += libqemumonitortestutils.la \
+		qemuxml2argvmock.la \
+		$(NULL)
 endif WITH_QEMU

 if WITH_DBUS
diff --git a/tests/virportallocatortest.c b/tests/virportallocatortest.c
index 7fe18df..309aea7 100644
--- a/tests/virportallocatortest.c
+++ b/tests/virportallocatortest.c
@@ -21,15 +21,18 @@
 #include <config.h>
 #include <stdlib.h>
 #include "virfile.h"
+#include "testutils.h"

-#ifdef MOCK_HELPER
-# include "internal.h"
-# include <sys/socket.h>
-# include <errno.h>
-# include <arpa/inet.h>
-# include <netinet/in.h>
-# include <stdio.h>
-# include <dlfcn.h>
+#if HAVE_DLFCN_H
+
+# ifdef MOCK_HELPER
+#  include "internal.h"
+#  include <sys/socket.h>
+#  include <errno.h>
+#  include <arpa/inet.h>
+#  include <netinet/in.h>
+#  include <stdio.h>
+#  include <dlfcn.h>

 static bool host_has_ipv6 = false;
 static int (*realsocket)(int domain, int type, int protocol);
@@ -102,17 +105,16 @@ int bind(int sockfd ATTRIBUTE_UNUSED,
     return 0;
 }

-#else
+# else

-# include "testutils.h"
-# include "virutil.h"
-# include "virerror.h"
-# include "viralloc.h"
-# include "virlog.h"
-# include "virportallocator.h"
-# include "virstring.h"
+#  include "virutil.h"
+#  include "virerror.h"
+#  include "viralloc.h"
+#  include "virlog.h"
+#  include "virportallocator.h"
+#  include "virstring.h"

-# define VIR_FROM_THIS VIR_FROM_RPC
+#  define VIR_FROM_THIS VIR_FROM_RPC


 static int testAllocAll(const void *args ATTRIBUTE_UNUSED)
@@ -261,4 +263,13 @@ mymain(void)
 }

 VIRT_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/libvirportallocatormock.so")
+# endif
+
+#else /* ! HAVE_DLFCN_H */
+int
+main(void)
+{
+    return EXIT_AM_SKIP;
+}
 #endif
+
-- 
1.8.5.3




More information about the libvir-list mailing list