On Sat, Jun 15, 2019 at 04:56:37PM -0500, Eric Blake wrote:
Once ocamlfind is installed, 'make' failed for me with:
ocamlfind ocamlc -g -annot -safe-string -warn-error CDEFLMPSUVYZX+52-3 -ccopt
'-gdwarf' -package unix -c NBD.ml -o NBD.cmo
File "NBD.ml", line 1:
Error: Could not find the .cmi file for interface NBD.mli.
make[2]: *** [Makefile:823: NBD.cmo] Error 2
I'm not positive that this is the perfect fix, but it at least got the
build working for me, and copies from idioms in
nbdkit/plugins/ocaml/Makefile.am.
---
ocaml/Makefile.am | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am
index 0d876bb..557151c 100644
--- a/ocaml/Makefile.am
+++ b/ocaml/Makefile.am
@@ -32,6 +32,11 @@ if HAVE_OCAML
OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) -ccopt '$(CFLAGS)'
OCAMLPACKAGES = -package unix
+NBD.cmi: NBD.mli
+ $(OCAMLC) -c $< -o $@
I thnk this line should be:
$(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) -c $< -o $@
otherwise you are dropping warning flags.
However I don't know why this should be necessary because in
subdir-rules.mk we have:
%.cmi: $(srcdir)/%.mli
$(OCAMLFIND) ocamlc $(OCAMLFLAGS) $(OCAMLPACKAGES) -c $< -o $@
Maybe $(srcdir)/ confuses make because ./NBD.mli is not textually the
same as NBD.mli? (The use of $(srcdir) was an attempt to make it work
in split source/binary builds.)
+NBD.cmo: NBD.cmi
While correct, this line really shouldn't be necessary since
ocaml/.depend already has the same line.
In libguestfs we do some complex rewriting of .depend files (see
libguestfs.git/ocaml-dep.sh.in) because the raw output of ocamldep
doesn't really work well with autotools. I tried to avoid doing the
same thing in libnbd, but perhaps it's really necessary after all ...
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v