[PATCH] ocaml/xsd_glue: Fix dynamic linking configuration

Andrew Cooper posted 1 patch 1 month, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20251104165644.4011663-1-andrew.cooper3@citrix.com
tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] ocaml/xsd_glue: Fix dynamic linking configuration
Posted by Andrew Cooper 1 month, 1 week ago
The latest oxenstored from Xapi-project fails to start up:

  launch-xenstore[1201]: Starting /usr/sbin/oxenstored...
  launch-xenstore[1222]: Fatal error: exception
    Dynlink.Error (Dynlink.Cannot_open_dll "Dynlink.Error (Dynlink.Cannot_open_dll
    \"Failure(\\\"/usr/libexec/xen//ocaml/xsd_glue/xenctrl_plugin/domain_getinfo_v1.cmxs:
    undefined symbol: xc_domain_getinfo_single\\\")\")")

This is because domain_getinfo_v1.cmxs isn't dynamically linked correctly.
Fill in the correct variable, and remove the xen prefix from xenctrl.

Reported-by: Edwin Török <edwin.torok@citrix.com>
Suggested-by: Edwin Török <edwin.torok@citrix.com>
Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Christian Lindig <christian.lindig@citrix.com>
CC: Rob Hoes <Rob.Hoes@citrix.com>
CC: Pau Ruiz Safont <pau.safont@vates.tech>
CC: Andrii Sultanov <andriy.sultanov@vates.tech>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>

For 4.21.  Without this, we can't proceed with deprecate oxenstored.

This wants backporting to 4.20 too.

Previously this was hidden by oxenstored unexpectedly statically linking
libxenctrl via the ocaml-evtchn bindings, and became exposed when the bindings
were moved to use libxenevtchn.
---
 tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
index 4be1feacfe24..6356159020c1 100644
--- a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
+++ b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
@@ -11,7 +11,7 @@ OBJS = domain_getinfo_v1
 INTF = $(foreach obj, $(OBJS),$(obj).cmi)
 LIBS = domain_getinfo_v1.cmxa domain_getinfo_v1.cmxs
 
-LIBS_xsd_glue = $(call xenlibs-ldflags-ldlibs,xenctrl)
+LIBS_domain_getinfo_v1 = $(call xenlibs-ldflags-ldlibs,ctrl)
 
 all: $(INTF) $(LIBS) $(PROGRAMS)
 

base-commit: 9632ce6fe5b288244d2550cd2e619a55c5168bf8
-- 
2.39.5


Re: [PATCH] ocaml/xsd_glue: Fix dynamic linking configuration
Posted by Oleksii Kurochko 1 month, 1 week ago
On 11/4/25 5:56 PM, Andrew Cooper wrote:
> The latest oxenstored from Xapi-project fails to start up:
>
>    launch-xenstore[1201]: Starting /usr/sbin/oxenstored...
>    launch-xenstore[1222]: Fatal error: exception
>      Dynlink.Error (Dynlink.Cannot_open_dll "Dynlink.Error (Dynlink.Cannot_open_dll
>      \"Failure(\\\"/usr/libexec/xen//ocaml/xsd_glue/xenctrl_plugin/domain_getinfo_v1.cmxs:
>      undefined symbol: xc_domain_getinfo_single\\\")\")")
>
> This is because domain_getinfo_v1.cmxs isn't dynamically linked correctly.
> Fill in the correct variable, and remove the xen prefix from xenctrl.
>
> Reported-by: Edwin Török<edwin.torok@citrix.com>
> Suggested-by: Edwin Török<edwin.torok@citrix.com>
> Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
> Signed-off-by: Andrew Cooper<andrew.cooper3@citrix.com>
> ---
> CC: Christian Lindig<christian.lindig@citrix.com>
> CC: Rob Hoes<Rob.Hoes@citrix.com>
> CC: Pau Ruiz Safont<pau.safont@vates.tech>
> CC: Andrii Sultanov<andriy.sultanov@vates.tech>
> CC: Oleksii Kurochko<oleksii.kurochko@gmail.com>
>
> For 4.21.  Without this, we can't proceed with deprecate oxenstored.

Release-Acked-By: Oleksii Kurochko<oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii

