[packages/ocaml-libvirt] - added virDomainCreateXML patch (backport from git, required for libguestfs) - release 4

qboosh qboosh at pld-linux.org
Mon Nov 2 18:19:45 CET 2015


commit 290ffc93a52bcea9cd89b4a7102252fc1d345f80
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Mon Nov 2 18:19:55 2015 +0100

    - added virDomainCreateXML patch (backport from git, required for libguestfs)
    - release 4

 ocaml-libvirt-virDomainCreateXML.patch | 213 +++++++++++++++++++++++++++++++++
 ocaml-libvirt.spec                     |   4 +-
 2 files changed, 216 insertions(+), 1 deletion(-)
---
diff --git a/ocaml-libvirt.spec b/ocaml-libvirt.spec
index 4b3c92c..d302b0e 100644
--- a/ocaml-libvirt.spec
+++ b/ocaml-libvirt.spec
@@ -11,11 +11,12 @@ Summary:	libvirt binding for OCaml
 Summary(pl.UTF-8):	Wiązania libvirt dla OCamla
 Name:		ocaml-libvirt
 Version:	0.6.1.4
-Release:	3
+Release:	4
 License:	LGPL v2+
 Group:		Libraries
 Source0:	ftp://libvirt.org/libvirt/ocaml/%{name}-%{version}.tar.gz
 # Source0-md5:	92723c155c009880475f3c9a093d1fe6
+Patch0:		%{name}-virDomainCreateXML.patch
 URL:		http://libvirt.org/ocaml/
 BuildRequires:	libvirt-devel >= 0.2.1
 BuildRequires:	ocaml >= 3.04-7
@@ -60,6 +61,7 @@ biblioteki.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
 %configure
