On Tue, Aug 08, 2006 at 07:23:31AM +0100, Ciaran McCreesh wrote:
> On Mon, 7 Aug 2006 21:41:39 -0700 Brian Harring <[EMAIL PROTECTED]>
> wrote:
> | > The use.force feature is complementary to use.mask.  It's exactly 
> | > the same concept, but inverted.
> | 
> | And both files _should_ be implemented via use deps.
> 
> Huh? How?

forcing cxx on via package.mask for gcc
sys-devel/gcc[-cxx]

forcing it off
sys-devel/gcc[cxx]

Pretty simple.

*Full* implementation of use deps requires ability to flip on use 
flags as needed (whether to break soft cycles, or just implemented 
such that use deps force what they need), and requires *tracking* of 
the history of the toggling so that a

DEPEND="sys-devel/gcc[cxx] sys-devel/gcc[-cxx]"

results in unsolvable; granted, it's a contrived example, but in a 
large graph it *will* occur.

Getting it right is hard, but it's a requirement for any 
implementation that intends a nonsucky resolver- 'soft' (breakable) 
cycles exist already (unixodbc and qt is the classic example), the 
number of soft cycles will grow once use deps are available.

So... to be able to handle use deps fully, you have to track the 
flipping of it; to discern if a pkg is even usable, you have to pass 
it through the mask/unmask, which can do the 'imprinting' up front.

Using package.{un,}mask for use.force/package.use.mask doesn't 
actually require *fully* supporting use deps though; portage already 
supports it in a limited fashion via package.use and the 
package.use.mask patch zac stuffed in the other day.

Pretty much all it requires is just mangling his patches slightly so 
if it's a use atom, it gets shifted out into the new dicts he's trying 
to add to config.

Goes without saying there is a delay for support on this for (yet 
another) mangling of portage profile support to protect itself.

~harring

Attachment: pgpAIxIUhiXdo.pgp
Description: PGP signature

Reply via email to