>
> This wants backporting to 4.20 too.
>
> Previously this was hidden by oxenstored unexpectedly statically linking
> libxenctrl via the ocaml-evtchn bindings, and became exposed when the bindings
> were moved to use libxenevtchn.
> ---
>   tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
> index 4be1feacfe24..6356159020c1 100644
> --- a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
> +++ b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
> @@ -11,7 +11,7 @@ OBJS = domain_getinfo_v1
>   INTF = $(foreach obj, $(OBJS),$(obj).cmi)
>   LIBS = domain_getinfo_v1.cmxa domain_getinfo_v1.cmxs
>   
> -LIBS_xsd_glue = $(call xenlibs-ldflags-ldlibs,xenctrl)
> +LIBS_domain_getinfo_v1 = $(call xenlibs-ldflags-ldlibs,ctrl)
>   
>   all: $(INTF) $(LIBS) $(PROGRAMS)
>   
>
> base-commit: 9632ce6fe5b288244d2550cd2e619a55c5168bf8
Re: [PATCH] ocaml/xsd_glue: Fix dynamic linking configuration
Posted by Christian Lindig 1 month, 1 week ago

> On 4 Nov 2025, at 16:56, Andrew Cooper <andrew.cooper3@citrix.com> wrote:
> 
> The latest oxenstored from Xapi-project fails to start up:
> 
>  launch-xenstore[1201]: Starting /usr/sbin/oxenstored...
>  launch-xenstore[1222]: Fatal error: exception
>    Dynlink.Error (Dynlink.Cannot_open_dll "Dynlink.Error (Dynlink.Cannot_open_dll
>    \"Failure(\\\"/usr/libexec/xen//ocaml/xsd_glue/xenctrl_plugin/domain_getinfo_v1.cmxs:
>    undefined symbol: xc_domain_getinfo_single\\\")\")")
> 
> This is because domain_getinfo_v1.cmxs isn't dynamically linked correctly.
> Fill in the correct variable, and remove the xen prefix from xenctrl.
> 
> Reported-by: Edwin Török <edwin.torok@citrix.com>
> Suggested-by: Edwin Török <edwin.torok@citrix.com>
> Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Christian Lindig <christian.lindig@citrix.com>
> CC: Rob Hoes <Rob.Hoes@citrix.com>
> CC: Pau Ruiz Safont <pau.safont@vates.tech>
> CC: Andrii Sultanov <andriy.sultanov@vates.tech>
> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> 
> For 4.21.  Without this, we can't proceed with deprecate oxenstored.

Acked-by: Christian Lindig <christian.lindig@cloud.com>

Re: [PATCH for-4.21] ocaml/xsd_glue: Fix dynamic linking configuration
Posted by Andrew Cooper 1 month, 1 week ago
Sorry, forgot the for-4.21 in the subject.

~Andrew

On 04/11/2025 4:56 pm, Andrew Cooper wrote:
> The latest oxenstored from Xapi-project fails to start up:
>
>   launch-xenstore[1201]: Starting /usr/sbin/oxenstored...
>   launch-xenstore[1222]: Fatal error: exception
>     Dynlink.Error (Dynlink.Cannot_open_dll "Dynlink.Error (Dynlink.Cannot_open_dll
>     \"Failure(\\\"/usr/libexec/xen//ocaml/xsd_glue/xenctrl_plugin/domain_getinfo_v1.cmxs:
>     undefined symbol: xc_domain_getinfo_single\\\")\")")
>
> This is because domain_getinfo_v1.cmxs isn't dynamically linked correctly.
> Fill in the correct variable, and remove the xen prefix from xenctrl.
>
> Reported-by: Edwin Török <edwin.torok@citrix.com>
> Suggested-by: Edwin Török <edwin.torok@citrix.com>
> Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Christian Lindig <christian.lindig@citrix.com>
> CC: Rob Hoes <Rob.Hoes@citrix.com>
> CC: Pau Ruiz Safont <pau.safont@vates.tech>
> CC: Andrii Sultanov <andriy.sultanov@vates.tech>
> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>
> For 4.21.  Without this, we can't proceed with deprecate oxenstored.
>
> This wants backporting to 4.20 too.
>
> Previously this was hidden by oxenstored unexpectedly statically linking
> libxenctrl via the ocaml-evtchn bindings, and became exposed when the bindings
> were moved to use libxenevtchn.
> ---
>  tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
> index 4be1feacfe24..6356159020c1 100644
> --- a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
> +++ b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/Makefile
> @@ -11,7 +11,7 @@ OBJS = domain_getinfo_v1
>  INTF = $(foreach obj, $(OBJS),$(obj).cmi)
>  LIBS = domain_getinfo_v1.cmxa domain_getinfo_v1.cmxs
>  
> -LIBS_xsd_glue = $(call xenlibs-ldflags-ldlibs,xenctrl)
> +LIBS_domain_getinfo_v1 = $(call xenlibs-ldflags-ldlibs,ctrl)
>  
>  all: $(INTF) $(LIBS) $(PROGRAMS)
>  
>
> base-commit: 9632ce6fe5b288244d2550cd2e619a55c5168bf8