Apparently, though unproven, at 02:30 on Thursday 19 May 2011, Dale did opine 
thusly:

> I have a quick question.  I sync'd a bit ago and noticed something a bit
> odd.  Here it is:
> 
> [ebuild     U *] sys-apps/portage-2.2.0_alpha34 [2.2.0_alpha33]
> USE="(ipc) -build -doc -epydoc -python2 -python3 (-selinux)"
> LINGUAS="-pl" 794 kB
> 
> I know portage needs python but check out the USE flags.  Both python2
> and python3 are disabled.  Shouldn't one of those be enabled?  Even
> better, shouldn't portage complain a bit about this before emerging?
> Thing is, I'm tempted to enable them both.  2.7 is currently being used
> but won't 3.1 be used eventually? Should I enable both or just emerge as
> is?
> 
> That is the unstable version so if this is a problem, I want to file a
> bug before someone else runs into this and ends up with a borked system.

The solution, as always, is in the ebuild. But first a clarification:

USE flags are NOT some scheme where support will or will not be built, or that 
other packages will be magically removed somehow. They are programming 
variables and are used as such. Inside the ebuild, the code looks at the flag 
and does something with it. Usually it does what you expect:

python_dep="python3? ( =dev-lang/python-3* )
        !python2? ( !python3? (
                build? ( || ( dev-lang/python:2.7 dev-lang/python:2.6 ) )
                !build? ( || ( dev-lang/python:2.7 dev-lang/python:2.6 >=dev-
lang/python-3 ) )
        ) )
        python2? ( !python3? ( || ( dev-lang/python:2.7 dev-lang/python:2.6 ) 
) )"

What that basically comes down to (2nd and 3rd cases swapped for clarity) is:

python3 is set = require python-3
python2 is set and python3 is not set = require python-2.6 or python-2.7
python2 is not set python3 is not set = require python-2.6 or python-2.7

Elsewhere is the ebuild you get stuff like this:

        if use python3; then
                python_set_active_version 3
        elif use python2; then
                python_set_active_version 2

Which basically means "always set active version to python-2.x regardless of 
anything else unless USE=python-3, in which case set the active version to 
python-3.

So, no bug here, nothing to see, move along folks.


-- 
alan dot mckinnon at gmail dot com

Reply via email to