[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: experimental does not like Haskell



Hi,

Quoting Julien Cristau (2015-08-25 23:34:55)
> On Tue, Aug 25, 2015 at 16:31:34 +0200, Joachim Breitner wrote:
> > Does anyone have a good idea on how to solve that?
> Talk to the aptitude people?

in addition to this situation, there exist similar ones where real SAT solvers
will find a solution while apt and aptitude will not.

My personal solution to this is to feed to apt the solution found by a real
solver through its cudf interface like this:

apt-get install --solver aspcud \
	-o APT::Solver::Strict-Pinning=false \
	-o APT::Solver::aspcud::Preferences="-new,-removed,-changed,+sum(solution,apt-pin)" \
	mypackage

Here I'm using aspcud to work around apt's inability to properly take
experimental into account. In more detail, aspcud will find a solution that
minimizes first the amount of new packages, then the amount of removed
packages, then the amount of changed packages, and finally, which maximizes the
sum of pin values for all packages involved in the solution. Through the pin
values I'm then expressing things like "experimental is very undesirable" (by
giving experimental a pin value of 1) and "unstable is very desirable" (by
giving unstable a pin value of 700).

Going this route takes considerably longer than with just apt (around 1.5
minutes), especially when one has more than one architecture enabled (i386 and
amd64 in my case), but I prefer to just waste some compute cycles and do
actually useful stuff during this time, than being angry and spend my time
fighting with apt to convince it that there really is a solution.

I also do not know whether using an external solver like aspcud introduces yet
other bugs. I only used this personally and never on a grand scale.

Maybe a conservative solution would be to make sbuild run one of the quick
resolvers like apt and aptitude first, and only try running apt with an
external resolver if they cannot find a solution? After all, the job is only
sent to the buildds if dose3 found that there exists a solution, so this step
should really never fail on the buildds, no?

cheers, josch

Attachment: signature.asc
Description: signature


Reply to: