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
pgpAIxIUhiXdo.pgp
Description: PGP signature