A propos de ocamldep

From: Yann Coscoy (Yann.Coscoy@sophia.inria.fr)
Date: Fri Jun 19 1998 - 19:03:01 MET DST


Message-Id: <199806191703.TAA20223@bahia.inria.fr>
To: caml-list@inria.fr
Subject: A propos de ocamldep
Date: Fri, 19 Jun 1998 19:03:01 +0200
From: Yann Coscoy <Yann.Coscoy@sophia.inria.fr>

[English abstract :
  ocamldep do not use any real parser or typechecker, and consequently
fails on very simple examples (some are given at the end of this
message).]

  J'ai envie de râler après ocamldep. Il y de nombreux cas où ocamldep
échoue lamentablement (voir à fin du message). Cet utilitaire donne
l'impression d'avoir été écrit par quelqu'un qui ne disposait n'y d'un
parser ni d'un typechecker ocaml. Ce n'est bien entendu pas le cas,
mais cela en a tous les défauts.

  Aura-t-on un jour un ocamldep aussi fiable qu'un typechecker ? Ce
que je réclame, c'est un générateur de dépendances qui fasse un
parsing complet et un peu de typechecking. Le compilo ocaml contient,
à mon avis, toutes les briques nécessaires pour le faire à peu de
frais.

  Je suis parfaitement conscient qu'il peu être commode d'avoir un
génerateur de dépendances qui se débrouille à peu près avec des
fichiers incorrects. Mais, cela devrait à mon avis pas l'empêcher de
fonctionner correctement avec des fichiers corrects.

    Cordialement,

             Yann Coscoy

============================================================
Premier cas, une dépendance qui manque :

======= fichier a.ml
()
=======

======= fichier b.ml
module M = A
=======

======= output ocamldep :
=======

======= dépendances correctes :
b.cmo: a.cmo
b.cmx: a.cmx
=======

============================================================
Deuxième cas une dépendance en trop :

======= fichier a.ml
module B =
struct
  let i = 1
end

let j = B.i
=======

======= fichier b.ml
()
=======

======= output ocamldep :
a.cmo: b.cmo
a.cmx: b.cmx
=======

======= dépendances correctes :
=======

============================================================
  Il est bien sûr possible de raffiner le deuxième cas pour obtenir
des dépendances bouclées très peu appréciées par make.

======= fichier a.ml
module B =
struct
  let i = 1
end

let j = B.i
=======

======= fichier b.ml
let k = A.j
=======

======= output ocamldep :
a.cmo: b.cmo
a.cmx: b.cmx
b.cmo: a.cmo
b.cmx: a.cmx
=======

======= dépendances correctes :
b.cmo: a.cmo
b.cmx: a.cmx
=======



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:14 MET