[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tools/libs/guest: fix out of tree builds of libxenguest users



On 25.09.20 06:59, Jürgen Groß wrote:
On 24.09.20 22:23, Andrew Cooper wrote:
On 23/09/2020 06:24, Juergen Gross wrote:
xenguest.h includes xenctrl_dom.h, which is including the Xen internal
xen/libelf/libelf.h. This results in build failures for components
using libxenguest when being built outside the Xen build environment.

Fix that by guarding the include of xenctrl_dom.h with
"#ifdef __XEN_TOOLS_".

Fixes: 7e0165c19387 ("tools/libxc: untangle libxenctrl from libxenguest")
Reported-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
  tools/libs/guest/include/xenguest.h | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/tools/libs/guest/include/xenguest.h b/tools/libs/guest/include/xenguest.h
index 4643384790..5cd502f644 100644
--- a/tools/libs/guest/include/xenguest.h
+++ b/tools/libs/guest/include/xenguest.h
@@ -22,7 +22,9 @@
  #ifndef XENGUEST_H
  #define XENGUEST_H
+#ifdef __XEN_TOOLS__
  #include <xenctrl_dom.h>
+#endif

I have to admit that this doesn't feel right to put into a public header.

Can't we split xenctrl_dom in half and merge the relevant subsets into
xen{ctrl,guest}.h ?

Yes, but the xenctrl.h half will be empty :-) (see my patch from Sep
9th).

The #ifdef will remain, though.

Another solution would be to make xenctrl_dom.h an internal header
again which has to be included by every user needing the domain loader
stuff. Question then is why all of this is part of libxenguest.

Or we could remove the prototype of xc_dom_register_loader() and the
definition of struct xc_dom_loader from the header and make it private
to libxenguest, and modify struct xc_dom_image to hold an opaque pointer
to struct elf_dom_parms instead of having it as a sub-structure. This
would remove the need to include xen/libelf/libelf.h from xenctrl_dom.h.
The question would then be how usable the whole stuff is for someone not
having the layout of struct elf_dom_parms.

I just discovered that currently only 5 elements of struct elf_dom_parms
are being used by libxenguest users in Xen. We could add accessors for
those to libxenguest.

This would be my favorite solution (including the merge of xenctrl_dom.h
into xenguest.h).


And finally we could split libxenguest and have a libxendomload which
will be usable Xen internal only.

Any preference?


Juergen



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.