On Wed, 12 Aug 2015 12:27:15 -0400
Ian Stakenvicius <a...@gentoo.org> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> On 12/08/15 11:55 AM, Alexis Ballier wrote:
> > On Wed, 12 Aug 2015 11:30:39 -0400 Ian Stakenvicius
> > <a...@gentoo.org> wrote:
> > 
> >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
> >> 
> >> On 12/08/15 11:08 AM, Ulrich Mueller wrote:
> >>>>>>>> On Wed, 12 Aug 2015, Alexis Ballier wrote:
> >>> 
> >>>> i.e. something that really tells the PM how to automate
> >>>> the choice: - 'qt5 -> !qt4' is rather straightforward to
> >>>> solve and tells the PM how (note that it is not equivalent
> >>>> to 'qt4 -> !qt5') - '^^ ( qt5 qt4 )' requires the PM to
> >>>> make a choice in order to automate it
> >>> 
> >>> I was thinking about some syntax like this:
> >>> 
> >>> REQUIRED_USE="|| ( +foo bar ) ^^ ( +qt5 -qt4 )"
> >>> 
> >>> The package manager would first evaluate each group in 
> >>> REQUIRED_USE with the original set of USE flags. If that
> >>> doesn't evaluate to true, retry with flags changed as
> >>> indicated by the + and - signs.
> >>> 
> >>> Ulrich
> >>> 
> >> 
> >> Having the ability for REQUIRED_USE to provide a default
> >> resolution path should definitely help with things; I assume
> >> this is meant to do its work via --autounmask-write or similar,
> >> ie to help users adjust their config files?  Or was the thought
> >> to allow PMs to override USE immediately?
> > 
> > 
> > I think it is better seen as a list of implications, esp. for
> > this kind of questions :) With that in mind, there is no
> > autounmask-write: effective USE for a given package is input USE
> > with these implications applied.
> 
> ..if I'm understanding what you're saying here, you see this as
> something the PM will use to adjust the input use list so that the
> emerge itself will go ahead with the newly adjusted flags; am I
> understanding that correctly?
> 
> In other words, there won't be any user control/alert/override for
> what the default actions will be, if the user's profile isn't set up
> in a way that satisfies REQUIRED_USE, correct?  so if I have
> 'app-cat/pkg qt4' in my package.use, but USE="qt5" in my profile,
> then because both flags end up being enabled the REQUIRED_USE="^^ (
> +qt5 qt4 )" in app-cat/pkg will just force-off my package.use entry
> and everything will proceed as if it wasn't there?
> 
> 
> > 
> >> Questions:
> >> 
> >> 1 - how does +foo in REQUIRED_USE relate to use-defaults set in
> >> IUSE?
> > 
> > This questions remains. I see use-defaults in IUSE as part of
> > "input USE" above.
> 
> Yes, just as it is now, the use-defaults in IUSE are part of the
> "input use".  What I'm wondering is, would the +foo in
> REQUIRED_USE="|| ( +foo bar )" be something that should be used in
> combination with IUSE="+foo" (perhaps even require it) or would its
> functionality and specification be entirely independent of it?
> Right now for ||(), setting IUSE="+foo" gets around that issue in
> almost all cases, the only case it doesn't is when the user has
> explicitly set USE="-foo" (or USE="-*").
> 
> 
> > 
> > 
> > [...]
> >> 3 - will having REQUIRED_USE be able to force flags on (and
> >> others off) likely result in abuse of profiles and other use
> >> defaults?  I forsee this being a way, for instance, for a dev
> >> to get around users setting USE="-*" in make.conf to ensure a
> >> default use flag setting is honoured.
> > 
> > How?
> 
> This assumes that the PM will just set the flags that resolve the
> REQUIRED_USE directly (ie modify the "input use" based on the
> defaults provided) and go ahead, which seems to be what you're
> implying will be the implementation, earlier on. See my response re
> #1 above as well, since if I understand this correctly the
> REQUIRED_USE="|| ( +foo bar )" will set +foo even if USE="-*" in the
> profile right?


Answering all the above questions I think: input use and "effective"
use are unrelated. The point here is to give PM a way to solve
REQUIRED_USE which we currently lack. How PM does it: by
autounmask-write, a warning, an error (as currently), or silently is up
to each user's preference. I agree though that forcibly solving the
conflicts silently might not be a terrible idea and it'd be much better
to have an option to control that behavior.


Alexis.

Reply via email to