2 ----------------------------------------------------------------------
4 Copyright (C) 2007-2008 Richard W.M. Jones, Red Hat Inc.
5 http://libvirt.org/ocaml/
8 This is a complete set of OCaml bindings around libvirt, exposing all
9 known functionality to OCaml programs.
13 ----------------------------------------------------------------------
15 PLEASE NOTE: The list of requirements looks long but you DO NOT NEED
16 all of these packages, so pay careful attention to what is required
17 ('R') and what is optional ('O').
19 ALSO NOTE: Binaries are available for many platforms. You only need
20 the packages below if you want to build from source.
22 W h a t y o u w a n t t o b u i l d
24 |Bindings, |Docs, |virt-top |virt-ctrl |Windows
25 |examples, |manpages | | |version
27 --------------+----------+---------+---------+----------+---------
28 GNU make | R | R | R | R | R
32 libvirt | R | | R | R | R
35 ocaml | R | | R | R | R
38 findlib | HR | R | HR | HR | Note [1]
40 ocaml-gettext | R | R | R | R | Note [2]
42 MinGW + MSYS | | | | | R
43 --------------+----------+---------+---------+----------+---------
44 ocamldoc | | R | | | O
47 --------------+----------+---------+---------+----------+---------
48 ocaml-curses | | | R | |
54 ocaml-calendar| | | O | |
57 --------------+----------+---------+---------+----------+---------
60 lablgtk2 | | | | R | O
62 ocaml-dbus | | | | O |
64 gnome-icon-theme | | | O |
65 --------------+----------+---------+---------+----------+---------
67 --------------+----------+---------+---------+----------+---------
70 HR = highly recommended (use if possible)
71 O = optional (just improves functionality, but not required)
74 Note [1]: Findlib was recently ported to Windows and in future we may
75 require it because it will let us remove a lot of hacks from the
78 Note [2]: It's not clear if ocaml-gettext works on Windows.
80 Where to get the packages:
82 libvirt >= 0.2.1 from http://libvirt.org/ (get the latest version available)
83 or packaged in Debian, Ubuntu and Fedora
85 ocaml >= 3.08 from http://caml.inria.fr/
86 or packaged in Debian, Ubuntu and Fedora
88 findlib from http://www.ocaml-programming.de/packages/
89 or packaged in Debian, Ubuntu and Fedora as 'ocaml-findlib'
91 ocaml-gettext from http://www.le-gall.net/sylvain+violaine/ocaml-gettext.html
92 + patch for OCaml 3.10:
93 http://www.annexia.org/tmp/ocaml-gettext-0.2.0-20080321.patch
94 (This should appear in ocaml-gettext 0.3.0 shortly).
96 MinGW + MSYS from http://www.mingw.org/ (only needed for Windows)
98 ocamldoc part of OCaml itself
99 or part of the ocaml package in Debian, Ubuntu
100 or packaged in Fedora as 'ocaml-ocamldoc'
103 or packaged in Debian, Ubuntu and Fedora
105 ocaml-curses from http://www.nongnu.org/ocaml-tmk/
106 or packaged in Debian, Ubuntu as 'libcurses-ocaml-dev'
107 or packaged in Fedora as 'ocaml-curses-devel'
109 Extlib from http://ocaml-lib.sourceforge.net/
110 or packaged in Debian, Unbuntu as 'libextlib-ocaml-dev'
111 or packaged in Fedora as 'ocaml-extlib-devel'
113 xml-light from http://tech.motion-twin.com/doc/xml-light/
114 or packaged in Debian, Ubuntu as 'libxml-light-ocaml-dev'
115 or packaged in Fedora as 'ocaml-xml-light-devel'
117 ocaml CSV from http://merjis.com/developers/csv
118 or packaged in Debian, Ubuntu as 'libcsv-ocaml-dev'
119 or packaged in Fedora as 'ocaml-csv-devel'
121 ocaml-calendar from http://www.lri.fr/~signoles/prog.en.html
122 or packaged in Debian, Ubuntu as 'libcalendar-ocaml-dev'
123 or packaged in Fedora as 'ocaml-calendar-devel'
125 GTK2 from http://gtk.org/
126 or packaged in Debian, Ubuntu and Fedora
129 from http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html
130 or packaged in Debian, Ubuntu as 'liblablgtk2-ocaml-dev'
131 or packaged in Fedora 9 as 'ocaml-lablgtk-devel'
133 gnome-icon-theme part of GNOME
136 from http://tab.snarc.org/projects/ocaml_dbus/
137 or packaged in Fedora 9 as 'ocaml-dbus-devel'
138 (not yet available for Debian or Ubuntu AFAIK)
140 NSIS from http://nsis.sf.net
144 ----------------------------------------------------------------------
146 ./configure # Checks that you have all the required bits.
148 make all # Builds the bytecode version of libs/programs.
149 make opt # Builds the native code version of libs/programs.
151 make install # Install in OCaml directory, and the binaries
154 make doc # Build HTML documentation in html/ subdirectory.
156 Then have a look at the programs 'mlvirsh.opt', 'virt-top.opt'
159 Note: If you want to run the programs without first installing, you
160 may need to set your $LD_LIBRARY_PATH environment variable so it
161 contains the build directory. eg:
163 LD_LIBRARY_PATH=libvirt/ mlvirsh/mlvirsh.opt
167 ----------------------------------------------------------------------
169 I have built libvirt (the bindings), examples, mlvirsh and virt-ctrl
170 on Windows using the MinGW port of OCaml. It's quite likely that it
171 will also work under VC++, but I have not tested this.
173 You should make sure that your $PATH (environment variable) contains
174 the names of the directories containing all required DLLs, in
175 particular you will require:
177 libvirt-*.dll (from libvirt)
178 libgnutls-*.dll (from GnuTLS)
182 libxdr.dll (from libxdr)
183 libxml2-*.dll (from libxml2)
184 and, a multitude of DLLs from GTK if you want to run virt-ctrl
186 You can use a tool such as Dependency Walker to find/check the
187 locations of dependent libraries.
189 To build the Windows installer, you will need NSIS. Then do:
191 ./configure --with-nsis=/c/Progra~1/NSIS
195 This should build a Windows binary installer called
196 ocaml-libvirt-$VERSION.exe which includes the bindings, all required
197 DLLs and all programs that can be built under Windows.
201 ----------------------------------------------------------------------
203 'mlvirsh' is an almost complete reimplementation of virsh, which is
204 mostly command compatible (there are a very few commands missing, and
205 some commands have a slightly different syntax, but broadly speaking
206 they are equivalent programs except that one is written in C and the
209 At the time of writing:
220 ----------------------------------------------------------------------
222 'virt-ctrl' (originally called 'mlvirtmanager') is a reimplementation
223 of virt-manager in OCaml. It is not feature-complete by any means,
224 but does allow you to show the running domains and start and stop
225 defined domains. The main functionality _missing_ is the ability to
226 define new virtual machines, change the resources allocated to
227 domains, or show the machine console.
231 ----------------------------------------------------------------------
233 For documentation on these bindings, read libvirt.mli and/or 'make
234 doc' and browse the HTML documentation in the html/ subdirectory.
236 For documentation on libvirt itself, see http://libvirt.org/html/
240 ----------------------------------------------------------------------
242 libvirt/ The OCaml bindings.
243 examples/ Some example programs using the bindings.
244 mlvirsh/ 'mlvirsh' command line tool.
245 virt-ctrl/ 'virt-ctrl' graphical tool.
246 virt-top/ 'virt-top' tool.
247 virt-df/ 'virt-df' tool.