From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: ocaml bindings Date: Wed, 3 Apr 2013 18:12:21 +0100 Message-ID: <515C62F5.1040907@citrix.com> References: <3258352.oW0QVvLMy7@localhost> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050701000604090603020809" Return-path: In-Reply-To: <3258352.oW0QVvLMy7@localhost> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: AL13N Cc: "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org --------------050701000604090603020809 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit On 03/04/13 18:03, AL13N wrote: > i'm the Mageia Xen package maintainer, and a user reported that i had missing > symbols in my ocaml bindings: > > https://bugs.mageia.org/show_bug.cgi?id=5199 > > i'm using Xen 4.2.1 and ocaml 3.12.1 > > the problem is that if you just to a simple hello world and you're using > certain bindings (eg: xeneventch): you get missing symbols. (others appear to > be fine). > > I know next to nothing about ocaml, and it could be my build process, but i > kinda need some help about this. > > this is my spec file: http://svnweb.mageia.org/packages/cauldron/xen/current > > Thanks in advance > > PS: we're at version freeze and release freeze is pretty soon :-S This is because the ocaml tools embed the build target links in the generated libs. If you try to link against them later outside the build environment, it will break. Attached is the patch used to fix this problem for XenServer for Xen 4.2. ~Andrew > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel --------------050701000604090603020809 Content-Type: text/plain; charset="UTF-8"; name="xen-4.2-ocaml-build-patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xen-4.2-ocaml-build-patch" diff -r 9b10adc11ae6 tools/ocaml/Makefile.rules --- a/tools/ocaml/Makefile.rules +++ b/tools/ocaml/Makefile.rules @@ -58,14 +58,8 @@ # define a library target .cmxa and .cma define OCAML_LIBRARY_template - $(1).cmxa: lib$(1)_stubs.a $(foreach obj,$($(1)_OBJS),$(obj).cmx) - $(call mk-caml-lib-native,$$@, -cclib -l$(1)_stubs $(foreach lib,$(LIBS_$(1)),-cclib $(lib)), $(foreach obj,$($(1)_OBJS),$(obj).cmx)) - $(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmo) - $(call mk-caml-lib-bytecode,$$@, -dllib dll$(1)_stubs.so -cclib -l$(1)_stubs $(foreach lib,$(LIBS_$(1)),-cclib $(lib)), $$+) - $(1)_stubs.a: $(foreach obj,$$($(1)_C_OBJS),$(obj).o) - $(call mk-caml-stubs,$$@, $$+) - lib$(1)_stubs.a: $(foreach obj,$($(1)_C_OBJS),$(obj).o) - $(call mk-caml-lib-stubs,$$@, $$+) +$(1).cma: $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) + $(OCAMLMKLIB) -o $1 -oc $(1)_stubs $(foreach obj,$($(1)_OBJS),$(obj).cmx $(obj).cmo) $(foreach obj,$($(1)_C_OBJS),$(obj).o) $(foreach lib, $(LIBS_$(1)_SYSTEM), -cclib $(lib)) $(foreach arg,$(LIBS_$(1)),-ldopt $(arg)) endef define OCAML_NOC_LIBRARY_template diff -r 9b10adc11ae6 tools/ocaml/libs/eventchn/Makefile --- a/tools/ocaml/libs/eventchn/Makefile +++ b/tools/ocaml/libs/eventchn/Makefile @@ -9,6 +9,7 @@ LIBS = xeneventchn.cma xeneventchn.cmxa LIBS_xeneventchn = $(LDLIBS_libxenctrl) +LIBS_xeneventchn_SYSTEM = -lxenctrl all: $(INTF) $(LIBS) $(PROGRAMS) diff -r 9b10adc11ae6 tools/ocaml/libs/xc/Makefile --- a/tools/ocaml/libs/xc/Makefile +++ b/tools/ocaml/libs/xc/Makefile @@ -10,6 +10,7 @@ LIBS = xenctrl.cma xenctrl.cmxa LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) +LIBS_xenctrl_SYSTEM = -lxenctrl -lxenguest xenctrl_OBJS = $(OBJS) xenctrl_C_OBJS = xenctrl_stubs diff -r 9b10adc11ae6 tools/ocaml/xenstored/Makefile --- a/tools/ocaml/xenstored/Makefile +++ b/tools/ocaml/xenstored/Makefile @@ -43,7 +43,9 @@ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn $(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xc $(OCAML_TOPLEVEL)/libs/xc/xenctrl.cmxa \ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xb $(OCAML_TOPLEVEL)/libs/xb/xenbus.cmxa \ - -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc + -ccopt -L -ccopt $(XEN_ROOT)/tools/libxc \ + $(foreach obj, $(LDLIBS_libxenctrl), -ccopt $(obj)) \ + $(foreach obj, $(LDLIBS_libxenguest), -ccopt $(obj)) PROGRAMS = oxenstored --------------050701000604090603020809 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --------------050701000604090603020809--