From b5d4652e07d4491152496664d23ee6d1d0fb0b6d Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 30 Apr 2018 16:04:39 +0200 Subject: [PATCH] tests: Build virpcimock on FreeBSD too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There are only a couple remaining issues preventing it from working on FreeBSD. Let's fix them. With the mocking in place, qemumemlocktest and qemuxml2xmltest can finally succeed on FreeBSD. Signed-off-by: Andrea Bolognani Reviewed-by: Daniel P. Berrangé --- tests/virpcimock.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/virpcimock.c b/tests/virpcimock.c index 7e4ac191d0..3acf33b6f2 100644 --- a/tests/virpcimock.c +++ b/tests/virpcimock.c @@ -20,7 +20,7 @@ #include -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) # include "virmock.h" # include # include @@ -341,6 +341,7 @@ pci_device_new_from_stub(const struct pciDevice *data) char *configSrc; char tmp[256]; struct stat sb; + bool configSrcExists = false; if (VIR_STRDUP_QUIET(id, data->id) < 0) ABORT_OOM(); @@ -368,10 +369,18 @@ pci_device_new_from_stub(const struct pciDevice *data) if (virFileMakePath(devpath) < 0) ABORT("Unable to create: %s", devpath); + if (real_stat && real_stat(configSrc, &sb) == 0) + configSrcExists = true; + +# ifdef HAVE___XSTAT + if (!configSrcExists && + real___xstat && real___xstat(_STAT_VER, configSrc, &sb) == 0) + configSrcExists = true; +# endif + /* If there is a config file for the device within virpcitestdata dir, * symlink it. Otherwise create a dummy config file. */ - if ((real_stat && real_stat(configSrc, &sb) == 0) || - (real___xstat && real___xstat(_STAT_VER, configSrc, &sb) == 0)) { + if (configSrcExists) { /* On success, copy @configSrc into the destination (a copy, * rather than a symlink, is required since we write into the * file, and parallel VPATH builds must not stomp on the @@ -891,6 +900,7 @@ access(const char *path, int mode) return ret; } +# ifdef HAVE___LXSTAT int __lxstat(int ver, const char *path, struct stat *sb) { @@ -909,6 +919,7 @@ __lxstat(int ver, const char *path, struct stat *sb) } return ret; } +# endif /* HAVE___LXSTAT */ int lstat(const char *path, struct stat *sb) @@ -929,6 +940,7 @@ lstat(const char *path, struct stat *sb) return ret; } +# ifdef HAVE___XSTAT int __xstat(int ver, const char *path, struct stat *sb) { @@ -947,6 +959,7 @@ __xstat(int ver, const char *path, struct stat *sb) } return ret; } +# endif /* HAVE___XSTAT */ int stat(const char *path, struct stat *sb) @@ -1050,5 +1063,5 @@ virFileCanonicalizePath(const char *path) return ret; } #else -/* Nothing to override on non-__linux__ platforms */ +/* Nothing to override on this platform */ #endif