[Haskell-cafe] Re: A new cabal odissey: cabal-1.8 breaking its own
neck by updating its dependencies
Paolo G. Giarrusso
p.giarrusso at gmail.com
Mon Sep 13 15:56:11 EDT 2010
On Sep 13, 1:52 pm, Ross Paterson <r... at soi.city.ac.uk> wrote:
> On Sat, Sep 11, 2010 at 12:17:27PM -0700, Jason Dagit wrote:
> > "To avoid this problem in the future, avoid upgrading core packages.
> > The latest version of cabal-install has disabled the upgrade command
> > to make it a bit harder for people to break their systems in this
> > way."
> It's not always possible. In particular, random-1.0.0.2 (shipped with
> GHC 6.12.*) depends on the time package, of which more recent versions
> have been released. That can trigger rebuilding of random-1.0.0.2,
> and thus haskell98-1.0.1.1.
My case was similar, old-locale had been upgraded. And currently,
haskell98 would not necessarily be rebuilt automatically - it would
just break.
The point is that time should _not_ be upgradeable with the current
system, for the same reason as "cabal upgrade" is disabled. The
alternative is to allow Cabal to rebuild itself _and_ GHC (and
everything) safely.
BTW, I just realized that thanks to static linking, the ghc and cabal
binaries should never stop working - only using those libraries for
building packages could break. If you always upgrade locally, you can
always remove packages from the user DB as I did.
> It might help if the release of random with GHC 7.0 had a tight dependency
> on the version of the time package shipped with it. Maybe all the core
> packages need tight dependencies.
If you mean it as a hack for cabal's brokenness, it could be OK, but
otherwise than that, I believe it's a bad idea. GHC itself does not
depend on any specific package; it's the compiled GHC package which
has a tight dependency. So I don't like the concept.
Furthermore, if a GHC release (whichever it is) had a tight
dependency, that would be annoying for when you want to compile that
release against different libraries - if that is supposed to work.
But actually, on my system I can't see ghc in cabal's DB; I can see
that in the ghc-pkg database for binaries, but there all dependencies
are tight, probably because they are dependencies among installed
packages.
Have a look:
$ cabal info QuickCheck
[...]
Dependencies: mtl -any, base >=4 && <5, random -any, base >=3 &&
<4,
random -any, base <3, ghc -any, extensible-
exceptions -any
$ ghc-pkg describe QuickCheck | grep depends
depends: base-3.0.3.1 random-1.0.0.1
Best regards
--
Paolo Giarrusso, PhD student
http://www.informatik.uni-marburg.de/~pgiarrusso/
More information about the Haskell-Cafe
mailing list