1 |
On Sat, Jan 18, 2014 at 12:56:36AM +0100, Tom Wijsman wrote: |
2 |
> On Fri, 17 Jan 2014 18:28:41 +0000 |
3 |
> Ciaran McCreesh <ciaran.mccreesh@××××××××××.com> wrote: |
4 |
> |
5 |
> > On Fri, 17 Jan 2014 17:47:58 +0100 |
6 |
> > Tom Wijsman <TomWij@g.o> wrote: |
7 |
> > > Maybe we can let the package managers only perceive it as keyworded |
8 |
> > > or stable if all of its dependencies are keyworded or stable on the |
9 |
> > > architecture that the user runs. Then we can have repoman just |
10 |
> > > ignore checking dependencies' keywords when we keyword or stabilize |
11 |
> > > them. |
12 |
> > > |
13 |
> > > Not sure how implementable this idea is though... |
14 |
|
15 |
Seems reasonable to me: it's a property of the tree per-arch, that can |
16 |
be calculated post-sync client-side, if all else fails, based on the |
17 |
metadata cache for standard ebuilds. So the resolver doesn't need to |
18 |
worry about it (as far as the resolver's concerned the ebuild is arch or |
19 |
~arch according to CHOST.) |
20 |
|
21 |
> As a side note, I think we might want to name this anyarch... :) |
22 |
|
23 |
I agree, arch="any" makes a lot more sense. |
24 |
|
25 |
> > It's going to hurt for four reasons that I can think of right now. |
26 |
> > |
27 |
> > Firstly, things you think are "obviously portable" sometimes aren't. |
28 |
> |
29 |
> We could write a search for architecture dependent / specific code. |
30 |
> |
31 |
> > Secondly, users already get confused by "stable use masks". This is |
32 |
> > going to be even worse: users aren't going to understand why a noarch |
33 |
> > package isn't available for them. |
34 |
> |
35 |
> We can improve the output of the package manager to make this easier |
36 |
> to understand; one way is to clarify it, the other way is to just |
37 |
> replace it by the actual archictecture the user runs. |
38 |
|
39 |
Well, if we follow your idea, then the user won't know it's arch="any", |
40 |
since by the time resolution happens, it's marked stable or testing for |
41 |
the user's arch. So I don't really see the issue, though better info |
42 |
is always useful, and in case of problem, we'd likely want to be told |
43 |
it's an arch="~any" and what its dependencies are. |
44 |
|
45 |
But that's in the slowpath when there's a problem the resolver can't |
46 |
handle itself. |
47 |
|
48 |
> > Thirdly, you have to decide how to deal with long chains and cycles in |
49 |
> > noarch dependencies. |
50 |
> > |
51 |
> > Fourthly, the interaction with || deps is an awful mess. |
52 |
> |
53 |
> Yes, these are though problems to resolve; my mind came up with that |
54 |
> this idea needs recursion, hence the "not sure how implementable". |
55 |
|
56 |
These are standard dep resolution problems already, and given that the |
57 |
mangler is to consider it either arch or ~arch according to the user |
58 |
arch, and the state of its dependencies in the cache which can be worked |
59 |
out post-sync, this is exactly the same problem as the rest of the tree. |
60 |
|
61 |
So the rest of your mail appears to be a discussion of prior art. |
62 |
|
63 |
> If it is going to be a large share of the Portage tree we'll want to |
64 |
> look for another design or just not change how this works at all. |
65 |
|
66 |
Still not seeing the problem: perhaps we can see the roadblock in |
67 |
implementation. About the only issue I can see is trying to break |
68 |
an R/PDEPEND cycle, but again the question of whether its arch="any" |
69 |
is orthogonal, given your definition, so again that is covered by |
70 |
prior art. |
71 |
|
72 |
-- |
73 |
#friendly-coders -- We're friendly, but we're not /that/ friendly ;-) |