On Sat, 2008-12-06 at 02:03 +0000, Ian Lynagh wrote:
> On Fri, Dec 05, 2008 at 05:53:52PM +0000, Duncan Coutts wrote:
> > 
> > The way the solver works is that it does not commit to using the
> > installed version until the last possible minute. It does this because
> > the installed versions have much tighter constraints on dependencies. It
> > does a pass at the end to improve the solution by replacing available
> > packages by already installed ones wherever possible.
> > 
> > Currently it does that by checking if all the deps are exactly the same.
> > If they are not then it decides it's not suitable. We could relax that
> > slightly by instead checking if all the constraints that picking the
> > installed instance are consistent with the existing constraints. If they
> > are consistent then we can pick the installed one (and add the
> > constraints to the constraint set). If the conflict then we have to pick
> > the available version and do a re-install.

I just pushed this change to the development version of cabal-install.
It seems to do the right thing in a few simple scenarios. Wider testing
would be much appreciated.

> If I understand correctly what happens, I think the current
> cabal-install behaviour is a bug (and the above change will make it less
> likely to happen, but not fix it):
> 
> If cabal-install reinstalls foo-0.1 with different deps, and you have
> bar-0.1 installed which depends on foo-0.1, then cabal-install also
> needs to reinstall bar-0.1. 

Right.

> And it should check that it will be able to
> do so before it reinstalls foo-0.1 (so in particular, it would fail when
> trying to replace a dependency of the ghc package).

Right. We do not do that yet. See
http://hackage.haskell.org/trac/hackage/ticket/371

> It would also be nice if it told you what it was going to do in advance,
> and gave you the opportunity to abort, similar to:

We could make it print the install list when it is non-trivial. That
lets someone hit ^C if they're quick.

> $ sudo apt-get install libc6
> The following extra packages will be installed:
>   libc6-dbg libc6-dev libc6-i386
> The following packages will be upgraded:
>   libc6 libc6-dbg libc6-dev libc6-i386
> Do you want to continue [Y/n]?

We'd need a wider discussion with existing users if we want to make
cabal-install interactive.

Duncan

_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to