Added OCaml examples.

This commit is contained in:
Richard Jones
2009-04-08 23:06:51 +01:00
parent 13339826ea
commit bf26360e5e
8 changed files with 63 additions and 1 deletions

4
.gitignore vendored
View File

@@ -50,6 +50,10 @@ ocaml/*.cma
ocaml/*.cmxa
ocaml/*.a
ocaml/*.so
ocaml/examples/*.cmi
ocaml/examples/*.cmo
ocaml/examples/*.cmx
ocaml/examples/lvs
perl/Guestfs.c
perl/Guestfs.bs
perl/Makefile-pl

View File

@@ -120,7 +120,9 @@ AC_CONFIG_SUBDIRS([daemon])
dnl Produce output files.
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile fish/Makefile examples/Makefile
images/Makefile ocaml/Makefile perl/Makefile
images/Makefile
ocaml/Makefile ocaml/examples/Makefile
perl/Makefile
python/Makefile
make-initramfs.sh update-initramfs.sh
libguestfs.spec

View File

@@ -151,6 +151,12 @@ rm Makefile*
rm -rf .deps .libs
popd
# Same for ocaml/examples.
pushd ocaml/examples
make clean
rm Makefile*
popd
find $RPM_BUILD_ROOT -name perllocal.pod -delete
find $RPM_BUILD_ROOT -name .packlist -delete
@@ -200,6 +206,7 @@ rm -rf $RPM_BUILD_ROOT
%files ocaml-devel
%defattr(-,root,root,-)
%doc ocaml/examples
%{_libdir}/ocaml/guestfs/*.a
%{_libdir}/ocaml/guestfs/*.cmxa
%{_libdir}/ocaml/guestfs/*.cmx

View File

@@ -20,6 +20,8 @@ EXTRA_DIST = \
guestfs_c.c guestfs_c.h guestfs_c_actions.c \
.depend META.in
SUBDIRS = examples
if HAVE_OCAML
noinst_DATA = mlguestfs.cma mlguestfs.cmxa META

2
ocaml/examples/LICENSE Normal file
View File

@@ -0,0 +1,2 @@
All the examples in the ocaml/examples/ subdirectory may be freely
copied without any restrictions.

View File

@@ -0,0 +1,10 @@
EXTRA_DIST = LICENSE README lvs.ml
if HAVE_OCAML
lvs: lvs.ml
$(OCAMLFIND) ocamlopt -I .. mlguestfs.cmxa $< -o $@
CLEANFILES = *.cmi *.cmo *.cmx *.o *~ lvs
endif

9
ocaml/examples/README Normal file
View File

@@ -0,0 +1,9 @@
This directory contains various example programs which use the OCaml
Guestfs bindings to the libguestfs API.
As they are examples, these are licensed so they can be freely copied
and used without any restrictions.
Tips:
(1) To enable verbose messages, set environment variable LIBGUESTFS_DEBUG=1

26
ocaml/examples/lvs.ml Normal file
View File

@@ -0,0 +1,26 @@
(* An example using the OCaml bindings. *)
open Printf
let () =
if Array.length Sys.argv <= 1 || not (Sys.file_exists Sys.argv.(1)) then (
eprintf "Usage: lvs guest.img\n";
exit 1
);
let h = Guestfs.create () in
Guestfs.add_drive h Sys.argv.(1);
Guestfs.launch h;
Guestfs.wait_ready h;
let pvs = Guestfs.pvs h in
printf "PVs found: [ %s ]\n" (String.concat "; " (Array.to_list pvs));
let vgs = Guestfs.vgs h in
printf "VGs found: [ %s ]\n" (String.concat "; " (Array.to_list vgs));
let lvs = Guestfs.lvs h in
printf "LVs found: [ %s ]\n" (String.concat "; " (Array.to_list lvs));
(* Helps to find any allocation errors. *)
Gc.compact ()