From b47637261c3ee3635f03e6e401414f393305eac4 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 2 Apr 2012 18:51:11 +0100 Subject: [PATCH] Override default driver dir when running from GIT * daemon/libvirtd.c: Set custom driver module dir if the current binary name is 'lt-libvirtd' (indicating execution directly from GIT checkout) * src/driver.c, src/driver.h, src/libvirt_driver_modules.syms: Add virDriverModuleInitialize to allow driver module location to be changed Signed-off-by: Daniel P. Berrange --- daemon/libvirtd.c | 6 ++++++ src/driver.c | 18 ++++++++++++++++-- src/driver.h | 1 + src/libvirt_driver_modules.syms | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index 1e91a4545e..943fef4834 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -958,6 +958,12 @@ int main(int argc, char **argv) { /* initialize early logging */ virLogSetFromEnv(); +#ifdef WITH_DRIVER_MODULES + if (strstr(argv[0], "lt-libvirtd") && + (access("./.git", R_OK) >= 0 || access("../.git", R_OK) >= 0)) + virDriverModuleInitialize("./src/.libs"); +#endif + while (1) { int optidx = 0; int c; diff --git a/src/driver.c b/src/driver.c index fb162e0ec9..da4bee5b6e 100644 --- a/src/driver.c +++ b/src/driver.c @@ -38,16 +38,30 @@ # include +static const char *moddir = NULL; + +void +virDriverModuleInitialize(const char *defmoddir) +{ + const char *custommoddir = getenv("LIBVIRT_DRIVER_DIR"); + if (custommoddir) + moddir = custommoddir; + else if (defmoddir) + moddir = defmoddir; + else + moddir = DEFAULT_DRIVER_DIR; + VIR_DEBUG("Module dir %s", moddir); +} + void * virDriverLoadModule(const char *name) { - const char *moddir = getenv("LIBVIRT_DRIVER_DIR"); char *modfile = NULL, *regfunc = NULL; void *handle = NULL; int (*regsym)(void); if (moddir == NULL) - moddir = DEFAULT_DRIVER_DIR; + virDriverModuleInitialize(NULL); VIR_DEBUG("Module load %s", name); diff --git a/src/driver.h b/src/driver.h index 03d249b7ae..aa7a377957 100644 --- a/src/driver.h +++ b/src/driver.h @@ -1621,6 +1621,7 @@ int virRegisterNWFilterDriver(virNWFilterDriverPtr); # ifdef WITH_LIBVIRTD int virRegisterStateDriver(virStateDriverPtr); # endif +void virDriverModuleInitialize(const char *defmoddir); void *virDriverLoadModule(const char *name); #endif /* __VIR_DRIVER_H__ */ diff --git a/src/libvirt_driver_modules.syms b/src/libvirt_driver_modules.syms index ce8d9b80b2..a5dd58b05a 100644 --- a/src/libvirt_driver_modules.syms +++ b/src/libvirt_driver_modules.syms @@ -5,3 +5,4 @@ # driver.h virDriverLoadModule; +virDriverModuleInitialize;