PG icon indicating copy to clipboard operation
PG copied to clipboard

compile-before-require stumbles on .cmxs files (OCaml plug-ins)

Open vbgl opened this issue 6 years ago • 3 comments

With PG-4.4.1~pre at 73792323172e289b531afc086d3f97323b28ecb6 with Coq-8.8 at 37d464bf9c36a8f52b42a509a31739e8afb96f1d, I’m trying to Require (with compile-before-require enabled; when this option is disabled, everything works fine) the loader for the toy plug-in at https://github.com/ybertot/plugin_tutorials/blob/35b4f622a118cccf5e8dd961dd75b31c3ea9e5fd/tuto3/theories/Loader.v PG fails at understanding a .cmxs (OCaml dynamically linked library) dependency of this module.

Here is what coqdep returns:

$ coqdep -R theories Tuto3 -I src theories/Loader.v
theories/Loader.vo theories/Loader.glob theories/Loader.v.beautified: theories/Loader.v theories/Data.vo src/tuto3_plugin.cmo src/tuto3_plugin.cmxs
theories/Loader.vio: theories/Loader.v theories/Data.vio src/tuto3_plugin.cmo src/tuto3_plugin.cmxs

The *coq-compile-response* buffer shows:

-*- mode: compilation; -*-

coqc -I …/plugin_tutorials/tuto3/src -R …/plugin_tutorials/tuto3/theories Tuto3 …/plugin_tutorials/tuto3/src/tuto3_plugin.cmx
Warning:
File "…/plugin_tutorials/tuto3/src/tuto3_plugin.cmx"
has been implicitly expanded to
"…/plugin_tutorials/tuto3/src/tuto3_plugin.cmx.v"
[file-no-extension,filesystem]
Error:
Can't find file
…/plugin_tutorials/tuto3/src/tuto3_plugin.cmx.v

The *Messages* buffer shows:

Check …/plugin_tutorials/tuto3/theories/Loader.vo
Check …/plugin_tutorials/tuto3/theories/Data.vo
Check …/plugin_tutorials/tuto3/src/tuto3_plugin.cmo
coq-auto-compile: no source file for …/plugin_tutorials/tuto3/src/tuto3_plugin.cmo
Check …/plugin_tutorials/tuto3/src/tuto3_plugin.cmxs
Recompile …/plugin_tutorials/tuto3/src/tuto3_plugin.cmx
proof-extend-queue: ERROR: Recompiling coq library …/plugin_tutorials/tuto3/src/tuto3_plugin.cmx terminated with exit status 1

vbgl avatar May 29 '18 13:05 vbgl

Sorry for the late reply, but this is a known limitation, which is highlighted several times in the documentation.

hendriktews avatar Apr 11 '20 16:04 hendriktews

I actually mean "The compilation feature does currently not support ML modules." in 11.3 (https://proofgeneral.github.io/doc/master/userman/Coq-Proof-General/#Multiple-File-Support) and "No support Declare ML Module commands." in 11.3.5 (https://proofgeneral.github.io/doc/master/userman/Coq-Proof-General/#Current-Limitations).

I have never looked into ML modules, therefore the limitation. I would be interested to work with somebody together who is interested in this feature and knows enough about ML module compilation.

hendriktews avatar Apr 15 '20 14:04 hendriktews