From 57e5c3c2ae83fdddeecc9208b3485a47065a0eb5 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 25 Apr 2014 11:55:32 +0100 Subject: [PATCH] Use virFileFindResource to locate libvirtd daemon Make the remote driver use virFileFindResource to find the libvirt daemon path, so that it executes the in-builddir daemon if run from source tree. Signed-off-by: Daniel P. Berrange --- run.in | 2 +- src/remote/remote_driver.c | 44 ++++++-------------------------------- 2 files changed, 7 insertions(+), 39 deletions(-) diff --git a/run.in b/run.in index 2211f24012..4371076ea9 100644 --- a/run.in +++ b/run.in @@ -56,7 +56,7 @@ export LD_LIBRARY_PATH export LIBVIRT_DRIVER_DIR="$b/src/.libs" export LIBVIRT_LOCK_MANAGER_PLUGIN_DIR="$b/src/.libs" export VIRTLOCKD_PATH="$b/src/virtlockd" -export LIBVIRTD_PATH="$b/daemon/libvirtd" +export LIBVIRTD_PATH="$b/daemon" # This is a cheap way to find some use-after-free and uninitialized # read problems when using glibc. diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index ed7dde6a45..d9be7568a4 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -174,37 +174,6 @@ remoteStateInitialize(bool privileged ATTRIBUTE_UNUSED, } #endif -#ifndef WIN32 -/** - * remoteFindDaemonPath: - * - * Tries to find the path to the libvirtd binary. - * - * Returns path on success or NULL in case of error. - */ -static const char * -remoteFindDaemonPath(void) -{ - static const char *serverPaths[] = { - SBINDIR "/libvirtd", - SBINDIR "/libvirtd_dbg", - NULL - }; - size_t i; - const char *customDaemon = virGetEnvBlockSUID("LIBVIRTD_PATH"); - - if (customDaemon) - return customDaemon; - - for (i = 0; serverPaths[i]; i++) { - if (virFileIsExecutable(serverPaths[i])) { - return serverPaths[i]; - } - } - return NULL; -} -#endif - static void remoteDomainBuildEventLifecycle(virNetClientProgramPtr prog ATTRIBUTE_UNUSED, @@ -887,14 +856,13 @@ doRemoteOpen(virConnectPtr conn, } if ((flags & VIR_DRV_OPEN_REMOTE_AUTOSTART) && - !(daemonPath = remoteFindDaemonPath())) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unable to locate libvirtd daemon in %s " - "(to override, set $LIBVIRTD_PATH to the " - "name of the libvirtd binary)"), - SBINDIR); + !(daemonPath = virFileFindResourceFull("libvirtd", + NULL, NULL, + "daemon", + SBINDIR, + "LIBVIRTD_PATH"))) goto failed; - } + if (!(priv->client = virNetClientNewUNIX(sockname, flags & VIR_DRV_OPEN_REMOTE_AUTOSTART, daemonPath)))