[Pkg-xen-devel] [OCAML 6/7] Create 2 ocaml packages, libxen-ocaml and libxen-ocaml-dev.

Jon Ludlam jonathan.ludlam at eu.citrix.com
Tue Nov 29 14:43:28 UTC 2011


---
 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 <pkg-xen-devel at lists.alioth.debian.org>
+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 <jonathan.ludlam at eu.citrix.com>
+---
+ 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




More information about the Pkg-xen-devel mailing list