caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Re: [Caml-list] Virtual packages in findlib
@ 2009-07-08 10:35 Dario Teixeira
  2009-07-13 22:55 ` Gerd Stolpmann
  0 siblings, 1 reply; 4+ messages in thread
From: Dario Teixeira @ 2009-07-08 10:35 UTC (permalink / raw)
  To: caml-list, Stefano Zacchiroli


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






^ permalink raw reply	[flat|nested] 4+ messages in thread
* Virtual packages in findlib
@ 2009-07-07 18:07 Dario Teixeira
  2009-07-08  7:41 ` [Caml-list] " Stefano Zacchiroli
  0 siblings, 1 reply; 4+ messages in thread
From: Dario Teixeira @ 2009-07-07 18:07 UTC (permalink / raw)
  To: caml-list


Hi,

(This is somewhat related to my previous question; having an order-preserving
Ocamlbuild would be moot if findlib supported some sort of virtual packages).

Suppose that for successful linking you need a package B to appear after
package A1.  However, A1 is only one particular instantiation of A-ness.
You could replace A1 with A2 or A3, and the program would also link and run.

Is there a way of expressing this sort of dependency with findlib?  Something
like "requires = A1 | A2 | A3".  Or even better, allowing packages A1, A2,
and A3 to provide a virtual package "A", and make B depend on that.  (The
Debian folks will recognise this pattern).

Best regards,
Dario Teixeira






^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-07-14 20:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-08 10:35 [Caml-list] Virtual packages in findlib Dario Teixeira
2009-07-13 22:55 ` Gerd Stolpmann
2009-07-14 20:47   ` Dario Teixeira
  -- strict thread matches above, loose matches on Subject: below --
2009-07-07 18:07 Dario Teixeira
2009-07-08  7:41 ` [Caml-list] " Stefano Zacchiroli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).