On 04/27/2012 06:49 AM, Ulrich Mueller wrote:
>>>>>> On Fri, 27 Apr 2012, Chí-Thanh Christopher Nguyễn wrote:
>> Ciaran McCreesh schrieb:
>>>> * two new files in profile directories supported,
>>>> package.use.stable.mask and package.use.stable.force
>>>> * syntax is identical to package.use.mask and package.use.force
>>>> * meaning is identical to package.use.mask and package.use.force,
>>>> except that the resulting rules are ONLY applied iff a stable keyword
>>>> is in use
>>> This means that an ebuild will effectively change when moved from
>>> ~arch to arch. The point of ~arch is to test ebuilds before they're
>>> moved to arch.
>> I agree that the ~arch ebuilds should be tested in the same
>> configuration in which they will end up in arch. However in this
>> case, the possible configurations for arch are a subset of those in
>> ~arch, so the testing covers those too.
> Maybe I'm missing something, but what would happen when the newest
> version of a package is marked stable? The masked USE flags would
> become unavailable for everyone?
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
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 | 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.