]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Override default driver dir when running from GIT
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 2 Apr 2012 17:51:11 +0000 (18:51 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 24 May 2012 12:18:01 +0000 (13:18 +0100)
* 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 <berrange@redhat.com>
daemon/libvirtd.c
src/driver.c
src/driver.h
src/libvirt_driver_modules.syms

index 1e91a4545e6211d250a2d04268b72d508f4cff1d..943fef4834df066b4e9b138d1d9973689c88c478 100644 (file)
@@ -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;
index fb162e0ec96d8ebb2a57f7cb416d58035da75df5..da4bee5b6ef9d81d7d5b48a9df27b82cb1dddf8c 100644 (file)
 
 # include <dlfcn.h>
 
+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);
 
index 03d249b7aea5b0ee88d357ebf0b1cb750cb571a7..aa7a37795726a173994272e8b5298f860dbac865 100644 (file)
@@ -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__ */
index ce8d9b80b2c30b668bf51f6df9ccdd6250060f58..a5dd58b05a5e95366d848ffe5c1a5a9f9e5bc4d8 100644 (file)
@@ -5,3 +5,4 @@
 
 # driver.h
 virDriverLoadModule;
+virDriverModuleInitialize;