Message ID | 0f2c08734668626a618767680493a006827e123b.1659116941.git.edvin.torok@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tools/ocaml code and build cleanups | expand |
On 29 Jul 2022, at 18:53, Edwin Török <edvin.torok@citrix.com<mailto:edvin.torok@citrix.com>> wrote: Based on Christian Lindig's work. Initially this will be used to build unit tests, and to make development easier. Dune supports proper incremental builds and editor integration with merlin/LSP. For now the Makefile based build system is retained too: this is not a hard dependency on Dune. Using version 2.1 of Dune build language here, because that is the one available in Ubuntu Focal (part of the CI here). No functional change. Signed-off-by: Edwin Török <edvin.torok@citrix.com<mailto:edvin.torok@citrix.com>> --- tools/.gitignore | 7 +++++ tools/dune | 5 ++++ tools/dune-project | 1 + tools/ocaml/dune-project | 27 ++++++++++++++++++ tools/ocaml/libs/eventchn/dune | 11 ++++++++ tools/ocaml/libs/mmap/dune | 9 ++++++ tools/ocaml/libs/xb/dune | 10 +++++++ tools/ocaml/libs/xc/dune | 16 +++++++++++ tools/ocaml/libs/xs/dune | 15 ++++++++++ tools/ocaml/xenstored/dune | 51 ++++++++++++++++++++++++++++++++++ 10 files changed, 152 insertions(+) create mode 100644 tools/.gitignore create mode 100644 tools/dune create mode 100644 tools/dune-project create mode 100644 tools/ocaml/dune-project create mode 100644 tools/ocaml/libs/eventchn/dune create mode 100644 tools/ocaml/libs/mmap/dune create mode 100644 tools/ocaml/libs/xb/dune create mode 100644 tools/ocaml/libs/xc/dune create mode 100644 tools/ocaml/libs/xs/dune create mode 100644 tools/ocaml/xenstored/dune Acked-by: Christian Lindig <christian.lindig@citrix.com<mailto:christian.lindig@citrix.com>>
On Fri, Jul 29, 2022 at 06:53:26PM +0100, Edwin Török wrote: > Based on Christian Lindig's work. Should we have is "Signed-off-by" tag then? Also he might be the author of the patch, isn't it? > Initially this will be used to build unit tests, and to make development > easier. > > Dune supports proper incremental builds and editor integration with > merlin/LSP. > > For now the Makefile based build system is retained too: this is not a > hard dependency on Dune. > > Using version 2.1 of Dune build language here, because that is the one > available in Ubuntu Focal (part of the CI here). > > No functional change. > > Signed-off-by: Edwin Török <edvin.torok@citrix.com> > --- > create mode 100644 tools/dune > create mode 100644 tools/dune-project Should this two new "dune*" files be added to MAINTAINERS in the OCAML section? > diff --git a/tools/.gitignore b/tools/.gitignore > new file mode 100644 > index 0000000000..c211749a3b > --- /dev/null > +++ b/tools/.gitignore > @@ -0,0 +1,7 @@ > +dune-workspace* Is this file going to be in many subdirectory or just in tools/ ? You can prepend a slash to tell git to ignore this file only in this directory. > +_build/ Is this where dune is going to do out-of-tree build by default? Also, is this only going to be in tools/_build/ ? > +.merlin > +*.h.gch > +*.opam > +ocaml/*.install > +include/_xentoolcore_list.h That last line doesn't seems related to dune, why is it in this patch? Also, can you sort the lines in this .gitignore? Thanks,
On 3 Aug 2022, at 12:25, Anthony PERARD <anthony.perard@citrix.com<mailto:anthony.perard@citrix.com>> wrote: On Fri, Jul 29, 2022 at 06:53:26PM +0100, Edwin Török wrote: Based on Christian Lindig's work. Should we have is "Signed-off-by" tag then? Also he might be the author of the patch, isn't it? This only refers to my initial experiments to set up dune for building OCaml xenstore that I had shared with Edvin. If at all, there are only traces of this left and so I see no need to acknowledge this is some formal way. — C
diff --git a/tools/.gitignore b/tools/.gitignore new file mode 100644 index 0000000000..c211749a3b --- /dev/null +++ b/tools/.gitignore @@ -0,0 +1,7 @@ +dune-workspace* +_build/ +.merlin +*.h.gch +*.opam +ocaml/*.install +include/_xentoolcore_list.h diff --git a/tools/dune b/tools/dune new file mode 100644 index 0000000000..febbd078f0 --- /dev/null +++ b/tools/dune @@ -0,0 +1,5 @@ +; only look inside ocaml and include subdirectory, speeds up the build +; since dune doesn't need to copy/hash/monitor all the other files +(dirs ocaml) + +(data_only_dirs include libs) diff --git a/tools/dune-project b/tools/dune-project new file mode 100644 index 0000000000..cd8d4e3d86 --- /dev/null +++ b/tools/dune-project @@ -0,0 +1 @@ +(lang dune 2.1) diff --git a/tools/ocaml/dune-project b/tools/ocaml/dune-project new file mode 100644 index 0000000000..1dae7b0acb --- /dev/null +++ b/tools/ocaml/dune-project @@ -0,0 +1,27 @@ +(lang dune 2.1) + +(name xen) + +(formatting (enabled_for dune)) +(generate_opam_files true) + +(maintainers christian.lindig@citrix.com) +(license LGPL) + +(package + (name xen) + (synopsis "Xen interfaces") + (depends + base-unix + (dune (>= 2.1)) + ) +) + +(package + (name xenstored) + (synopsis "In-memory key-value store for the Xen hypervisor") + (depends + base-unix + (dune (>= 2.1)) + ) +) diff --git a/tools/ocaml/libs/eventchn/dune b/tools/ocaml/libs/eventchn/dune new file mode 100644 index 0000000000..4468f2e769 --- /dev/null +++ b/tools/ocaml/libs/eventchn/dune @@ -0,0 +1,11 @@ +(library + (foreign_stubs + (language c) + (names xeneventchn_stubs) + (extra_deps ../../../include/xen/xen.h ../../../libs/evtchn/libxenevtchn.so) + (include_dirs ../../../include)) + (name xeneventchn) + (public_name xen.eventchn) + (libraries unix) + (no_dynlink) + (c_library_flags -lxenevtchn)) diff --git a/tools/ocaml/libs/mmap/dune b/tools/ocaml/libs/mmap/dune new file mode 100644 index 0000000000..57a8ab5b9b --- /dev/null +++ b/tools/ocaml/libs/mmap/dune @@ -0,0 +1,9 @@ +(library + (foreign_stubs + (language c) + (names xenmmap_stubs)) + (name xenmmap) + (public_name xen.mmap) + (libraries unix) + (no_dynlink) + (install_c_headers mmap_stubs)) diff --git a/tools/ocaml/libs/xb/dune b/tools/ocaml/libs/xb/dune new file mode 100644 index 0000000000..13a507ea87 --- /dev/null +++ b/tools/ocaml/libs/xb/dune @@ -0,0 +1,10 @@ +(library + (foreign_stubs + (language c) + (extra_deps ../../../include/xen/xen.h) + (include_dirs ../../../include) + (names xenbus_stubs xs_ring_stubs)) + (name xenbus) + (public_name xen.bus) + (no_dynlink) + (libraries unix xenmmap)) diff --git a/tools/ocaml/libs/xc/dune b/tools/ocaml/libs/xc/dune new file mode 100644 index 0000000000..6f9450cd27 --- /dev/null +++ b/tools/ocaml/libs/xc/dune @@ -0,0 +1,16 @@ +(rule + (with-stdout-to + xenctrl_abi_check.h + (run perl -w %{dep:abi-check} %{dep:xenctrl_stubs.c} %{dep:xenctrl.ml}))) + +(library + (foreign_stubs + (language c) + (names xenctrl_stubs) + (extra_deps ../../../include/xen/xen.h ../../../libs/ctrl/libxenctrl.so) + (include_dirs ../../../include)) + (name xenctrl) + (public_name xen.ctrl) + (libraries unix xenmmap) + (no_dynlink) + (c_library_flags -lxenctrl -lxenguest)) diff --git a/tools/ocaml/libs/xs/dune b/tools/ocaml/libs/xs/dune new file mode 100644 index 0000000000..086259f51d --- /dev/null +++ b/tools/ocaml/libs/xs/dune @@ -0,0 +1,15 @@ +; fallback mode: the files may have been generated by configure already + +(rule + (targets paths.ml) + (deps paths.ml.in) + (mode fallback) + (action + (run ../../../config.status --file=paths.ml))) + +(library + ; avoid conflict with mirage lib: name it differently + (name xenstore_xen) + (public_name xen.store) + (no_dynlink) + (libraries unix xenbus)) diff --git a/tools/ocaml/xenstored/dune b/tools/ocaml/xenstored/dune new file mode 100644 index 0000000000..d71decebcf --- /dev/null +++ b/tools/ocaml/xenstored/dune @@ -0,0 +1,51 @@ +; fallback mode: the files may have been generated by configure already +; also for fallback mode either all files must be present or none +; hence the 2 separate rules here + +(rule + (targets oxenstored.conf) + (deps oxenstored.conf.in) + (mode fallback) + (action + (run ../../config.status --file=oxenstored.conf))) + +(rule + (targets paths.ml) + (deps paths.ml.in) + (mode fallback) + (action + (run ../../config.status --file=paths.ml))) + +(executable + (modes native) + (name xenstored) + (modules + (:standard \ syslog systemd)) + (flags + (:standard -w -52)) + (libraries unix xen.bus xen.mmap xen.ctrl xen.eventchn xenstubs)) + +(install + (package xenstored) + (section sbin) + (files + (xenstored.exe as oxenstored))) + +(install + (package xen) + (section etc) + (files oxenstored.conf)) + +(library + (foreign_stubs + (language c) + (names syslog_stubs systemd_stubs select_stubs) + (extra_deps ../../dune-workspace) + (flags + (:standard -DHAVE_SYSTEMD))) + (modules syslog systemd) + (name xenstubs) + (wrapped false) + (libraries unix) + (no_dynlink) + (c_library_flags -lsystemd))
Based on Christian Lindig's work. Initially this will be used to build unit tests, and to make development easier. Dune supports proper incremental builds and editor integration with merlin/LSP. For now the Makefile based build system is retained too: this is not a hard dependency on Dune. Using version 2.1 of Dune build language here, because that is the one available in Ubuntu Focal (part of the CI here). No functional change. Signed-off-by: Edwin Török <edvin.torok@citrix.com> --- tools/.gitignore | 7 +++++ tools/dune | 5 ++++ tools/dune-project | 1 + tools/ocaml/dune-project | 27 ++++++++++++++++++ tools/ocaml/libs/eventchn/dune | 11 ++++++++ tools/ocaml/libs/mmap/dune | 9 ++++++ tools/ocaml/libs/xb/dune | 10 +++++++ tools/ocaml/libs/xc/dune | 16 +++++++++++ tools/ocaml/libs/xs/dune | 15 ++++++++++ tools/ocaml/xenstored/dune | 51 ++++++++++++++++++++++++++++++++++ 10 files changed, 152 insertions(+) create mode 100644 tools/.gitignore create mode 100644 tools/dune create mode 100644 tools/dune-project create mode 100644 tools/ocaml/dune-project create mode 100644 tools/ocaml/libs/eventchn/dune create mode 100644 tools/ocaml/libs/mmap/dune create mode 100644 tools/ocaml/libs/xb/dune create mode 100644 tools/ocaml/libs/xc/dune create mode 100644 tools/ocaml/libs/xs/dune create mode 100644 tools/ocaml/xenstored/dune