Gentoo Archives: gentoo-dev

From: "Steven J. Long" <slong@××××××××××××××××××.uk>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] arch="any" (Re: rfc: revisiting our stabilization policy)
Date: Sat, 18 Jan 2014 12:47:48
Message-Id: 20140118125928.GA1851@rathaus.eclipse.co.uk
In Reply to: Re: [gentoo-dev] rfc: revisiting our stabilization policy by Tom Wijsman
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 ;-)