[Haskell-cafe] Why does cabal select base-3.0.3.2 when base-4.2.0.0 is available?

Bjorn Buckwalter bjorn.buckwalter at gmail.com
Mon Apr 26 08:32:03 EDT 2010


On Mon, Apr 26, 2010 at 20:07, Ivan Lazar Miljenovic
<ivan.miljenovic at gmail.com> wrote:
> Bjorn Buckwalter <bjorn.buckwalter at gmail.com> writes:
>
>> On Mon, Apr 26, 2010 at 19:38, Ivan Lazar Miljenovic
>> <ivan.miljenovic at gmail.com> wrote:
>>> Bjorn Buckwalter <bjorn.buckwalter at gmail.com> writes:
>>>> Why does cabal seem to prefer base-3.0.3.2 over base-4.2.0.0 when
>>>> installing packages with an unqualified base requirement? Example:
>>>
>>> [snip]
>>>
>>> The reason that base-3 is chosen is because many of these old
>>> libraries won't build with base-4; as such, if no upper bound
>>> restriction is found on the base package then base-3 is chosen as it
>>> is more likely to work than base-4 (there were a _lot_ of breakages
>>> when base-4 first came out with 6.10.1).
>>
>> I see, I guess that's pragmatic although the deprecation warning is
>> unfortunate.
>
> The deprecation warning is due to GHC 6.12; this is a not-so-subtle hint
> to package maintainers to fix their code up, and to users to poke the
> maintainers of packages they use to do so!

Understood, but in this case the warning seems misdirected since fad
does not restrict itself to base-3.*...

So what would be the fix, to set an upper bound on base? Is the
general recommendation that all packages should specify upper bounds
on all dependencies (if so why doesn't Cabal tell us?)? I can see that
this would make some sense as a package might be broken by an API
change in its dependencies. On the other hand I can also see it
causing headaches occasionally...

Thanks,
Bjorn


More information about the Haskell-Cafe mailing list