I build an app from an ocsigen-start template 2.16.1, with a 4.10 ocaml and Js_of_ocaml related packages of 3.5.2 version. All was compiling well, and at some point, for a reason I cannot explain, I encountered following error:
js_of_eliom -w +A-4-7-9-37-38-39-41-42-44-45-48 -jsopt +base/runtime.js -c -package lwt_ppx -package js_of_ocaml-ppx -package js_of_ocaml-ppx.deriving -package ppx_deriving.std -package ocsigen-start.client -package base -g administrative_book_db.ml Fatal error: exception Fl_package_base.No_such_package("js_of_ocaml-camlp4", "required by `eliom.syntax.predef'") Makefile.os:287: recipe for target '_client/administrative_book_db.cmo' failed make: *** [_client/administrative_book_db.cmo] Error 2
I find it very strange since I thought recent ocsigen packages did not depend at all on caml-p4 syntax/preprocessor. (it was not part of dependendencies required during opam installation, and there is an old issue suggesting this also)
Another thing that surprises me is that everything was compiling fine for a while. I have to investigate further but the only thing I see for now is that there may be a problem between a _db.ml file (using pgocaml ppx syntax) and two record types that share field names (but in different modules to prevent interference).
And third, I do not see how compilation of a _db.ml file, with all values defined server-side without any call to Js_of_ocaml encounters a compilation error in interaction with a js_of_ocaml package. (I wonder if it does not come from the fact that my two record types are shared between client and server)
Since I am on a 4.10 ocaml switch, I cannot download js_of_ocaml-camlp4, but if required I can still downgrade my ocaml version.
If you have any idea how to fix this (maybe modifying some META file ?) or to dig deeper into this, it would be of great help.
Thanks a lot !
EDIT: I just identified the source of the problem. I made a call to a server-side db function in a shared handler without creating a client value for the call (creating a rpc function, as in demo_pgocaml.eliom in ocsigen-start). So, although my error message was a bit strange, I just made a basic mistake.