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 <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2014-04-25 11:55:32 +01:00
parent eec2f65946
commit 57e5c3c2ae
2 changed files with 7 additions and 39 deletions

2
run.in
View File

@ -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.

View File

@ -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)))