
On Wed, 2008-11-19 at 02:15 -0800, Jason Dusek wrote:
Duncan Coutts
wrote: Jason Dusek wrote:
In the ticket, someone says:
True though I suspect it looks a bit weird to the uninitiated. We know to read the conditional syntax as an implication constraint which can be applied in either direction but I suspect many people read it in a directed functional way.
Does that mean you don't have to actually set 'splitBase' explicitly?
No, that is the point. You do not have to. The choice for the flag is completely determined automatically by the version of the base package that is chosen.
When you say "chosen" is that the same as "detected"?
No. Each package can only be built against a single version of a dependent package. So chosen really means chosen. It is the single version of the dependent package that we end up building your package against.
With 6.10, both versions of base are available -- what happens then? The environment chooses the latest one?
Good example. So in that case the system (with optional input from the user / package manager) has to choose one of them. Often there will be a constraint from the package so that there will be no real choice. When the choice is not constrained then it is more complicated: * 'rughc Setup configure' and 'cabal configure' use a simple (and occasionally wrong) heuristic to pick the latest version. * 'cabal install' uses a simple constraint solver and some global and local preferences to make the choice. At the moment the global preference is to pick base 3, because many many packages say "build-depends: base >= 3" but in fact fail when built with base-4. So the preference is a kind of patch to keep them building. Duncan