On 04/27/2012 12:25 PM, Jonathan Callen wrote:
> On 04/27/2012 11:26 AM, Zac Medico wrote:
>> In order to be practical, I guess we'd have to add a constraint
>> which says that if KEYWORDS contains the stable variant of a
>> particular keyword, then it should also be considered to implicitly
>> contain the unstable variant when the package manager is deciding
>> whether or not to apply package.use.{mask,force}.
> 
>> So, here's a description of the whole algorithm that I'd use:
> 
>> 1) Let EFFECTIVE_KEYWORDS equal the set of values contained in
>> KEYWORDS, plus ** and all the unstable variants of the stable
>> values contained in KEYWORDS. For example:
> 
>> KEYWORDS="~amd64 x86" -> EFFECTIVE_KEYWORDS="~amd64 x86 ** ~x86"
> 
>> 2) Intersect EFFECTIVE_KEYWORDS with effective ACCEPT_KEYWORDS,
>> where effective ACCEPT_KEYWORDS includes any relevant values from 
>> package.accept_keywords. For example, here is a table of
>> intersections of EFFECTIVE_KEYWORDS="~amd64 x86 ** ~x86" with
>> various effective ACCEPT_KEYWORDS values:
> 
>> ACCEPT_KEYWORDS  |  INTERSECTION  |  package.stable 
>> ----------------------------------------------------- x86
>> |  x86           |  yes x86 ~x86         |  x86 ~x86      |  no **
>> |  **            |  no amd64 ~amd64     |  ~amd64        |  no
> 
>> 3) Apply package.stable settings if INTERSECTION contains only
>> stable keywords. For example, see the package.stable column in the
>> table above.
> 
> This algorithm better matches what I meant in my earlier posting, so
> +1 from me. (And if anyone has an ACCEPT_KEYWORDS value of "~amd64
> -amd64", they deserve any issues that may arise).
> 
> The only issue I have with it is that EFFECTIVE_KEYWORDS should be
> expanded to contain "*" if any stable keyword is present and "~*" if
> any unstable keyword is present (or "*" and "~*" in ACCEPT_KEYWORDS
> should be pre-expanded).

Yeah, I omitted * and ~* for brevity, and you've got the right idea.
-- 
Thanks,
Zac

Reply via email to