|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Ocamlbuild directory inclusion problemHi,
I've come across another issue with Ocamlbuild, and I'm not sure if this one is a bug or a feature. Consider the project tree below; note that everything under lib/ is supposed to produce a foo.cma library, while cmd/ is a command line application that uses foo.cma (and which can be safely ignored for now). |-- _tags |-- lib/ | |-- _tags | |-- foo.mllib | |-- foo_core.mlpack | |-- foo_core/ | | |-- (...) | | | |-- foo_ext.mlpack | |-- foo_ext/ | |-- (...) | |-- cmd/ |-- (...) The file lib/_tags just contains "<foo_core> or <foo_ext>: include". If I issue "ocamlbuild foo.cma" inside the lib/ directory, then foo.cma gets built as expected. However, if I move to the parent directory and issue "ocamlbuild lib/foo.cma", I get an error: ocamlc -pack lib/foo_ext/beta.cmo lib/foo_ext/alpha.cmo -o lib/foo_ext.cmo File "_none_", line 1, characters 0-1: Error: The implementation (obtained by packing) does not match the interface lib/foo_ext.mli: Modules do not match: sig val num : int end is not included in Foo_core.Zero.S Unbound module type Foo_core.Zero.S Command exited with code 2. The problem is of course that "-I lib" should be added to the invocation of ocamlc. For this purpose I've created a myocamlbuild.ml in the root directory, with the following contents: let () = dispatch begin function | After_rules -> Pathname.define_context "lib/foo_ext" ["lib"]; | _ -> () end However, this doesn't work as expected. Perhaps I've misunderstood the purpose of Pathname.define_context? In any case, I would expect a simple example like this one to work even without the need for a myocamlbuild.ml plugin. So, what is missing here? Thanks in advance! Best regards, Dario Teixeira _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs |
|
|
Re: Ocamlbuild directory inclusion problemExcerpts from Dario Teixeira's message of Sat Oct 24 18:11:26 +0200 2009:
> Hi, > > I've come across another issue with Ocamlbuild, and I'm not sure if this one > is a bug or a feature. Consider the project tree below; note that everything > under lib/ is supposed to produce a foo.cma library, while cmd/ is a command > line application that uses foo.cma (and which can be safely ignored for now). > > |-- _tags > |-- lib/ > | |-- _tags > | |-- foo.mllib > | |-- foo_core.mlpack > | |-- foo_core/ > | | |-- (...) > | | > | |-- foo_ext.mlpack > | |-- foo_ext/ > | |-- (...) > | > |-- cmd/ > |-- (...) > > The file lib/_tags just contains "<foo_core> or <foo_ext>: include". If I issue > "ocamlbuild foo.cma" inside the lib/ directory, then foo.cma gets built as expected. > However, if I move to the parent directory and issue "ocamlbuild lib/foo.cma", > I get an error: > > ocamlc -pack lib/foo_ext/beta.cmo lib/foo_ext/alpha.cmo -o lib/foo_ext.cmo > File "_none_", line 1, characters 0-1: > Error: The implementation (obtained by packing) > does not match the interface lib/foo_ext.mli: > Modules do not match: > sig val num : int end > is not included in > Foo_core.Zero.S > Unbound module type Foo_core.Zero.S > Command exited with code 2. > > > The problem is of course that "-I lib" should be added to the invocation of ocamlc. > For this purpose I've created a myocamlbuild.ml in the root directory, with the > following contents: What about adding «"lib": tnclude» into the main _tags file? BTW «<foo_core> or <foo_ext>: include» could be written «"foo_core" or "foo_ext": include» Best regards, -- Nicolas Pouillard http://nicolaspouillard.fr _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs |
|
|
|
| Free embeddable forum powered by Nabble | Forum Help |