mirror of https://gitee.com/openkylin/libvirt.git
More advanced auto-detection of driver module directory
When running directly from GIT, libvirtd attempts to locate the directory containing loadable modules. This currently only works if executing libvirtd with a CWD inside the libvirt source tree. Switch to locate based on the path to the current binary instead
This commit is contained in:
parent
5e62ba3428
commit
e537a31637
|
@ -972,9 +972,27 @@ int main(int argc, char **argv) {
|
||||||
virLogSetFromEnv();
|
virLogSetFromEnv();
|
||||||
|
|
||||||
#ifdef WITH_DRIVER_MODULES
|
#ifdef WITH_DRIVER_MODULES
|
||||||
if (strstr(argv[0], "lt-libvirtd") &&
|
if (strstr(argv[0], "lt-libvirtd")) {
|
||||||
(access("./.git", R_OK) >= 0 || access("../.git", R_OK) >= 0))
|
char *tmp = strrchr(argv[0], '/');
|
||||||
virDriverModuleInitialize("./src/.libs");
|
if (!tmp) {
|
||||||
|
fprintf(stderr, _("%s: cannot identify driver directory\n"), argv[0]);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
*tmp = '\0';
|
||||||
|
char *driverdir;
|
||||||
|
if (virAsprintf(&driverdir, "%s/../../src/.libs", argv[0]) < 0) {
|
||||||
|
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
if (access(driverdir, R_OK) < 0) {
|
||||||
|
fprintf(stderr, _("%s: expected driver directory '%s' is missing\n"),
|
||||||
|
argv[0], driverdir);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
virDriverModuleInitialize(driverdir);
|
||||||
|
*tmp = '/';
|
||||||
|
/* Must not free 'driverdir' - it is still used */
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
Loading…
Reference in New Issue