[Libguestfs] [libnbd PATCH] build: Fix OCaml build on Fedora 29

Eric Blake eblake at redhat.com
Tue Jun 18 00:08:52 UTC 2019


On 6/17/19 8:01 AM, Richard W.M. Jones wrote:
> 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.)

I'll have to dig around in the make manual for what the correct usage
should be. It's obvious from my failure that make was not computing the
dependency, even though we think it should have been.  It may take me a
while as it's not yet my highest priority (I at least have enough of a
hack to get the .cmi file built now, so it is no longer blocking me from
testing other things).  I also want to play with VPATH builds at some
point, but again, not yet.

> 
>> +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.
> 

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190617/6087efad/attachment.sig>


More information about the Libguestfs mailing list