1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
ocaml-libvirt
----------------------------------------------------------------------
Copyright (C) 2007 Richard W.M. Jones, Red Hat Inc.
http://libvirt.org/ocaml/
http://libvirt.org/
This is a complete set of OCaml bindings around libvirt, exposing all
known functionality to OCaml programs.
Requirements
----------------------------------------------------------------------
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/)
To build the OCaml interface documentation (optional):
ocamldoc (part of OCaml itself)
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 and Extlib are required for building virt-top.
The other packages are not required, but you will get reduced
functionality].
To build virt-ctrl (optional):
GTK2 (from http://gtk.org/)
lablgtk2 (from http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html)
To build the manpages (optional):
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,
ocaml-xml-light, ocaml-csv).
http://www.annexia.org/tmp/ocaml/
http://fedoraproject.org/wiki/SIGs/OCaml
Debian/Ubuntu have all the packages you require.
Building
----------------------------------------------------------------------
./configure # Checks that you have all the required bits.
make all # Builds the bytecode version of libs/programs.
make opt # Builds the native code version of libs/programs.
make install # Install in OCaml directory, and the binaries
# in $prefix/bin.
make doc # Build HTML documentation in html/ subdirectory.
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
contains the build directory. eg:
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
----------------------------------------------------------------------
'mlvirsh' is an almost complete reimplementation of virsh, which is
mostly command compatible (there are a very few commands missing, and
some commands have a slightly different syntax, but broadly speaking
they are equivalent programs except that one is written in C and the
other in OCaml).
At the time of writing:
wc -c wc -l
virsh 126,056 4,641
mlvirsh 19,427 598
% size 15% 13%
virt-ctrl
----------------------------------------------------------------------
'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
----------------------------------------------------------------------
For documentation on these bindings, read libvirt.mli and/or 'make
doc' and browse the HTML documentation in the html/ subdirectory.
For documentation on libvirt itself, see http://libvirt.org/html/
Subdirectories
----------------------------------------------------------------------
libvirt/ The OCaml bindings.
examples/ Some example programs using the bindings.
mlvirsh/ 'mlvirsh' command line tool.
virt-ctrl/ 'virt-ctrl' graphical tool.
virt-top/ 'virt-top' tool.
virt-df/ 'virt-df' tool.
|