Gentoo Archives: gentoo-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Feature request: package.use.stable.mask and package.use.stable.force
Date: Fri, 27 Apr 2012 15:27:50
In Reply to: Re: [gentoo-dev] Feature request: package.use.stable.mask and package.use.stable.force by Ulrich Mueller
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 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. -- Thanks, Zac