Roman Bogorodskiy wrote: > Jim Fehlig wrote: > >> Add domain capabilities for PV and HVM domains. >> >> Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> >> --- >> >> V3: >> - Change introduction of connectGetDomainCapabilities to 1.3.6 >> >> src/libxl/libxl_capabilities.c | 140 +++++++++++++++++++++++++++++ >> src/libxl/libxl_capabilities.h | 7 ++ >> src/libxl/libxl_driver.c | 74 +++++++++++++++ >> tests/Makefile.am | 5 ++ >> tests/domaincapsschemadata/libxl-xenfv.xml | 68 ++++++++++++++ >> tests/domaincapsschemadata/libxl-xenpv.xml | 58 ++++++++++++ >> tests/domaincapstest.c | 61 +++++++++++++ >> tests/testutilsxen.h | 1 + >> 8 files changed, 414 insertions(+) > > ... > >> --- a/tests/domaincapstest.c >> +++ b/tests/domaincapstest.c >> @@ -162,10 +162,41 @@ fillQemuCaps(virDomainCapsPtr domCaps, >> #endif /* WITH_QEMU */ >> >> >> +#ifdef WITH_LIBXL >> +# include "testutilsxen.h" >> + >> +static int >> +fillXenCaps(virDomainCapsPtr domCaps) >> +{ >> + virFirmwarePtr *firmwares; >> + int ret = -1; >> + >> + if (VIR_ALLOC_N(firmwares, 2) < 0) >> + return ret; >> + >> + if (VIR_ALLOC(firmwares[0]) < 0 || VIR_ALLOC(firmwares[1]) < 0) >> + goto cleanup; >> + if (VIR_STRDUP(firmwares[0]->name, "/usr/lib/xen/boot/hvmloader") < 0 || >> + VIR_STRDUP(firmwares[1]->name, "/usr/lib/xen/boot/ovmf.bin") < 0) >> + goto cleanup; >> + >> + if (libxlMakeDomainCapabilities(domCaps, firmwares, 2) < 0) >> + goto cleanup; >> + >> + ret = 0; >> + >> + cleanup: >> + virFirmwareFreeList(firmwares, 2); >> + return ret; >> +} >> +#endif /* WITH_LIBXL */ >> + >> + >> enum testCapsType { >> CAPS_NONE, >> CAPS_ALL, >> CAPS_QEMU, >> + CAPS_LIBXL, >> }; >> >> struct testData { >> @@ -213,6 +244,13 @@ test_virDomainCapsFormat(const void *opaque) >> goto cleanup; >> #endif >> break; >> + >> + case CAPS_LIBXL: >> +#if WITH_LIBXL >> + if (fillXenCaps(domCaps) < 0) >> + goto cleanup; >> +#endif >> + break; >> } >> >> if (!(domCapsXML = virDomainCapsFormat(domCaps))) >> @@ -280,6 +318,20 @@ mymain(void) >> VIR_FREE(name); \ >> } while (0) >> >> +#define DO_TEST_LIBXL(Name, Emulator, Machine, Arch, Type) \ >> + do { \ >> + struct testData data = { \ >> + .name = Name, \ >> + .emulator = Emulator, \ >> + .machine = Machine, \ >> + .arch = Arch, \ >> + .type = Type, \ >> + .capsType = CAPS_LIBXL, \ >> + }; \ >> + if (virTestRun(Name, test_virDomainCapsFormat, &data) < 0) \ >> + ret = -1; \ >> + } while (0) >> + >> DO_TEST("basic", "/bin/emulatorbin", "my-machine-type", >> "x86_64", VIR_DOMAIN_VIRT_UML, CAPS_NONE); >> DO_TEST("full", "/bin/emulatorbin", "my-machine-type", >> @@ -313,6 +365,15 @@ mymain(void) >> >> #endif /* WITH_QEMU */ >> >> +#if WITH_LIBXL >> + >> + DO_TEST_LIBXL("libxl-xenpv", "/usr/bin/qemu-system-x86_64", >> + "xenpv", "x86_64", VIR_DOMAIN_VIRT_XEN); >> + DO_TEST_LIBXL("libxl-xenfv", "/usr/bin/qemu-system-x86_64", >> + "xenfv", "x86_64", VIR_DOMAIN_VIRT_XEN); >> + >> +#endif /* WITH_LIBXL */ >> + >> return ret; >> } >> >> diff --git a/tests/testutilsxen.h b/tests/testutilsxen.h >> index c78350d..8b997c3 100644 >> --- a/tests/testutilsxen.h >> +++ b/tests/testutilsxen.h >> @@ -2,6 +2,7 @@ >> # define _TESTUTILSXEN_H_ >> >> # include "capabilities.h" >> +# include "libxl/libxl_capabilities.h" >> >> virCapsPtr testXenCapsInit(void); > > This breaks build without xl: > > gmake[2]: Entering directory '/usr/home/novel/code/libvirt/tests' > CC vircapstest.o > In file included from vircapstest.c:25: > In file included from ./testutilsxen.h:5: > ../src/libxl/libxl_capabilities.h:26:11: fatal error: 'libxl.h' file not found > # include <libxl.h> > ^ > 1 error generated. > Makefile:4935: recipe for target 'vircapstest.o' failed Sorry. My pre-commit checklist needs to grow to include testing broader changes like this using '--without-xen --without-libxl'. Anyhow, it looks like Martin already pushed a fix for this (thanks Martin!). Regards, Jim -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list