This is an update to the patches sent out on 25th October. I expect,
as before, that some of the larger patches won't get to the list so
they are also available here:
https://github.com/jonludlam/pkg-xen/commits/for-debian6.
Changes since last mail:
* I have split out the unrelated change to include 2 extra header files
in libxen-dev
* I have removed some instances of brace expansion
* I have installed the ocaml tools into install-utils_$(ARCH)_ocaml as
suggested
* I have moved the call to dh_ocaml from the base install to the ocaml
specific targets
* I have removed the rpath hackery following the change to install the
libraries into /usr/lib rather than /usr/lib/xen-4.1/lib
These patches were created with the help and assistance of Ian Campbell,
Thomas Goirand, and the Ocaml Debian Task Force.
Jon Ludlam (7):
Import patch 23936:cdb34816a40a from xen-unstable.hg - renaming the
ocamlfind packages
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-4.1 and libxen-ocaml-dev.
Add in two header files required for the use of libxenctrl
xen/debian/bin/gencontrol.py | 6 +
xen/debian/libxen-dev.install | 2 +
xen/debian/patches/series | 7 +
xen/debian/patches/tools-ocaml-fix-build.diff | 60 +
.../patches/tools-ocaml-fix-xc-dependencies.diff | 20 +
xen/debian/patches/tools-ocaml-fix-xc.diff | 45 +
xen/debian/patches/tools-ocaml-remove-log.diff | 1509 ++++
xen/debian/patches/tools-ocaml-remove-uuid.diff | 321 +
.../tools-ocaml-rename-ocamlfind-packages.diff | 7924 ++++++++++++++++++++
xen/debian/rules | 2 +-
xen/debian/rules.real | 34 +
xen/debian/templates/control.main.in | 18 +
xen/debian/templates/control.source.in | 5 +-
xen/debian/templates/libxen-ocaml-dev.install.in | 25 +
xen/debian/templates/libxen-ocaml.install.in | 14 +
15 files changed, 9990 insertions(+), 2 deletions(-)
create mode 100644 xen/debian/patches/tools-ocaml-fix-build.diff
create mode 100644 xen/debian/patches/tools-ocaml-fix-xc-dependencies.diff
create mode 100644 xen/debian/patches/tools-ocaml-fix-xc.diff
create mode 100644 xen/debian/patches/tools-ocaml-remove-log.diff
create mode 100644 xen/debian/patches/tools-ocaml-remove-uuid.diff
create mode 100644
xen/debian/patches/tools-ocaml-rename-ocamlfind-packages.diff
create mode 100644 xen/debian/templates/libxen-ocaml-dev.install.in
create mode 100644 xen/debian/templates/libxen-ocaml.install.in
--
1.7.5.4
Jon Ludlam
2011-Nov-15 15:04 UTC
[Pkg-xen-devel] [OCAML 2/7] Import patch 23937:5173834e8476 from xen-unstable.hg
--- xen/debian/patches/series | 1 + .../patches/tools-ocaml-fix-xc-dependencies.diff | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 0 deletions(-) create mode 100644 xen/debian/patches/tools-ocaml-fix-xc-dependencies.diff diff --git a/xen/debian/patches/series b/xen/debian/patches/series index aa998b3..b109c71 100644 --- a/xen/debian/patches/series +++ b/xen/debian/patches/series @@ -53,3 +53,4 @@ tools-python-shebang.diff tools-xenstore-compatibility.diff tools-ocaml-rename-ocamlfind-packages.diff +tools-ocaml-fix-xc-dependencies.diff diff --git a/xen/debian/patches/tools-ocaml-fix-xc-dependencies.diff b/xen/debian/patches/tools-ocaml-fix-xc-dependencies.diff new file mode 100644 index 0000000..f91dbaf --- /dev/null +++ b/xen/debian/patches/tools-ocaml-fix-xc-dependencies.diff @@ -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-15 15:04 UTC
[Pkg-xen-devel] [OCAML 3/7] Import patch 23938:fa04fbd56521 from xen-unstable.hg
---
xen/debian/patches/series | 1 +
xen/debian/patches/tools-ocaml-remove-uuid.diff | 321 +++++++++++++++++++++++
2 files changed, 322 insertions(+), 0 deletions(-)
create mode 100644 xen/debian/patches/tools-ocaml-remove-uuid.diff
diff --git a/xen/debian/patches/series b/xen/debian/patches/series
index b109c71..814637f 100644
--- a/xen/debian/patches/series
+++ b/xen/debian/patches/series
@@ -54,3 +54,4 @@ tools-xenstore-compatibility.diff
tools-ocaml-rename-ocamlfind-packages.diff
tools-ocaml-fix-xc-dependencies.diff
+tools-ocaml-remove-uuid.diff
diff --git a/xen/debian/patches/tools-ocaml-remove-uuid.diff
b/xen/debian/patches/tools-ocaml-remove-uuid.diff
new file mode 100644
index 0000000..72f0e64
--- /dev/null
+++ b/xen/debian/patches/tools-ocaml-remove-uuid.diff
@@ -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-15 15:04 UTC
[Pkg-xen-devel] [OCAML 5/7] Import patch 23940:187d59e32a58 from xen-unstable.hg
---
xen/debian/patches/series | 1 +
xen/debian/patches/tools-ocaml-fix-xc.diff | 45 ++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 0 deletions(-)
create mode 100644 xen/debian/patches/tools-ocaml-fix-xc.diff
diff --git a/xen/debian/patches/series b/xen/debian/patches/series
index a974926..8f816da 100644
--- a/xen/debian/patches/series
+++ b/xen/debian/patches/series
@@ -56,3 +56,4 @@ tools-ocaml-rename-ocamlfind-packages.diff
tools-ocaml-fix-xc-dependencies.diff
tools-ocaml-remove-uuid.diff
tools-ocaml-remove-log.diff
+tools-ocaml-fix-xc.diff
diff --git a/xen/debian/patches/tools-ocaml-fix-xc.diff
b/xen/debian/patches/tools-ocaml-fix-xc.diff
new file mode 100644
index 0000000..2c7521a
--- /dev/null
+++ b/xen/debian/patches/tools-ocaml-fix-xc.diff
@@ -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-15 15:04 UTC
[Pkg-xen-devel] [OCAML 6/7] Create 2 ocaml packages, libxen-ocaml-4.1 and libxen-ocaml-dev.
---
xen/debian/bin/gencontrol.py | 6 ++
xen/debian/patches/series | 1 +
xen/debian/patches/tools-ocaml-fix-build.diff | 60 ++++++++++++++++++++++
xen/debian/rules | 2 +-
xen/debian/rules.real | 34 ++++++++++++
xen/debian/templates/control.main.in | 18 +++++++
xen/debian/templates/control.source.in | 5 ++-
xen/debian/templates/libxen-ocaml-dev.install.in | 25 +++++++++
xen/debian/templates/libxen-ocaml.install.in | 14 +++++
9 files changed, 163 insertions(+), 2 deletions(-)
create mode 100644 xen/debian/patches/tools-ocaml-fix-build.diff
create mode 100644 xen/debian/templates/libxen-ocaml-dev.install.in
create mode 100644 xen/debian/templates/libxen-ocaml.install.in
diff --git a/xen/debian/bin/gencontrol.py b/xen/debian/bin/gencontrol.py
index f2b7424..cfa2563 100755
--- a/xen/debian/bin/gencontrol.py
+++ b/xen/debian/bin/gencontrol.py
@@ -49,6 +49,12 @@ class Gencontrol(Base):
j = self.substitute(self.templates["xen-utils.%s" % i],
vars)
file("debian/%s.%s" % (package_utils_name, i),
'w').write(j)
+ for (i,j) in (('libxen-ocaml.install','libxen-ocaml-%s' %
self.version.xen_version),
+ ('libxen-ocaml-dev.install','libxen-ocaml-dev')):
+ print "i=%s,j=%s" % (i,j)
+ k = self.substitute(self.templates[i], vars)
+ file("debian/%s.install" % j, 'w').write(k)
+
cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-arch
%s" % makeflags]
cmds_build = ["$(MAKE) -f debian/rules.real build-arch %s" %
makeflags]
cmds_setup = ["$(MAKE) -f debian/rules.real setup-arch %s" %
makeflags]
diff --git a/xen/debian/patches/series b/xen/debian/patches/series
index 8f816da..a576794 100644
--- a/xen/debian/patches/series
+++ b/xen/debian/patches/series
@@ -57,3 +57,4 @@ tools-ocaml-fix-xc-dependencies.diff
tools-ocaml-remove-uuid.diff
tools-ocaml-remove-log.diff
tools-ocaml-fix-xc.diff
+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..52fa7d5
--- /dev/null
+++ b/xen/debian/patches/tools-ocaml-fix-build.diff
@@ -0,0 +1,60 @@
+Fix the build of the ocaml libraries
+
+Signed-off-by: Jon Ludlam <jonathan.ludlam at eu.citrix.com>
+
+--- a/tools/ocaml/Makefile.rules
++++ b/tools/ocaml/Makefile.rules
+@@ -58,14 +58,8 @@
+
+ # 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)_COMPILETIME), -cclib $(lib)) $(foreach arg,$(LIBS_$(1)),-ldopt
$(arg))
+ endef
+
+ define OCAML_NOC_LIBRARY_template
+--- a/tools/ocaml/libs/xc/Makefile
++++ b/tools/ocaml/libs/xc/Makefile
+@@ -9,7 +9,8 @@
+ 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_COMPILETIME = -lxenguest-4.1 -lxenctrl-4.1
+
+ xenctrl_OBJS = $(OBJS)
+ xenctrl_C_OBJS = xenctrl_stubs
+--- a/tools/ocaml/xenstored/Makefile
++++ b/tools/ocaml/xenstored/Makefile
+@@ -36,7 +36,11 @@
+ -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
+
+--- a/tools/ocaml/libs/eventchn/Makefile
++++ b/tools/ocaml/libs/eventchn/Makefile
+@@ -7,6 +7,7 @@
+ LIBS = xeneventchn.cma xeneventchn.cmxa
+
+ LIBS_xeneventchn = $(LDLIBS_libxenctrl)
++LIBS_xeneventchn_COMPILETIME = -lxenctrl-4.1 -lxenguest-4.1
+
+ all: $(INTF) $(LIBS) $(PROGRAMS)
+
diff --git a/xen/debian/rules b/xen/debian/rules
index aade4fb..d075c0d 100755
--- a/xen/debian/rules
+++ b/xen/debian/rules
@@ -28,7 +28,7 @@ $(STAMPS_DIR)/build-base: $(STAMPS_DIR)/setup-base
@$(stamp)
maintainerclean:
- rm -f debian/control* debian/rules.gen debian/xen-hypervisor-*
debian/xen-utils-*
+ rm -f debian/control* debian/rules.gen debian/xen-hypervisor-*
debian/xen-utils-* debian/libxen-ocaml-*.install
rm -rf $(filter-out .svn debian, $(wildcard * .[^.]*))
clean: debian/control
diff --git a/xen/debian/rules.real b/xen/debian/rules.real
index f4656f8..6f2b9a7 100644
--- a/xen/debian/rules.real
+++ b/xen/debian/rules.real
@@ -1,7 +1,11 @@
+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)
+GENCONTROL_ARGS := -VF:OCamlABI="$(OCAML_ABI)"
+
export DH_OPTIONS
setup_env := env -u ARCH -u FLAVOUR -u VERSION -u MAKEFLAGS
@@ -18,6 +22,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 +77,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 +89,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 +152,32 @@ 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-4.1
+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)
+ 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)
+ 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..cf3705d 100644
--- a/xen/debian/templates/control.main.in
+++ b/xen/debian/templates/control.main.in
@@ -33,3 +33,21 @@ Replaces: xen-utils-common (<= 3.1.0-1)
Description: Xenstore utilities for Xen
This package contains the Xenstore utilities.
+Package: libxen-ocaml- at version@
+Architecture: any
+Section: libs
+Depends: ocaml-base-nox-${F:OCamlABI}, ${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
+Architecture: any
+Section: libdevel
+Depends: ocaml-nox-${F:OCamlABI}, libxen-ocaml- at version@ (=
${binary:Version}), ${shlibs:Depends}, ocaml-findlib (>= 1.1),
${misc:Depends}, ${ocaml:Depends}
+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,
diff --git a/xen/debian/templates/libxen-ocaml-dev.install.in
b/xen/debian/templates/libxen-ocaml-dev.install.in
new file mode 100644
index 0000000..c1ea55f
--- /dev/null
+++ b/xen/debian/templates/libxen-ocaml-dev.install.in
@@ -0,0 +1,25 @@
+/usr/lib/ocaml/xenlight/*.cmi
+/usr/lib/ocaml/xenbus/*.cmi
+/usr/lib/ocaml/xenctrl/*.cmi
+/usr/lib/ocaml/xenstore/*.cmi
+/usr/lib/ocaml/xeneventchn/*.cmi
+/usr/lib/ocaml/xenmmap/*.cmi
+/usr/lib/ocaml/xenlight/*.cmx
+/usr/lib/ocaml/xenbus/*.cmx
+/usr/lib/ocaml/xenctrl/*.cmx
+/usr/lib/ocaml/xenstore/*.cmx
+/usr/lib/ocaml/xeneventchn/*.cmx
+/usr/lib/ocaml/xenmmap/*.cmx
+/usr/lib/ocaml/xenlight/*.cmxa
+/usr/lib/ocaml/xenbus/*.cmxa
+/usr/lib/ocaml/xenctrl/*.cmxa
+/usr/lib/ocaml/xenstore/*.cmxa
+/usr/lib/ocaml/xeneventchn/*.cmxa
+/usr/lib/ocaml/xenmmap/*.cmxa
+/usr/lib/ocaml/xenlight/*.a
+/usr/lib/ocaml/xenbus/*.a
+/usr/lib/ocaml/xenctrl/*.a
+/usr/lib/ocaml/xenstore/*.a
+/usr/lib/ocaml/xeneventchn/*.a
+/usr/lib/ocaml/xenmmap/*.a
+
diff --git a/xen/debian/templates/libxen-ocaml.install.in
b/xen/debian/templates/libxen-ocaml.install.in
new file mode 100644
index 0000000..b8a4306
--- /dev/null
+++ b/xen/debian/templates/libxen-ocaml.install.in
@@ -0,0 +1,14 @@
+/usr/lib/ocaml/stublibs/dll*_stubs.so*
+/usr/lib/ocaml/xenlight/META
+/usr/lib/ocaml/xenlight/*.cma
+/usr/lib/ocaml/xenbus/META
+/usr/lib/ocaml/xenbus/*.cma
+/usr/lib/ocaml/xenctrl/META
+/usr/lib/ocaml/xenctrl/*.cma
+/usr/lib/ocaml/xenstore/META
+/usr/lib/ocaml/xenstore/*.cma
+/usr/lib/ocaml/xeneventchn/META
+/usr/lib/ocaml/xeneventchn/*.cma
+/usr/lib/ocaml/xenmmap/META
+/usr/lib/ocaml/xenmmap/*.cma
+
--
1.7.5.4
Jon Ludlam
2011-Nov-15 15:04 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
Jonathan Ludlam
2011-Nov-25 17:27 UTC
[Pkg-xen-devel] [PATCH 6/7] Create 2 ocaml packages, libxen-4.1-ocaml and libxen-4.1-ocaml-dev.
On 25 Nov 2011, at 17:14, Bastian Blank wrote:> On Fri, Nov 25, 2011 at 04:52:48PM +0000, Jonathan Ludlam wrote: >> On 25 Nov 2011, at 16:17, Bastian Blank wrote: >>> On Fri, Nov 18, 2011 at 04:28:35PM +0000, Jon Ludlam wrote: >>>> +Depends: ocaml-base-nox-${F:OCamlABI} >>> Why is this not generated? >> This is part of the ocaml task force policy: http://pkg-ocaml-maint.alioth.debian.org/ocaml_packaging_policy.html/x235.html > > Then dh_ocaml is supposed to generate it. >Ah, of course! OK, will fix. Jon> Bastian > > -- > Insufficient facts always invite danger. > -- Spock, "Space Seed", stardate 3141.9 > > _______________________________________________ > Pkg-xen-devel mailing list > Pkg-xen-devel at lists.alioth.debian.org > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-xen-devel