Excerpts from johannes.kanig's message of Tue Sep 09 15:38:04 +0200 2008: > Hi List, > > I have the following problem. I have three files, each consisting of one > line: > > a.ml: type t = float > b.ml: type t = A.t > c.ml: include B > > Now I want to put these modules into a pack, but I only want to export A and > C, so I write a file project.mli: > module A : sig type t end > module C : sig type t = A.t end > > As I want to use ocamlbuild, I also create a file project.mlpack: > A > C B should be in the pack even if you want to hide it. > Now, the command "ocamlbuild project.cmo" works fine, but I can't build a > library from that: > ocamlbuild project.cma > Circular dependencies: "project.cmo" already seen in > [ "b.cmo"; "project.cmo" ] > > There clearly aren't any circular dependencies, are there? Am I missing > something? B depends on A, but A is in the pack Project. {B|->Project} Project includes C, that depends on B. {Project->B} > The problem goes away if I export B instead of C. So the troublemaker seems > to be the include directive. In that case: * A is in Project {} * B depends on A that is in Project, but B is also in Project {} * C depends on B that is in Project {C->Project} No cycle in this one -- Nicolas Pouillard aka Ertai