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