So, I spent some time this weekend working on the UI end of the resolver. I've overhauled the GTK+ interface so that it now allows access to all the resolver's features (specifically, rejecting and approving actions). Generating and reviewing solutions should also be a bit more intuitive: instead of copying the curses interface, the new code shows a list of all the generated solutions with a button to make a new one. I won't claim this is an end-point, but it's a nice step up from where that bit of the UI was on Friday. :-)
I've also "fixed" the safe-upgrade breakage by just disabling the reinstatement of unused packages. For those not familiar with this little nasty, it went like this: DEBUG aptitude.apt.cache - aptitudeDepCache::sweep(): Removing kdebase-bin-kde3: it is unused. (...) TRACE aptitude.resolver.search - Trying to resolve kdebase-runtime 4:4.2.2-1 -> {kdebase-runtime-bin-kde4 4:4.2.2-1} by installing kdebase-runtime-bin-kde4 4:4.2.2-1 (...) DEBUG aptitude.apt.cache - aptitudeDepCache::sweep(): Cancelling the removal of kdebase-bin-kde3: it is no longer unused. kdebase-bin-kde3 conflicts with kdebase-runtime-bin-kde4. When aptitude tried to apply its dependency "solution", the unused-package handling code would notice that kdebase-bin-kde3 was "no longer unused" and reinstate it on the system. Boom! Disabling reinstatement is a brutal fix that will have unpleasant side-effects. I might look into whether there's a better option, but I don't have many ideas. The one thing I've thought of is to check whether each reinstated package conflicts or is conflicted by any installed package (a fairly quick test). Doing this will solve some instances of the problem, but I'm not convinced that it solves all of them. For instance: what if the package that can't be reinstated is a dependency of *another* package that was reinstated? Is there any way to avoid full dependency resolution if that happens? All that said: I'm nearly ready to release aptitude 0.5.2. I have the following provisional TODO: (1) Either mitigate the potential fallout from yanking reinstatement, or find a safe way to, ahem, reinstate it. (2) Document the new resolver capabilities (tiering and the configuration options that go with it). Once those points are finished I think it's time for a release! Daniel _______________________________________________ Aptitude-devel mailing list Aptitude-devel@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/aptitude-devel