ocaml-libvirt
----------------------------------------------------------------------
-Copyright (C) 2007 Richard W.M. Jones, Red Hat Inc.
+Copyright (C) 2007-2008 Richard W.M. Jones, Red Hat Inc.
http://libvirt.org/ocaml/
http://libvirt.org/
Requirements
----------------------------------------------------------------------
-To build the bindings and mlvirsh (required):
+To build the bindings, examples, and mlvirsh (required):
GNU make, gcc
libvirt >= 0.2.1 (from http://libvirt.org/,
get the latest version if you can)
ocaml >= 3.08 (from http://caml.inria.fr/)
+
+Optional, but highly recommended:
+
findlib (from http://www.ocaml-programming.de/packages/)
- Extlib (from http://ocaml-lib.sourceforge.net/)
To build the OCaml interface documentation (optional):
To build virt-top (optional):
ocaml-curses (from http://www.nongnu.org/ocaml-tmk/)
+ Extlib (from http://ocaml-lib.sourceforge.net/)
xml-light (from http://tech.motion-twin.com/doc/xml-light/)
ocaml CSV library (from http://merjis.com/developers/csv)
ocaml-calendar (http://www.lri.fr/~signoles/prog.en.html)
- [Only ocaml-curses is required for building virt-top. The other
- packages are not required, but you will get reduced functionality].
+ [Only ocaml-curses and Extlib are required for building virt-top.
+ The other packages are not required, but you will get reduced
+ functionality].
-To build mlvirtmanager (optional):
+To build virt-ctrl (optional):
GTK2 (from http://gtk.org/)
lablgtk2 (from http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html)
perldoc (part of Perl)
+To build a Windows installer (optional):
+
+ NSIS (http://nsis.sf.net)
+
OCaml packages are available for Fedora 7 and above (ocaml,
ocaml-findlib, ocaml-findlib-devel, ocaml-ocamldoc, ocaml-extlib,
ocaml-extlib-devel, ocaml-lablgtk, ocaml-lablgtk-devel, ocaml-curses,
make doc # Build HTML documentation in html/ subdirectory.
-Then have a look at the programs 'mlvirsh.opt' and 'mlvirtmanager.opt'.
+Then have a look at the programs 'mlvirsh.opt' and 'virt-ctrl.opt'.
Note: If you want to run the programs without first installing, you
may need to set your $LD_LIBRARY_PATH environment variable so it
LD_LIBRARY_PATH=libvirt/ mlvirsh/mlvirsh.opt
+Windows
+----------------------------------------------------------------------
+
+I have built libvirt (the bindings), examples, mlvirsh and virt-ctrl
+on Windows using the MinGW port of OCaml. It's quite likely that it
+will also work under VC++, but I have not tested this.
+
+You should make sure that your $PATH (environment variable) contains
+the names of the directories containing all required DLLs, in
+particular you will require:
+
+ libvirt-*.dll (from libvirt)
+ libgnutls-*.dll (from GnuTLS)
+ libgcrypt-*.dll
+ libgpg-error-*.dll
+ libtasn1-*.dll
+ libxdr.dll (from libxdr)
+ libxml2-*.dll (from libxml2)
+ and, a multitude of DLLs from GTK if you want to run virt-ctrl
+
+You can use a tool such as Dependency Walker to find/check the
+locations of dependent libraries.
+
+To build the Windows installer, you will need NSIS. Then do:
+
+ ./configure --with-nsis=/c/Progra~1/NSIS
+ make all opt
+ make wininstaller
+
+This should build a Windows binary installer called
+ocaml-libvirt-$VERSION.exe which includes the bindings, all required
+DLLs and all programs that can be built under Windows.
+
+
mlvirsh
----------------------------------------------------------------------
% size 15% 13%
-mlvirtmanager
+virt-ctrl
----------------------------------------------------------------------
-'mlvirtmanager' is a demonstration implementation of virt-manager in
-OCaml. It is not feature-complete by any means, but does allow you to
-show the running domains and start and stop defined domains. The main
-functionality _missing_ is the ability to define new virtual machines,
-change the resources allocated to domains, or show the machine
-console.
+'virt-ctrl' (originally called 'mlvirtmanager') is a reimplementation
+of virt-manager in OCaml. It is not feature-complete by any means,
+but does allow you to show the running domains and start and stop
+defined domains. The main functionality _missing_ is the ability to
+define new virtual machines, change the resources allocated to
+domains, or show the machine console.
Programming
----------------------------------------------------------------------
-The interface is described in 'libvirt.mli'. The main modules are
-Libvirt.Connect, Libvirt.Domain and Libvirt.Network, corresponding
-respectively to the virConnect*, virDomain*, and virNetwork*
-functions. For brevity I usually rename these modules like this:
-
- module C = Libvirt.Connect
- module D = Libvirt.Domain
- module N = Libvirt.Network
-
-To get a connection handle, do:
-
- let name = "xen:///"
- let conn = C.connect ~name ()
-
-To list domains, do:
-
- let n = C.num_of_domains conn
- let ids = C.list_domains conn n
- let domains = Array.map (D.lookup_by_id conn) ids
- let () =
- Array.iter (
- fun dom ->
- printf "%5d %s\n" (D.get_id dom) (D.get_name dom)
- ) domains
-
-(See also the program list_domains.ml).
-
For documentation on these bindings, read libvirt.mli and/or 'make
doc' and browse the HTML documentation in the html/ subdirectory.
libvirt/ The OCaml bindings.
examples/ Some example programs using the bindings.
mlvirsh/ 'mlvirsh' command line tool.
-mlvirtmanager/ 'mlvirtmanager' graphical tool.
+virt-ctrl/ 'virt-ctrl' graphical tool.
virt-top/ 'virt-top' tool.
+virt-df/ 'virt-df' tool.