On Sat, Jan 18, 2014 at 12:56:36AM +0100, Tom Wijsman wrote:
> On Fri, 17 Jan 2014 18:28:41 +0000
> Ciaran McCreesh <ciaran.mccre...@googlemail.com> wrote:
> 
> > On Fri, 17 Jan 2014 17:47:58 +0100
> > Tom Wijsman <tom...@gentoo.org> wrote:
> > > Maybe we can let the package managers only perceive it as keyworded
> > > or stable if all of its dependencies are keyworded or stable on the
> > > architecture that the user runs. Then we can have repoman just
> > > ignore checking dependencies' keywords when we keyword or stabilize
> > > them.
> > > 
> > > Not sure how implementable this idea is though...

Seems reasonable to me: it's a property of the tree per-arch, that can
be calculated post-sync client-side, if all else fails, based on the
metadata cache for standard ebuilds. So the resolver doesn't need to
worry about it (as far as the resolver's concerned the ebuild is arch or
~arch according to CHOST.)

> As a side note, I think we might want to name this anyarch... :)

I agree, arch="any" makes a lot more sense.

> > It's going to hurt for four reasons that I can think of right now.
> > 
> > Firstly, things you think are "obviously portable" sometimes aren't.
> 
> We could write a search for architecture dependent / specific code.
> 
> > Secondly, users already get confused by "stable use masks". This is
> > going to be even worse: users aren't going to understand why a noarch
> > package isn't available for them.
> 
> We can improve the output of the package manager to make this easier
> to understand; one way is to clarify it, the other way is to just
> replace it by the actual archictecture the user runs.

Well, if we follow your idea, then the user won't know it's arch="any",
since by the time resolution happens, it's marked stable or testing for
the user's arch. So I don't really see the issue, though better info
is always useful, and in case of problem, we'd likely want to be told
it's an arch="~any" and what its dependencies are.

But that's in the slowpath when there's a problem the resolver can't
handle itself.

> > Thirdly, you have to decide how to deal with long chains and cycles in
> > noarch dependencies.
> >
> > Fourthly, the interaction with || deps is an awful mess.
> 
> Yes, these are though problems to resolve; my mind came up with that
> this idea needs recursion, hence the "not sure how implementable".

These are standard dep resolution problems already, and given that the
mangler is to consider it either arch or ~arch according to the user
arch, and the state of its dependencies in the cache which can be worked
out post-sync, this is exactly the same problem as the rest of the tree.

So the rest of your mail appears to be a discussion of prior art.

> If it is going to be a large share of the Portage tree we'll want to
> look for another design or just not change how this works at all.

Still not seeing the problem: perhaps we can see the roadblock in
implementation. About the only issue I can see is trying to break
an R/PDEPEND cycle, but again the question of whether its arch="any"
is orthogonal, given your definition, so again that is covered by
prior art.

-- 
#friendly-coders -- We're friendly, but we're not /that/ friendly ;-)

Reply via email to