Jon Ludlam
2011-Nov-29  14:43 UTC
[Pkg-xen-devel] [OCAML 0/7] V4 or so of the xen ocaml packaging patches
Here is the latest version of the patches to package the ocaml libraries. Changes since last time: * rename the packages from libxen-4.1-ocaml* to libxen-ocaml* - we wont be looking to install multiple concurrent versions of the same package, so the version doesn't need to be in the package name * Removed superfluous GENCONTROL definitions - dh_ocaml does what we need * Removed inclusion of the ocamlvars.mk in rules - it only needs to be in rules.real * Fixed a problem with the dh_install invocations where it was globbing the local filesystem rather than the sourcedir * Excluded the .owner files from OCAML_DLL_DIR * Renamed the patches to reflect their origins, and whether they are exactly taken from upstream or reworked. * Rebased on Bastian's latest work Likely that the larger patches will be rejected again, so they're all available here: https://github.com/jonludlam/pkg-xen/commits/for-debian11 Jon Jon Ludlam (7): Import patch 23936:cdb34816a40a from xen-unstable.hg Import patch 23937:5173834e8476 from xen-unstable.hg Import patch 23938:fa04fbd56521 from xen-unstable.hg Import patch 23939:51288f69523f from xen-unstable.hg Import patch 23940:187d59e32a58 from xen-unstable.hg Create 2 ocaml packages, libxen-ocaml and libxen-ocaml-dev. Add in two header files required for the use of libxenctrl xen/debian/libxen-dev.install | 2 + xen/debian/patches/series | 7 + xen/debian/patches/tools-ocaml-fix-build.diff | 94 + .../patches/upstream-23936:cdb34816a40a-rework | 7924 ++++++++++++++++++++ xen/debian/patches/upstream-23937:5173834e8476 | 20 + .../patches/upstream-23938:fa04fbd56521-rework | 321 + .../patches/upstream-23939:51288f69523f-rework | 1509 ++++ xen/debian/patches/upstream-23940:187d59e32a58 | 45 + xen/debian/rules.real | 37 + xen/debian/templates/control.main.in | 16 + xen/debian/templates/control.source.in | 5 +- 11 files changed, 9979 insertions(+), 1 deletions(-) create mode 100644 xen/debian/patches/tools-ocaml-fix-build.diff create mode 100644 xen/debian/patches/upstream-23936:cdb34816a40a-rework create mode 100644 xen/debian/patches/upstream-23937:5173834e8476 create mode 100644 xen/debian/patches/upstream-23938:fa04fbd56521-rework create mode 100644 xen/debian/patches/upstream-23939:51288f69523f-rework create mode 100644 xen/debian/patches/upstream-23940:187d59e32a58 -- 1.7.5.4
Jon Ludlam
2011-Nov-29  14:43 UTC
[Pkg-xen-devel] [OCAML 2/7] Import patch 23937:5173834e8476 from xen-unstable.hg
--- xen/debian/patches/series | 2 +- xen/debian/patches/upstream-23937:5173834e8476 | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletions(-) create mode 100644 xen/debian/patches/upstream-23937:5173834e8476 diff --git a/xen/debian/patches/series b/xen/debian/patches/series index 9eaad71..1530769 100644 --- a/xen/debian/patches/series +++ b/xen/debian/patches/series @@ -53,4 +53,4 @@ tools-python-shebang.diff tools-xenstore-compatibility.diff upstream-23936:cdb34816a40a-rework - +upstream-23937:5173834e8476 diff --git a/xen/debian/patches/upstream-23937:5173834e8476 b/xen/debian/patches/upstream-23937:5173834e8476 new file mode 100644 index 0000000..f91dbaf --- /dev/null +++ b/xen/debian/patches/upstream-23937:5173834e8476 @@ -0,0 +1,20 @@ +# HG changeset patch +# User Jon Ludlam <jonathan.ludlam at eu.citrix.com> +# Date 1318261088 -3600 +# Node ID 5173834e8476074afceb5c0124126e74a3954e97 +# Parent cdb34816a40a2dd3aaf324f7dcba83a122cf9146 +tools/ocaml: Add a missing dependency to the xenctrl ocaml package + +Signed-off-by: Jon Ludlam <jonathan.ludlam at eu.citrix.com> +Acked-by: Ian Campbell <ian.campbell.com> +Committed-by: Ian Jackson <ian.jackson.citrix.com> + +--- a/tools/ocaml/libs/xc/META.in ++++ b/tools/ocaml/libs/xc/META.in +@@ -1,5 +1,5 @@ + version = "@VERSION@" + description = "Xen Control Interface" +-requires = "xenmmap,uuid" ++requires = "unix,xenmmap,uuid" + archive(byte) = "xenctrl.cma" + archive(native) = "xenctrl.cmxa" -- 1.7.5.4
Jon Ludlam
2011-Nov-29  14:43 UTC
[Pkg-xen-devel] [OCAML 3/7] Import patch 23938:fa04fbd56521 from xen-unstable.hg
---
 xen/debian/patches/series                          |    2 +
 .../patches/upstream-23938:fa04fbd56521-rework     |  321 ++++++++++++++++++++
 2 files changed, 323 insertions(+), 0 deletions(-)
 create mode 100644 xen/debian/patches/upstream-23938:fa04fbd56521-rework
