1 |
On Thu, 15 Jun 2017 17:45:09 +0100 |
2 |
Ciaran McCreesh <ciaran.mccreesh@××××××××××.com> wrote: |
3 |
|
4 |
> On Thu, 15 Jun 2017 18:37:16 +0200 |
5 |
> Alexis Ballier <aballier@g.o> wrote: |
6 |
> > > So you're saying that at the end of this, there's an ENFORCED_USE |
7 |
> > > solver that spits out some answer that may or may not be in any |
8 |
> > > way a sane solution to the conflict. |
9 |
> > > |
10 |
> > > I don't see how that's helpful to a user. |
11 |
> > |
12 |
> > Define sane. |
13 |
> > The definition of the solver is made to change the least possible of |
14 |
> > the inputs and is completely and easily predictable by the person |
15 |
> > writing the constraint. That is something I would call sane. |
16 |
> |
17 |
> The problem is not just writing a resolver that spits out a valid |
18 |
> output. The problem is writing a resolver which will never go and |
19 |
> uninstall bash as a result of unintended combinations of inputs (which |
20 |
> Portage used to do, but there's now a special exception for system |
21 |
> packages, so it will only occasionally unexpectedly uninstall critical |
22 |
> packages that aren't explicitly in system due to virtuals instead). |
23 |
> This is *hard*. |
24 |
|
25 |
We're not talking about solving deps here. |
26 |
|
27 |
> A bad suggestion to the user is worse than no suggestion at all. |
28 |
> Unless you can safely determine that there aren't any unintended |
29 |
> consequences of your rule, the focus needs to be on producing good |
30 |
> error messages so the user can figure the problem out, not on |
31 |
> producing bad solutions that will confuse things even more. |
32 |
|
33 |
The guarantee comes from the fact that the output is always in the |
34 |
space of all possible inputs from the user. So, if some output will |
35 |
kill a kitten, so does some input. |
36 |
|
37 |
Of course, implementation can decide to error out and propose a |
38 |
solution, to continue but print big fat warnings, etc. I like the |
39 |
initial proposal in that regard. |
40 |
|
41 |
|
42 |
Alexis. |