PVP proposal: no upper bounds on non-upgradeable packages
Herbert Valerio Riedel
hvr at gnu.org
Fri Apr 11 07:30:51 UTC 2014
On 2014-04-11 at 00:27:31 +0200, Edward Kmett wrote:
[...]
> That said, this should be rather mitigated going forward by:
>
> https://github.com/hvr/cabal/commit/65e9b88bc849e76040ed7947591ea7172cd02db5
>
> which closes out
>
> https://github.com/haskell/cabal/issues/1444
>
> and
>
> https://github.com/haskell/cabal/issues/667
>
> So in essence, it _is_ being fixed in cabal.
Btw, the case of 'template-haskell' could be considered another
data-point in the upper-bounds debate:
Cabal would have been able to do a better job, if 'template-haskell' would
have set tighter version-bounds :-)
If you look at the previous versions, on
http://hackage.haskell.org/package/template-haskell
'template-haskell' had the obviously incorrect constraint
build-depends: base >= 4.2 && < 5, pretty, containers
from version 2.4.0.1 till 2.8.0.0; only starting with 2.9.0.0 it got a
tighter one, specifically
build-depends: base == 4.7.*, containers == 0.5.*, pretty == 1.1.*
that will keep Cabal from even attempting to install
template-haskell-2.8.0 on GHCs prior to GHC 7.8.1, *but* it wouldn't
keep GHC 7.8.1 from installing versions of 'template-haskell' prior to
2.8.0.0
So we have to resort to declare 'template-haskell' explicitly in
cabal-install's solvers as being a non-upgradable package as a hack,
instead of being able to rely on the .cabal meta-data to direct Cabal's
solver.
PS: Strictly speaking, it seems to me 'template-haskell' can actually be
upgraded in theory, GHC will use the latest installed version as its
wired-in package (if understand the code correctly), but there was
no need for updating 'template-haskell' between GHC releases in the
past.
More information about the Libraries
mailing list