--- xen/debian/patches/series | 1 + xen/debian/patches/tools-ocaml-fix-build.diff | 94 +++++++++++++++++++++++++ xen/debian/rules.real | 37 ++++++++++ xen/debian/templates/control.main.in | 16 ++++ xen/debian/templates/control.source.in | 5 +- 5 files changed, 152 insertions(+), 1 deletions(-) create mode 100644 xen/debian/patches/tools-ocaml-fix-build.diff
diff --git a/xen/debian/patches/series b/xen/debian/patches/series index 56190b5..b5006c1 100644 --- a/xen/debian/patches/series +++ b/xen/debian/patches/series @@ -57,3 +57,4 @@ upstream-23937:5173834e8476 upstream-23938:fa04fbd56521-rework upstream-23939:51288f69523f-rework upstream-23940:187d59e32a58 +tools-ocaml-fix-build.diff diff --git a/xen/debian/patches/tools-ocaml-fix-build.diff b/xen/debian/patches/tools-ocaml-fix-build.diff new file mode 100644 index 0000000..653d116 --- /dev/null +++ b/xen/debian/patches/tools-ocaml-fix-build.diff @@ -0,0 +1,94 @@ +From: Debian Xen Team <[email protected]> +Date: Tue, 29 Nov 2011 11:45:27 +0000 +Subject: tools-ocaml-fix-build.diff + +Fix the build of the ocaml libraries + +Signed-off-by: Jon Ludlam <[email protected]> +--- + tools/Rules.mk | 2 ++ + tools/ocaml/Makefile.rules | 10 ++-------- + tools/ocaml/libs/eventchn/Makefile | 1 + + tools/ocaml/libs/xc/Makefile | 3 ++- + tools/ocaml/xenstored/Makefile | 4 +++- + 5 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/tools/Rules.mk b/tools/Rules.mk +index 2ec0fe9..55d5e1f 100644 +--- a/tools/Rules.mk ++++ b/tools/Rules.mk +@@ -21,9 +21,11 @@ CFLAGS_include = -I$(XEN_INCLUDE) + + CFLAGS_libxenctrl = -I$(XEN_LIBXC) $(CFLAGS_include) + LDLIBS_libxenctrl = -L$(XEN_LIBXC) -lxenctrl $(DLOPEN_LIBS) ++LDLIBS_libxenctrl_SYSTEM = -lxenctrl-$(XEN_VERSION) + + CFLAGS_libxenguest = -I$(XEN_LIBXC) $(CFLAGS_include) + LDLIBS_libxenguest = -L$(XEN_LIBXC) -lxenguest ++LDLIBS_libxenguest_SYSTEM = -lxenguest-$(XEN_VERSION) + + CFLAGS_libxenstore = -I$(XEN_XENSTORE) $(CFLAGS_include) + LDLIBS_libxenstore = -L$(XEN_XENSTORE) -lxenstore +diff --git a/tools/ocaml/Makefile.rules b/tools/ocaml/Makefile.rules +index c630764..fe29d88 100644 +--- a/tools/ocaml/Makefile.rules ++++ b/tools/ocaml/Makefile.rules +@@ -58,14 +58,8 @@ mk-caml-lib-stubs = \ + + # define a library target <name>.cmxa and <name>.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, $$+) +- $(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,$$@, $$+, $(LIBS_$(1))) ++ $(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 --git a/tools/ocaml/libs/eventchn/Makefile b/tools/ocaml/libs/eventchn/Makefile +index 19c88b7..65a4369 100644 +--- a/tools/ocaml/libs/eventchn/Makefile ++++ b/tools/ocaml/libs/eventchn/Makefile +@@ -7,6 +7,7 @@ INTF = $(foreach obj, $(OBJS),$(obj).cmi) + LIBS = xeneventchn.cma xeneventchn.cmxa + + LIBS_xeneventchn = $(LDLIBS_libxenctrl) ++LIBS_xeneventchn_SYSTEM = $(LDLIBS_libxenctrl_SYSTEM) + + all: $(INTF) $(LIBS) $(PROGRAMS) + +diff --git a/tools/ocaml/libs/xc/Makefile b/tools/ocaml/libs/xc/Makefile +index 7a12273..60301a5 100644 +--- a/tools/ocaml/libs/xc/Makefile ++++ b/tools/ocaml/libs/xc/Makefile +@@ -9,7 +9,8 @@ OBJS = xenctrl + INTF = xenctrl.cmi + LIBS = xenctrl.cma xenctrl.cmxa + +-LIBS_xenctrl = -L$(XEN_ROOT)/tools/libxc -lxenctrl -lxenguest ++LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) ++LIBS_xenctrl_SYSTEM = $(LDLIBS_libxenctrl_SYSTEM) $(LDLIBS_libxenguest_SYSTEM) + + xenctrl_OBJS = $(OBJS) + xenctrl_C_OBJS = xenctrl_stubs +diff --git a/tools/ocaml/xenstored/Makefile b/tools/ocaml/xenstored/Makefile +index 3a25d1d..2627af3 100644 +--- a/tools/ocaml/xenstored/Makefile ++++ b/tools/ocaml/xenstored/Makefile +@@ -36,7 +36,9 @@ XENSTOREDLIBS = \ + -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 + +-- diff --git a/xen/debian/rules.real b/xen/debian/rules.real index 96f1856..251623f 100644 --- a/xen/debian/rules.real +++ b/xen/debian/rules.real @@ -1,3 +1,5 @@ +include /usr/share/ocaml/ocamlvars.mk + DEB_HOST_ARCH := $(shell dpkg-architecture -a$(ARCH) -qDEB_HOST_ARCH) DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -a$(ARCH) -qDEB_HOST_GNU_TYPE) DEB_BUILD_ARCH := $(shell dpkg-architecture -a$(ARCH) -qDEB_BUILD_ARCH) @@ -18,6 +20,8 @@ binary-arch-arch: install-libxen-dev_$(ARCH) binary-arch-arch: install-libxenstore_$(ARCH) binary-arch-arch: install-utils_$(ARCH) binary-arch-arch: install-xenstore-utils_$(ARCH) +binary-arch-arch: install-lib-ocaml-dev_$(ARCH) +binary-arch-arch: install-lib-ocaml_$(ARCH) binary-arch-flavour: install-hypervisor_$(ARCH)_$(FLAVOUR) binary-indep: install-docs @@ -71,6 +75,7 @@ $(STAMPS_DIR)/install-utils_$(ARCH): CONFIG = \ XEN_COMPILE_ARCH=$(XEN_ARCH) \ XEN_TARGET_ARCH=$(XEN_ARCH) \ XEN_VERSION=$(VERSION) \ + OCAMLDESTDIR=$(CURDIR)/$(BUILD_DIR)/install-utils_$(ARCH)_ocaml/$(OCAML_STDLIB_DIR) \ PYTHON=$(shell pyversions -r) $(STAMPS_DIR)/build-utils_$(ARCH): DIR=$(BUILD_DIR)/build-utils_$(ARCH) @@ -82,6 +87,7 @@ $(STAMPS_DIR)/install-utils_$(ARCH): DIR = $(BUILD_DIR)/build-utils_$(ARCH) $(STAMPS_DIR)/install-utils_$(ARCH): INSTALL_DIR = $(BUILD_DIR)/install-utils_$(ARCH) $(STAMPS_DIR)/install-utils_$(ARCH): $(STAMPS_DIR)/build-utils_$(ARCH) @rm -rf $(INSTALL_DIR) + mkdir -p $(INSTALL_DIR)_ocaml/$(OCAML_DLL_DIR) +$(MAKE_CLEAN) -C $(DIR)/tools install DESTDIR=$(CURDIR)/$(INSTALL_DIR) $(CONFIG) # hvmloader strip --remove-section=.comment --remove-section=.note $(INSTALL_DIR)/usr/lib/xen*/boot/* @@ -144,6 +150,37 @@ install-libxen-dev_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH) dh_shlibdeps +$(MAKE_SELF) install-base +install-lib-ocaml_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)_ocaml +install-lib-ocaml_$(ARCH): PACKAGE_NAME = libxen-ocaml +install-lib-ocaml_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME) +install-lib-ocaml_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH) + dh_testdir + dh_testroot + dh_prep + dh_install --sourcedir=$(DIR) ./$(OCAML_STDLIB_DIR)/*/META + dh_install --sourcedir=$(DIR) ./$(OCAML_STDLIB_DIR)/*/*.cma + dh_install --sourcedir=$(DIR) -X.so.owner ./$(OCAML_DLL_DIR)/* + dh_strip + dh_shlibdeps + dh_ocaml + +$(MAKE_SELF) install-base + +install-lib-ocaml-dev_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)_ocaml +install-lib-ocaml-dev_$(ARCH): PACKAGE_NAME = libxen-ocaml-dev +install-lib-ocaml-dev_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME) +install-lib-ocaml-dev_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH) + dh_testdir + dh_testroot + dh_prep + dh_install --sourcedir=$(DIR) ./$(OCAML_STDLIB_DIR)/*/*.cmx + dh_install --sourcedir=$(DIR) ./$(OCAML_STDLIB_DIR)/*/*.cmxa + dh_install --sourcedir=$(DIR) ./$(OCAML_STDLIB_DIR)/*/*.cmi + dh_install --sourcedir=$(DIR) ./$(OCAML_STDLIB_DIR)/*/*.a + dh_strip + dh_shlibdeps + dh_ocaml + +$(MAKE_SELF) install-base + install-libxenstore_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH) install-libxenstore_$(ARCH): PACKAGE_NAME = libxenstore3.0 install-libxenstore_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME) diff --git a/xen/debian/templates/control.main.in b/xen/debian/templates/control.main.in index 1bc913f..3dcec25 100644 --- a/xen/debian/templates/control.main.in +++ b/xen/debian/templates/control.main.in @@ -33,3 +33,19 @@ Replaces: xen-utils-common (<= 3.1.0-1) Description: Xenstore utilities for Xen This package contains the Xenstore utilities. +Package: libxen-ocaml +Section: ocaml +Depends: ${shlibs:Depends}, ${misc:Depends}, ${ocaml:Depends} +Provides: ${ocaml:Provides} +Description: OCaml libraries for controlling Xen + This package contains the runtime libraries required for the ocaml bindings + to the Xen control libraries. + +Package: libxen-ocaml-dev +Section: ocaml +Depends: libxen-ocaml (= ${binary:Version}), ${shlibs:Depends}, ocaml-findlib (>= 1.1), ${misc:Depends}, ${ocaml:Depends}, libxen-dev +Provides: ${ocaml:Provides} +Description: OCaml libraries for controlling Xen (devel package) + This package contains the ocaml findlib packages for compiling applications + that are designed to control the Xen hypervisor. + diff --git a/xen/debian/templates/control.source.in b/xen/debian/templates/control.source.in index 388d251..6790bd2 100644 --- a/xen/debian/templates/control.source.in +++ b/xen/debian/templates/control.source.in @@ -17,7 +17,10 @@ Build-Depends: libpci-dev, pkg-config, uuid-dev, - zlib1g-dev + zlib1g-dev, + ocaml-nox (>= 3.11.1-3~), + dh-ocaml (>= 0.9~), + ocaml-findlib Build-Depends-Indep: graphviz, ghostscript, -- 1.7.5.4 -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