diff --git a/xen/debian/patches/series b/xen/debian/patches/series
index 1530769..a3875e5 100644
--- a/xen/debian/patches/series
+++ b/xen/debian/patches/series
@@ -54,3 +54,5 @@ tools-xenstore-compatibility.diff
 
 upstream-23936:cdb34816a40a-rework
 upstream-23937:5173834e8476
+upstream-23938:fa04fbd56521-rework
+
diff --git a/xen/debian/patches/upstream-23938:fa04fbd56521-rework
b/xen/debian/patches/upstream-23938:fa04fbd56521-rework
new file mode 100644
index 0000000..72f0e64
--- /dev/null
+++ b/xen/debian/patches/upstream-23938:fa04fbd56521-rework
@@ -0,0 +1,321 @@
+# HG changeset patch
+# User Jon Ludlam <jonathan.ludlam at eu.citrix.com>
+# Date 1317295879 -3600
+# Node ID 6c87e9dc5331096e8bfbad60a4f560cae05c4034
+# Parent c5df5f625ee2a0339b2a6785f99a5a0f9727f836
+[OCAML] Remove the uuid library
+
+This patch has the same effect as xen-unstable.hg c/s
+23938:fa04fbd56521
+
+The library was only minimally used, and was really rather redundant.
+
+Signed-off-by: Zheng Li <zheng.li at eu.citrix.com>
+Acked-by: Jon Ludlam <jonathan.ludlam at eu.citrix.com>
+
+--- a/tools/ocaml/libs/Makefile
++++ b/tools/ocaml/libs/Makefile
+@@ -2,7 +2,7 @@
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+ SUBDIRS= \
+-	uuid mmap \
++	mmap \
+ 	log xc eventchn \
+ 	xb xs xl
+ 
+--- a/tools/ocaml/libs/uuid/META.in
++++ /dev/null
+@@ -1,4 +0,0 @@
+-version = "@VERSION@"
+-description = "Uuid - universal identifer"
+-archive(byte) = "uuid.cma"
+-archive(native) = "uuid.cmxa"
+--- a/tools/ocaml/libs/uuid/uuid.ml
++++ /dev/null
+@@ -1,100 +0,0 @@
+-(*
+- * Copyright (C) 2006-2010 Citrix Systems Inc.
+- * Author Vincent Hanquez <vincent.hanquez at eu.citrix.com>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published
+- * by the Free Software Foundation; version 2.1 only. with the special
+- * exception on linking described in file LICENSE.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *)
+-
+-(* Internally, a UUID is simply a string. *)
+-type 'a t = string
+-
+-type cookie = string
+-
+-let of_string s = s
+-let to_string s = s
+-
+-let null = ""
+-
+-(* deprecated: we don't need to duplicate the uuid prefix/suffix *)
+-let uuid_of_string = of_string
+-let string_of_uuid = to_string
+-
+-let string_of_cookie s = s
+-
+-let cookie_of_string s = s
+-
+-let dev_random = "/dev/random"
+-let dev_urandom = "/dev/urandom"
+-
+-let rnd_array n +-	let fstbyte i = 0xff land i in
+-	let sndbyte i = fstbyte (i lsr 8) in
+-	let thdbyte i = sndbyte (i lsr 8) in
+-	let rec rnd_list n acc = match n with
+-		| 0 -> acc
+-		| 1 ->
+-			let b = fstbyte (Random.bits ()) in
+-			b :: acc
+-		| 2 ->
+-			let r = Random.bits () in
+-			let b1 = fstbyte r in
+-			let b2 = sndbyte r in
+-			b1 :: b2 :: acc
+-		| n -> 
+-			let r = Random.bits () in
+-			let b1 = fstbyte r in
+-			let b2 = sndbyte r in
+-			let b3 = thdbyte r in
+-			rnd_list (n - 3) (b1 :: b2 :: b3 :: acc)
+-	in
+-	Array.of_list (rnd_list n [])
+-
+-let read_array dev n = 
+-  let ic = open_in_bin dev in
+-  try
+-    let result = Array.init n (fun _ -> input_byte ic) in
+-    close_in ic;
+-    result
+-  with e ->
+-    close_in ic;
+-    raise e
+-
+-let uuid_of_int_array uuid +-  Printf.sprintf
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
+-    uuid.(0) uuid.(1) uuid.(2) uuid.(3) uuid.(4) uuid.(5)
+-    uuid.(6) uuid.(7) uuid.(8) uuid.(9) uuid.(10) uuid.(11)
+-    uuid.(12) uuid.(13) uuid.(14) uuid.(15)
+-
+-let make_uuid_prng () = uuid_of_int_array (rnd_array 16)
+-let make_uuid_urnd () = uuid_of_int_array (read_array dev_urandom 16)
+-let make_uuid_rnd () = uuid_of_int_array (read_array dev_random 16)
+-let make_uuid = make_uuid_urnd
+-
+-let make_cookie() +-  let bytes = Array.to_list (read_array dev_urandom 64) in
+-  String.concat "" (List.map (Printf.sprintf "%1x") bytes)
+-
+-let int_array_of_uuid s +-  try
+-    let l = ref [] in
+-    Scanf.sscanf s
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
+-      (fun a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 ->
+-      l := [ a0; a1; a2; a3; a4; a5; a6; a7; a8; a9;
+-             a10; a11; a12; a13; a14; a15; ]);
+-    Array.of_list !l
+-  with _ -> invalid_arg "Uuid.int_array_of_uuid"
+-
+-let is_uuid str +-	try
+-		Scanf.sscanf str
+-		
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
+-			(fun _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -> true)
+-	with _ -> false
+--- a/tools/ocaml/libs/uuid/uuid.mli
++++ /dev/null
+@@ -1,67 +0,0 @@
+-(*
+- * Copyright (C) 2006-2010 Citrix Systems Inc.
+- * Author Vincent Hanquez <vincent.hanquez at eu.citrix.com>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published
+- * by the Free Software Foundation; version 2.1 only. with the special
+- * exception on linking described in file LICENSE.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *)
+-(** Type-safe UUIDs.
+-    Probably need to refactor this; UUIDs are used in two places:
+-    + to uniquely name things across the cluster
+-    + as secure session IDs
+-
+-    There is the additional constraint that current Xen tools use 
+-    a particular format of UUID (the 16 byte variety generated by fresh ())
+-
+-	Also, cookies aren't UUIDs and should be put somewhere else.
+-*)
+-
+-(** A 128-bit UUID.  Using phantom types ('a) to achieve the requires
type-safety. *)
+-type 'a t
+-
+-(** Create a fresh UUID *)
+-val make_uuid : unit -> 'a t
+-val make_uuid_prng : unit -> 'a t
+-val make_uuid_urnd : unit -> 'a t
+-val make_uuid_rnd : unit -> 'a t
+-
+-(** Create a UUID from a string. *)
+-val of_string : string -> 'a t
+-
+-(** Marshal a UUID to a string. *)
+-val to_string : 'a t -> string
+-
+-(** A null UUID, as if such a thing actually existed.  It turns out to be
+- * useful though. *)
+-val null : 'a t
+-
+-(** Deprecated alias for {! Uuid.of_string} *)
+-val uuid_of_string : string -> 'a t
+-
+-(** Deprecated alias for {! Uuid.to_string} *)
+-val string_of_uuid : 'a t -> string
+-
+-(** Convert an array to a UUID. *)
+-val uuid_of_int_array : int array -> 'a t
+-
+-(** Convert a UUID to an array. *)
+-val int_array_of_uuid : 'a t -> int array
+-
+-(** Check whether a string is a UUID. *)
+-val is_uuid : string -> bool
+-
+-(** A 512-bit cookie. *)
+-type cookie
+-
+-val make_cookie : unit -> cookie
+-
+-val cookie_of_string : string -> cookie
+-
+-val string_of_cookie : cookie -> string
+--- a/tools/ocaml/libs/xc/META.in
++++ b/tools/ocaml/libs/xc/META.in
+@@ -1,5 +1,5 @@
+ version = "@VERSION@"
+ description = "Xen Control Interface"
+-requires = "unix,xenmmap,uuid"
++requires = "unix,xenmmap"
+ archive(byte) = "xenctrl.cma"
+ archive(native) = "xenctrl.cmxa"
+--- a/tools/ocaml/libs/xc/Makefile
++++ b/tools/ocaml/libs/xc/Makefile
+@@ -3,7 +3,7 @@
+ include $(TOPLEVEL)/common.make
+ 
+ CFLAGS += -I../mmap -I./ -I$(XEN_ROOT)/tools/libxc
+-OCAMLINCLUDE += -I ../mmap -I ../uuid -I $(XEN_ROOT)/tools/libxc
++OCAMLINCLUDE += -I ../mmap -I $(XEN_ROOT)/tools/libxc
+ 
+ OBJS = xenctrl
+ INTF = xenctrl.cmi
+--- a/tools/ocaml/libs/xc/xenctrl.ml
++++ b/tools/ocaml/libs/xc/xenctrl.ml
+@@ -118,14 +118,23 @@
+ external _domain_create: handle -> int32 -> domain_create_flag list
-> int array -> domid
+        = "stub_xc_domain_create"
+ 
++let int_array_of_uuid_string s ++	try
++		Scanf.sscanf s
++		
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
++			(fun a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 ->
++				[| a0; a1; a2; a3; a4; a5; a6; a7;
++				   a8; a9; a10; a11; a12; a13; a14; a15 |])
++	with _ -> invalid_arg ("Xc.int_array_of_uuid_string: " ^ s)
++
+ let domain_create handle n flags uuid +-	_domain_create handle n flags
(Uuid.int_array_of_uuid uuid)
++	_domain_create handle n flags (int_array_of_uuid_string uuid)
+ 
+ external _domain_sethandle: handle -> domid -> int array -> unit
+                           = "stub_xc_domain_sethandle"
+ 
+ let domain_sethandle handle n uuid +-	_domain_sethandle handle n
(Uuid.int_array_of_uuid uuid)
++	_domain_sethandle handle n (int_array_of_uuid_string uuid)
+ 
+ external domain_max_vcpus: handle -> domid -> int -> unit
+        = "stub_xc_domain_max_vcpus"
+--- a/tools/ocaml/libs/xc/xenctrl.mli
++++ b/tools/ocaml/libs/xc/xenctrl.mli
+@@ -74,12 +74,8 @@
+ external is_fake : unit -> bool = "stub_xc_interface_is_fake"
+ external interface_close : handle -> unit =
"stub_xc_interface_close"
+ val with_intf : (handle -> 'a) -> 'a
+-external _domain_create : handle -> int32 -> domain_create_flag list
-> int array -> domid
+-  = "stub_xc_domain_create"
+-val domain_create : handle -> int32 -> domain_create_flag list ->
'a Uuid.t -> domid
+-external _domain_sethandle : handle -> domid -> int array -> unit
+-  = "stub_xc_domain_sethandle"
+-val domain_sethandle : handle -> domid -> 'a Uuid.t -> unit
++val domain_create : handle -> int32 -> domain_create_flag list ->
string -> domid
++val domain_sethandle : handle -> domid -> string -> unit
+ external domain_max_vcpus : handle -> domid -> int -> unit
+   = "stub_xc_domain_max_vcpus"
+ external domain_pause : handle -> domid -> unit =
"stub_xc_domain_pause"
+--- a/tools/ocaml/xenstored/Makefile
++++ b/tools/ocaml/xenstored/Makefile
+@@ -5,7 +5,6 @@
+ OCAMLINCLUDE += \
+ 	-I $(OCAML_TOPLEVEL)/libs/log \
+ 	-I $(OCAML_TOPLEVEL)/libs/xb \
+-	-I $(OCAML_TOPLEVEL)/libs/uuid \
+ 	-I $(OCAML_TOPLEVEL)/libs/mmap \
+ 	-I $(OCAML_TOPLEVEL)/libs/xc \
+ 	-I $(OCAML_TOPLEVEL)/libs/eventchn
+@@ -34,7 +33,6 @@
+ INTF = symbol.cmi trie.cmi
+ XENSTOREDLIBS = \
+ 	unix.cmxa \
+-	$(OCAML_TOPLEVEL)/libs/uuid/uuid.cmxa \
+ 	-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/mmap
$(OCAML_TOPLEVEL)/libs/mmap/xenmmap.cmxa \
+ 	-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/log
$(OCAML_TOPLEVEL)/libs/log/log.cmxa \
+ 	-ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/eventchn
$(OCAML_TOPLEVEL)/libs/eventchn/xeneventchn.cmxa \
+--- a/tools/ocaml/libs/uuid/Makefile
++++ /dev/null
+@@ -1,29 +0,0 @@
+-TOPLEVEL=$(CURDIR)/../..
+-XEN_ROOT=$(TOPLEVEL)/../..
+-include $(TOPLEVEL)/common.make
+-
+-OBJS = uuid
+-INTF = $(foreach obj, $(OBJS),$(obj).cmi)
+-LIBS = uuid.cma uuid.cmxa
+-
+-all: $(INTF) $(LIBS) $(PROGRAMS)
+-
+-bins: $(PROGRAMS)
+-
+-libs: $(LIBS)
+-
+-uuid_OBJS = $(OBJS)
+-OCAML_NOC_LIBRARY = uuid
+-
+-.PHONY: install
+-install: $(LIBS) META
+-	mkdir -p $(OCAMLDESTDIR)
+-	ocamlfind remove -destdir $(OCAMLDESTDIR) uuid
+-	ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore uuid META $(INTF)
$(LIBS) *.a *.cmx
+-
+-.PHONY: uninstall
+-uninstall:
+-	ocamlfind remove -destdir $(OCAMLDESTDIR) uuid
+-
+-include $(TOPLEVEL)/Makefile.rules
+-
-- 
1.7.5.4
Jon Ludlam
2011-Nov-29  14:43 UTC
[Pkg-xen-devel] [OCAML 5/7] Import patch 23940:187d59e32a58 from xen-unstable.hg
---
 xen/debian/patches/series                      |    2 +-
 xen/debian/patches/upstream-23940:187d59e32a58 |   45 ++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletions(-)
 create mode 100644 xen/debian/patches/upstream-23940:187d59e32a58
diff --git a/xen/debian/patches/series b/xen/debian/patches/series
index c0bde78..56190b5 100644
--- a/xen/debian/patches/series
+++ b/xen/debian/patches/series
@@ -56,4 +56,4 @@ upstream-23936:cdb34816a40a-rework
 upstream-23937:5173834e8476
 upstream-23938:fa04fbd56521-rework
 upstream-23939:51288f69523f-rework
-
+upstream-23940:187d59e32a58
diff --git a/xen/debian/patches/upstream-23940:187d59e32a58
b/xen/debian/patches/upstream-23940:187d59e32a58
new file mode 100644
index 0000000..2c7521a
--- /dev/null
+++ b/xen/debian/patches/upstream-23940:187d59e32a58
@@ -0,0 +1,45 @@
+# HG changeset patch
+# User Jon Ludlam <jonathan.ludlam at eu.citrix.com>
+# Date 1318261276 -3600
+# Node ID 187d59e32a586d65697ed46bef106b52e3fb5ab9
+# Parent  51288f69523fcbbefa12cea5a761a6e957410151
+tools/ocaml: Fix 2 bit-twiddling bugs and an off-by-one
+
+The bit bugs are in ocaml vcpu affinity calls, and the off-by-one
+error is in the ocaml console ring code
+
+Signed-off-by: Zheng Li <zheng.li at eu.citrix.com>
+Acked-by: Ian Campbell <ian.campbell.com>
+Committed-by: Ian Jackson <ian.jackson.citrix.com>
+Acked-by: Jon Ludlam <jonathan.ludlam at eu.citrix.com>
+
+diff -r 51288f69523f -r 187d59e32a58 tools/ocaml/libs/xc/xenctrl_stubs.c
+--- a/tools/ocaml/libs/xc/xenctrl_stubs.c	Mon Oct 10 16:41:16 2011 +0100
++++ b/tools/ocaml/libs/xc/xenctrl_stubs.c	Mon Oct 10 16:41:16 2011 +0100
+@@ -430,7 +430,7 @@
+ 
+ 	for (i=0; i<len; i++) {
+ 		if (Bool_val(Field(cpumap, i)))
+-			c_cpumap[i/8] |= i << (i&7);
++			c_cpumap[i/8] |= 1 << (i&7);
+ 	}
+ 	retval = xc_vcpu_setaffinity(_H(xch), _D(domid),
+ 	                             Int_val(vcpu), c_cpumap);
+@@ -466,7 +466,7 @@
+ 	ret = caml_alloc(len, 0);
+ 
+ 	for (i=0; i<len; i++) {
+-		if (c_cpumap[i%8] & 1 << (i&7))
++		if (c_cpumap[i/8] & 1 << (i&7))
+ 			Store_field(ret, i, Val_true);
+ 		else
+ 			Store_field(ret, i, Val_false);
+@@ -523,7 +523,7 @@
+ 
+ CAMLprim value stub_xc_readconsolering(value xch)
+ {
+-	unsigned int size = RING_SIZE;
++	unsigned int size = RING_SIZE - 1;
+ 	char *ring_ptr = ring;
+ 
+ 	CAMLparam1(xch);
-- 
1.7.5.4
Jon Ludlam
2011-Nov-29  14:43 UTC
[Pkg-xen-devel] [OCAML 6/7] Create 2 ocaml packages, libxen-ocaml and libxen-ocaml-dev.
---
 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
Jon Ludlam
2011-Nov-29  14:43 UTC
[Pkg-xen-devel] [OCAML 7/7] Add in two header files required for the use of libxenctrl
--- xen/debian/libxen-dev.install | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/xen/debian/libxen-dev.install b/xen/debian/libxen-dev.install index 2694514..58e3799 100644 --- a/xen/debian/libxen-dev.install +++ b/xen/debian/libxen-dev.install @@ -8,4 +8,6 @@ usr/include/xenctrl.h usr/include/xenguest.h usr/include/xs.h usr/include/xs_lib.h +usr/include/xentoollog.h +usr/include/xenctrlosdep.h usr/include/xen -- 1.7.5.4
Bastian Blank
2011-Dec-06  21:44 UTC
[Pkg-xen-devel] [OCAML 0/7] V4 or so of the xen ocaml packaging patches
On Tue, Nov 29, 2011 at 02:43:22PM +0000, Jon Ludlam wrote:> Here is the latest version of the patches to package the ocaml libraries. Changes > since last time:Commited with some small changes. Bastian -- Star Trek Lives!