diff --git a/ocaml-libvirt-virDomainCreateXML.patch b/ocaml-libvirt-virDomainCreateXML.patch
new file mode 100644
index 0000000..167f775
--- /dev/null
+++ b/ocaml-libvirt-virDomainCreateXML.patch
@@ -0,0 +1,213 @@
+From 7483c7454538584a3dbe4582096f058e6e877df6 Mon Sep 17 00:00:00 2001
+From: Richard W.M. Jones <rjones at redhat.com>
+Date: Fri, 6 Mar 2015 15:35:46 +0000
+Subject: [PATCH] Add a binding for virDomainCreateXML.
+
+This is more modern than the ancient virDomainCreateLinux API,
+and crucially allows you to pass flags such as AUTODESTROY.
+---
+ configure.ac         |    2 +-
+ libvirt/generator.pl |   23 +++++++++++++++++++++--
+ libvirt/libvirt.ml   |   19 ++++++++++++++++++-
+ libvirt/libvirt.mli  |   13 +++++++++++--
+ libvirt/libvirt_c.c  |   25 ++++++++++++++++++++++++-
+ 5 files changed, 75 insertions(+), 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b7544b4..a719fb3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,5 @@
+ # ocaml-libvirt
+-# Copyright (C) 2007-2008 Red Hat Inc., Richard W.M. Jones
++# Copyright (C) 2007-2015 Red Hat Inc., Richard W.M. Jones
+ #
+ # This library is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU Lesser General Public
+diff --git a/libvirt/generator.pl b/libvirt/generator.pl
+index 8229ad1..421592b 100755
+--- a/libvirt/generator.pl
++++ b/libvirt/generator.pl
+@@ -1,7 +1,7 @@
+ #!/usr/bin/perl -w
+ #
+ # OCaml bindings for libvirt.
+-# (C) Copyright 2007-2008 Richard W.M. Jones, Red Hat Inc.
++# (C) Copyright 2007-2015 Richard W.M. Jones, Red Hat Inc.
+ # http://libvirt.org/
+ #
+ # This library is free software; you can redistribute it and/or
+@@ -63,6 +63,7 @@ my @functions = (
+       sig => "conn, int : unit" },
+ 
+     { name => "virDomainCreateLinux", sig => "conn, string, 0U : dom" },
++    { name => "virDomainCreateXML", sig => "conn, string, unsigned : dom" },
+     { name => "virDomainFree", sig => "dom : free" },
+     { name => "virDomainDestroy", sig => "dom : free" },
+     { name => "virDomainLookupByName", sig => "conn, string : dom" },
+@@ -198,7 +199,7 @@ print F <<'END';
+  */
+ 
+ /* OCaml bindings for libvirt.
+- * (C) Copyright 2007-2008 Richard W.M. Jones, Red Hat Inc.
++ * (C) Copyright 2007-2015 Richard W.M. Jones, Red Hat Inc.
+  * http://libvirt.org/
+  *
+  * This library is free software; you can redistribute it and/or
+@@ -310,6 +311,8 @@ sub gen_arg_names
+ 	( "$1v", "strv" )
+     } elsif ($sig =~ /^(\w+), string, 0U? : (\w+)$/) {
+ 	( "$1v", "strv" )
++    } elsif ($sig =~ /^(\w+), string, unsigned : (\w+)$/) {
++	( "$1v", "strv", "uv" )
+     } elsif ($sig =~ /^(\w+), u?int : (\w+)$/) {
+ 	( "$1v", "iv" )
+     } elsif ($sig =~ /^(\w+), uuid : (\w+)$/) {
+@@ -632,6 +635,22 @@ sub gen_c_code
+ 
+   CAMLreturn (rv);
+ "
++    } elsif ($sig =~ /^(\w+), string, unsigned : (\w+)$/) {
++	my $c_ret_type = short_name_to_c_type ($2);
++	"\
++  CAMLlocal1 (rv);
++  " . gen_unpack_args ($1) . "
++  char *str = String_val (strv);
++  unsigned int u = Int_val (uv);
++  $c_ret_type r;
++
++  NONBLOCKING (r = $c_name ($1, str, u));
++  CHECK_ERROR (!r, conn, \"$c_name\");
++
++  " . gen_pack_result ($2) . "
++
++  CAMLreturn (rv);
++"
+     } elsif ($sig =~ /^(\w+), (u?)int : unit$/) {
+ 	my $unsigned = $2 eq "u" ? "unsigned " : "";
+ 	"\
+diff --git a/libvirt/libvirt.ml b/libvirt/libvirt.ml
+index 9c9368a..1be023d 100644
+--- a/libvirt/libvirt.ml
++++ b/libvirt/libvirt.ml
+@@ -1,5 +1,5 @@
+ (* OCaml bindings for libvirt.
+-   (C) Copyright 2007 Richard W.M. Jones, Red Hat Inc.
++   (C) Copyright 2007-2015 Richard W.M. Jones, Red Hat Inc.
+    http://libvirt.org/
+ 
+    This library is free software; you can redistribute it and/or
+@@ -337,6 +337,20 @@ struct
+     cpu : int;
+   }
+ 
++  type domain_create_flag =
++  | START_PAUSED
++  | START_AUTODESTROY
++  | START_BYPASS_CACHE
++  | START_FORCE_BOOT
++  | START_VALIDATE
++  let rec int_of_domain_create_flags = function
++    | [] -> 0
++    | START_PAUSED :: flags ->       1 lor int_of_domain_create_flags flags
++    | START_AUTODESTROY :: flags ->  2 lor int_of_domain_create_flags flags
++    | START_BYPASS_CACHE :: flags -> 4 lor int_of_domain_create_flags flags
++    | START_FORCE_BOOT :: flags ->   8 lor int_of_domain_create_flags flags
++    | START_VALIDATE :: flags ->    16 lor int_of_domain_create_flags flags
++
+   type sched_param = string * sched_param_value
+   and sched_param_value =
+     | SchedFieldInt32 of int32 | SchedFieldUInt32 of int32
+@@ -385,6 +399,9 @@ struct
+   let max_peek _ = 65536
+ 
+   external create_linux : [>`W] Connect.t -> xml -> rw t = "ocaml_libvirt_domain_create_linux"
++  external _create_xml : [>`W] Connect.t -> xml -> int -> rw t = "ocaml_libvirt_domain_create_xml"
++  let create_xml conn xml flags =
++    _create_xml conn xml (int_of_domain_create_flags flags)
+   external lookup_by_id : 'a Connect.t -> int -> 'a t = "ocaml_libvirt_domain_lookup_by_id"
+   external lookup_by_uuid : 'a Connect.t -> uuid -> 'a t = "ocaml_libvirt_domain_lookup_by_uuid"
+   external lookup_by_uuid_string : 'a Connect.t -> string -> 'a t = "ocaml_libvirt_domain_lookup_by_uuid_string"
+diff --git a/libvirt/libvirt.mli b/libvirt/libvirt.mli
+index 36cd113..8cfcae2 100644
+--- a/libvirt/libvirt.mli
++++ b/libvirt/libvirt.mli
+@@ -1,5 +1,5 @@
+ (** OCaml bindings for libvirt. *)
+-(* (C) Copyright 2007 Richard W.M. Jones, Red Hat Inc.
++(* (C) Copyright 2007-2015 Richard W.M. Jones, Red Hat Inc.
+    http://libvirt.org/
+ 
+    This library is free software; you can redistribute it and/or
+@@ -430,6 +430,13 @@ sig
+     cpu : int;				(** real CPU number, -1 if offline *)
+   }
+ 
++  type domain_create_flag =
++  | START_PAUSED                        (** Launch guest in paused state *)
++  | START_AUTODESTROY                   (** Automatically kill guest on close *)
++  | START_BYPASS_CACHE                  (** Avoid filesystem cache pollution *)
++  | START_FORCE_BOOT                    (** Discard any managed save *)
++  | START_VALIDATE                      (** Validate XML against schema *)
++
+   type sched_param = string * sched_param_value
+   and sched_param_value =
+     | SchedFieldInt32 of int32 | SchedFieldUInt32 of int32
+@@ -478,8 +485,10 @@ sig
+ 
+   val create_linux : [>`W] Connect.t -> xml -> rw t
+     (** Create a new guest domain (not necessarily a Linux one)
+-	from the given XML.
++	from the given XML.  Use {!create_xml} instead.
+     *)
++  val create_xml : [>`W] Connect.t -> xml -> domain_create_flag list -> rw t
++    (** Create a new guest domain from the given XML. *)
+   val lookup_by_id : 'a Connect.t -> int -> 'a t
+     (** Lookup a domain by ID. *)
+   val lookup_by_uuid : 'a Connect.t -> uuid -> 'a t
+diff --git a/libvirt/libvirt_c.c b/libvirt/libvirt_c.c
+index 71e6f61..6e56682 100644
+--- a/libvirt/libvirt_c.c
++++ b/libvirt/libvirt_c.c
+@@ -6,7 +6,7 @@
+  */
+ 
+ /* OCaml bindings for libvirt.
+- * (C) Copyright 2007-2008 Richard W.M. Jones, Red Hat Inc.
++ * (C) Copyright 2007-2015 Richard W.M. Jones, Red Hat Inc.
+  * http://libvirt.org/
+  *
+  * This library is free software; you can redistribute it and/or
+@@ -525,6 +525,29 @@ ocaml_libvirt_domain_create_linux (value connv, value strv)
+   CAMLreturn (rv);
+ }
+ 
++/* Automatically generated binding for virDomainCreateXML.
++ * In generator.pl this function has signature "conn, string, unsigned : dom".
++ */
++
++CAMLprim value
++ocaml_libvirt_domain_create_xml (value connv, value strv, value uv)
++{
++  CAMLparam3 (connv, strv, uv);
++
++  CAMLlocal1 (rv);
++  virConnectPtr conn = Connect_val (connv);
++  char *str = String_val (strv);
++  unsigned int u = Int_val (uv);
++  virDomainPtr r;
++
++  NONBLOCKING (r = virDomainCreateXML (conn, str, u));
++  CHECK_ERROR (!r, conn, "virDomainCreateXML");
++
++  rv = Val_domain (r, connv);
++
++  CAMLreturn (rv);
++}
++
+ /* Automatically generated binding for virDomainFree.
+  * In generator.pl this function has signature "dom : free".
+  */
+-- 
+1.7.2.5
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/ocaml-libvirt.git/commitdiff/290ffc93a52bcea9cd89b4a7102252fc1d345f80



More information about the pld-cvs-commit mailing list