Browse thread
Re: [Caml-list] Virtual packages in findlib
- Dario Teixeira
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Dario Teixeira <darioteixeira@y...> |
| Subject: | Re: [Caml-list] Virtual packages in findlib |
Hi,
> Can you explain that? I don't see why virtual packages can resolve
> ordering problems.
Because without virtual packages, one cannot list the true dependencies
of a package, thus causing ordering problems.
Consider the minimal example of there being two packages: A and B, with
B depending on A, and therefore having to be linked after. However, A is
not a real package, but instead a virtual one instantiated by either
A1, A2, A3, etc.
But alas, there is no virtual package support in findlib (I assume).
Because of this, the META file for B does not list A as a dependency.
(Yes, the META is "wrong", but how could it be made right?)
Now, we tell ocamlbuild that the project depends on A1 (for instance) and B.
Because there is no *declared* dependency between A1 and B (though in fact
there should be), ocamlbuild probably assumes that it is indifferent to
link "A1; B" or "B; A1". However, the latter case will cause an error.
Therefore, there are two solutions to this problem:
a) Make ocamlbuild preserve the order of the given packages *when there
is no explicit dependency among them*. (Obviously if there are dependencies
then Ocamlbuild should re-order the packages as fit).
b) Find some virtual package mechanism in findlib (thus rendering the
hack a) moot).
Cheers,
Dario Teixeira