On Tue, Apr 14, 2020 at 12:22:49PM +0200, Pino Toscano wrote: > Introduce the dune build system to build ocaml-libvirt, providing > everything that the current autoconf-based build system has. > > Add also an opam configuration files, as it is mandatory with dune. > > Signed-off-by: Pino Toscano <ptoscano@xxxxxxxxxx> ACK You might want to drop -safe-string since it's been the default for a while (since OCaml 4.06 / Nov 2017). Rich. > .gitignore | 3 +++ > dune | 18 +++++++++++++ > dune-project | 1 + > dune.inc | 22 ++++++++++++++++ > examples/dune | 50 ++++++++++++++++++++++++++++++++++++ > libvirt/discover.ml | 40 +++++++++++++++++++++++++++++ > libvirt/dune | 57 ++++++++++++++++++++++++++++++++++++++++++ > libvirt/dune-project | 2 ++ > libvirt/mllibvirt.opam | 33 ++++++++++++++++++++++++ > 9 files changed, 226 insertions(+) > create mode 100644 dune > create mode 100644 dune-project > create mode 100644 dune.inc > create mode 100644 examples/dune > create mode 100644 libvirt/discover.ml > create mode 100644 libvirt/dune > create mode 100644 libvirt/dune-project > create mode 100644 libvirt/mllibvirt.opam > > diff --git a/.gitignore b/.gitignore > index c52c1b8..814457b 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -10,10 +10,12 @@ > *.opt > *.so > *~ > +.merlin > Make.rules > Makefile > core > core.* > +/_build/ > /META > /aclocal.m4 > /autom4te.cache > @@ -30,5 +32,6 @@ core.* > /html/ > /libvirt/libvirt_generated.c > /libvirt/libvirt_version.ml > +/libvirt/mllibvirt.install > /ocaml-libvirt-*.exe > /ocaml-libvirt-*.tar.gz > diff --git a/dune b/dune > new file mode 100644 > index 0000000..5002345 > --- /dev/null > +++ b/dune > @@ -0,0 +1,18 @@ > +; OCaml bindings for libvirt. > +; (C) Copyright 2020 Pino Toscano, Red Hat Inc. > +; > +; This library is free software; you can redistribute it and/or > +; modify it under the terms of the GNU Lesser General Public > +; License as published by the Free Software Foundation; either > +; version 2 of the License, or (at your option) any later version. > +; > +; This library is distributed in the hope that it will be useful, > +; but WITHOUT ANY WARRANTY; without even the implied warranty of > +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +; Lesser General Public License for more details. > +; > +; You should have received a copy of the GNU Lesser General Public > +; License along with this library; if not, write to the Free Software > +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + > +(include dune.inc) > diff --git a/dune-project b/dune-project > new file mode 100644 > index 0000000..de4fc20 > --- /dev/null > +++ b/dune-project > @@ -0,0 +1 @@ > +(lang dune 1.0) > diff --git a/dune.inc b/dune.inc > new file mode 100644 > index 0000000..2cfb767 > --- /dev/null > +++ b/dune.inc > @@ -0,0 +1,22 @@ > +; OCaml bindings for libvirt. > +; (C) Copyright 2020 Pino Toscano, Red Hat Inc. > +; > +; This library is free software; you can redistribute it and/or > +; modify it under the terms of the GNU Lesser General Public > +; License as published by the Free Software Foundation; either > +; version 2 of the License, or (at your option) any later version. > +; > +; This library is distributed in the hope that it will be useful, > +; but WITHOUT ANY WARRANTY; without even the implied warranty of > +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +; Lesser General Public License for more details. > +; > +; You should have received a copy of the GNU Lesser General Public > +; License along with this library; if not, write to the Free Software > +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + > +(env > + (dev > + (flags (:standard -g -warn-error CDEFLMPSUVYZX-3 -w -9-27-34-37-50 -safe-string))) > + (release > + (flags (:standard -g -warn-error CDEFLMPSUVYZX-3 -w -9-27-34-37-50 -safe-string)))) > diff --git a/examples/dune b/examples/dune > new file mode 100644 > index 0000000..219727c > --- /dev/null > +++ b/examples/dune > @@ -0,0 +1,50 @@ > +; OCaml bindings for libvirt. > +; (C) Copyright 2020 Pino Toscano, Red Hat Inc. > +; > +; This library is free software; you can redistribute it and/or > +; modify it under the terms of the GNU Lesser General Public > +; License as published by the Free Software Foundation; either > +; version 2 of the License, or (at your option) any later version. > +; > +; This library is distributed in the hope that it will be useful, > +; but WITHOUT ANY WARRANTY; without even the implied warranty of > +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +; Lesser General Public License for more details. > +; > +; You should have received a copy of the GNU Lesser General Public > +; License along with this library; if not, write to the Free Software > +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + > +(executable > + (name domain_events) > + (modules Domain_events) > + (libraries mllibvirt)) > + > +(executable > + (name get_all_domain_stats) > + (modules Get_all_domain_stats) > + (libraries mllibvirt unix)) > + > +(executable > + (name get_cpu_stats) > + (modules Get_cpu_stats) > + (libraries mllibvirt)) > + > +(executable > + (name list_domains) > + (modules List_domains) > + (libraries mllibvirt)) > + > +(executable > + (name list_secrets) > + (modules List_secrets) > + (libraries mllibvirt)) > + > +(executable > + (name node_info) > + (modules Node_info) > + (libraries mllibvirt)) > + > +(alias > + (name examples) > + (deps domain_events.exe get_all_domain_stats.exe get_cpu_stats.exe list_domains.exe list_secrets.exe node_info.exe)) > diff --git a/libvirt/discover.ml b/libvirt/discover.ml > new file mode 100644 > index 0000000..a49ae7a > --- /dev/null > +++ b/libvirt/discover.ml > @@ -0,0 +1,40 @@ > +(* OCaml bindings for libvirt. > + (C) Copyright 2020 Pino Toscano, Red Hat Inc. > + https://libvirt.org/ > + > + This library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2 of the License, or (at your option) any later version. > + > + This library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with this library; if not, write to the Free Software > + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > +*) > + > +module C = Configurator.V1 > + > +let discover c = > + let package = "libvirt" in > + let minversion = "1.2.8" in > + let expr = package ^ " >= " ^ minversion in > + let pkgconfig = > + match C.Pkg_config.get c with > + | None -> C.die "pkg-config not available" > + | Some pc -> pc in > + let conf = > + match C.Pkg_config.query_expr pkgconfig ~package ~expr with > + | None -> C.die "%s not found" package > + | Some deps -> deps in > + C.Flags.write_sexp "c_flags.sexp" conf.cflags; > + C.Flags.write_sexp "c_library_flags.sexp" conf.libs; > + if C.which c "perl" = None then > + C.die "perl not found" > + > +let () = > + C.main ~name:"discover" discover > diff --git a/libvirt/dune b/libvirt/dune > new file mode 100644 > index 0000000..7e31a8e > --- /dev/null > +++ b/libvirt/dune > @@ -0,0 +1,57 @@ > +; OCaml bindings for libvirt. > +; (C) Copyright 2020 Pino Toscano, Red Hat Inc. > +; > +; This library is free software; you can redistribute it and/or > +; modify it under the terms of the GNU Lesser General Public > +; License as published by the Free Software Foundation; either > +; version 2 of the License, or (at your option) any later version. > +; > +; This library is distributed in the hope that it will be useful, > +; but WITHOUT ANY WARRANTY; without even the implied warranty of > +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +; Lesser General Public License for more details. > +; > +; You should have received a copy of the GNU Lesser General Public > +; License along with this library; if not, write to the Free Software > +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + > +(include ../dune.inc) > + > +(library > + (name mllibvirt) > + (synopsis "libvirt bindings for OCaml") > + (public_name mllibvirt) > + (modules Libvirt Libvirt_version) > + (wrapped false) > + (c_names libvirt_c_common libvirt_generated libvirt_c_oneoffs) > + (c_flags (:include c_flags.sexp) -DCAML_NAME_SPACE -fPIC -Wall -g) > + (c_library_flags (:include c_library_flags.sexp))) > + > +(executable > + (name discover) > + (modules Discover) > + (libraries dune.configurator)) > + > +(rule > + (targets c_flags.sexp c_library_flags.sexp) > + (deps (:discover discover.exe)) > + (action (run %{discover}))) > + > +(rule > + (targets libvirt_generated.c) > + (deps (:generator generator.pl)) > + (action (run %{generator}))) > + > +(rule > + (targets libvirt_version.ml) > + (deps (:version_in libvirt_version.ml.in)) > + (action (with-stdout-to %{targets} > + (run sed "s/@PACKAGE_NAME@/ocaml-libvirt/;s/@PACKAGE_VERSION@/%{version:mllibvirt}/;" %{version_in})))) > + > +(alias > + (name htmldoc) > + (deps (universe)) ; let it run everytime > + (action (progn > + (run rm -rf html) > + (run mkdir html) > + (run ocamldoc -html -sort -colorize-code -d html %{dep:libvirt.mli} %{dep:libvirt_version.mli})))) > diff --git a/libvirt/dune-project b/libvirt/dune-project > new file mode 100644 > index 0000000..5ede662 > --- /dev/null > +++ b/libvirt/dune-project > @@ -0,0 +1,2 @@ > +(lang dune 1.0) > +(version 0.6.1.5) > diff --git a/libvirt/mllibvirt.opam b/libvirt/mllibvirt.opam > new file mode 100644 > index 0000000..23eee04 > --- /dev/null > +++ b/libvirt/mllibvirt.opam > @@ -0,0 +1,33 @@ > +opam-version: "2.0" > +name: "mllibvirt" > +authors: "Richard W.M. Jones <rjones@xxxxxxxxxx>" > +maintainer: "Richard W.M. Jones <rjones@xxxxxxxxxx>" > +homepage: "https://libvirt.org/ocaml/" > +dev-repo: "https://gitlab.com/libvirt/libvirt-ocaml.git" > +bug-reports: "https://libvirt.org/bugs.html" > +synopsis: "Libvirt bindings for OCaml" > +description: """libvirt bindings for OCaml > + > +Libvirt is a C toolkit to interact with the virtualization capabilities > +of recent versions of Linux (and other OSes).""" > +license: "LGPL-2+" > +tags: [ > + "libvirt" > +] > +build: [ > + ["dune" "build"] > +] > +depends: [ > + "conf-pkg-config" {build} > + "ocamlfind" {build} > +] > +depexts: [ > + ["libvirt-dev"] {os-family = "debian"} > + ["libvirt-devel"] {os-family = "rhel"} > + ["libvirt-devel"] {os-family = "suse"} > + ["libvirt-devel"] {os-distribution = "mageia"} > + ["libvirt"] {os = "macos" & os-distribution = "homebrew"} > + ["libvirt-dev"] {os-distribution = "alpine"} > + ["libvirt"] {os-distribution = "nixos"} > + ["libvirt"] {os-distribution = "arch"} > +] > -- > 2.25.2 -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html