English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
Ocamlbuild plugins
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-11-06 (16:23)
From: Dario Teixeira <darioteixeira@y...>
Subject: Re: [Caml-list] Ocamlbuild plugins

And thanks a lot for your reply!

> On  my  page [1] there is also a plugin example [2] and the API [3],
> where the module  signature [4] can be a good starting point about what
> tools we have in an ocamlbuild plugin.

I had seen those; what was missing was an overview of what exactly was
a plugin, and how it was supposed to be called -- the big picture stuff.

> There  is  certainly  some  missing pieces. Roughly an ocamlbuild plugin
> is an OCaml  module  called  Myocamlbuild  that should take place a
> the root of your project  (myocamlbuild.ml).  Automatically  ocamlbuild
> will take care of it by compiling  it  and  by  making  a  myocamlbuild
> binary  that is the classical ocamlbuild plus your module.

Yeap, I kind of assumed something like that was going on, though of course
I wasn't sure about the details.  This little piece of information would
have made a huge difference if it was included in the documentation!

Also, when introducing a new library, it is always good practice to fully
qualify values.  I know that for people used to a library this might
seem like a waste of time, but for those learning it makes everything
a lot clearer.

> Firstly since you want to use ocamlfind you should start with this plugin

I have looked into it, but it has one huge problem: it assumes that all
files will use the same packages.  Though in practice it doesn't hurt
to pass unnecessary packages to the compiler, it's still killing a fly*
with a bazooka.  Moreover, while the comment at the bottom of that page
addresses this issue ("A more fine grained version can provide specific
-package options depending on the compiled file. This can be easily
done using the tag system"), I find the use of "this can easily be done"
a bit ironic given the present meagerness of Ocamlbuild's documentation...

>  let flags in = S[A"-package"; A"pgocaml.statements"; A"-syntax"; 
A"camlp4o"] in
>  flag ["ocaml"; "compile"; "use_pgocaml_statements"];
>  flag ["ocaml"; "ocamldep"; "use_pgocaml_statements"];
>  You can then tag your files in the _tags file:
>  "database.ml": use_pgocaml_statements, thread

Yap, that was precisely what I wanted to express.  Though I am having
trouble parsing that example you just gave.  Is "flag" the function
"flag" from module Flags, or just a misspelling of the "flags" value
you just declared?  Also, "let flags in" doesn't seem grammatical.
(This just illustrates the need of always using fully qualified values
when giving examples!).

>  I don't know if GODI properly install as many things as ocamlbuild needs.

I would assume it does, but perhaps the GODI folks can enlighten us on that?

Anyway, thanks again for your help, and I hope you'll find the time
to expand a little on the user guide...  It seems the biggest obstacle
to a wider adoption of Ocamlbuild is the lack of proper documentation
(a common complaint in the OCaml world, unfortunately).

Kind regards,

*Note: no flies were actually hurt during the writing of this post.

Nervous about who has your email address? Yahoo! Mail can help you win the war against spam.