On 10/07/2014 13:51, Stroller wrote:
> 
> On Thu, 10 July 2014, at 4:11 am, List Reader <gentooglel...@gmail.com> wrote:
>> ...
>> What does it mean to satisfy >=dev-python/chardet-2.2.1?
>>
>>
>> equery g =dev-python/chardet-2.2.1
>>
>> * Searching for chardet2.2.1 in dev-python ...
>>
>> * dependency graph for dev-python/chardet-2.2.1
>>  `--  dev-python/chardet-2.2.1  amd64 
>>     `--  dev-python/setuptools-2.2  (dev-python/setuptools) amd64
>>     [python_targets_python2_6(-)? python_targets_python2_7(-)?
>>     python_targets_python3_2(-)? python_targets_python3_3(-)?
>>     python_targets_python3_4(-)? python_targets_pypy(-)?
>>     -python_single_target_python2_6(-)
>>     -python_single_target_python2_7(-)
>>     -python_single_target_python3_2(-)
>>     -python_single_target_python3_3(-)
>>     -python_single_target_python3_4(-) -python_single_target_pypy(-)]
>>        `--  dev-lang/python-2.6.9  (>=dev-lang/python-2.6.8-r3)
>>      M[package.mask] 
>>         `--  dev-lang/python-2.7.6  (>=dev-lang/python-2.7.5-r2)
>>         amd64 
>>            `--  dev-lang/python-3.2.5-r3
>>            (>=dev-lang/python-3.2.5-r2) amd64 
>>               `--  dev-lang/python-3.3.3
>>               (>=dev-lang/python-3.3.2-r2) amd64 
>>                  `--  dev-lang/python-3.4.1  (dev-lang/python) ~amd64 
>> … 
>>
>> This is getting messy, I didn't think I would need so many unstable
>> packages. 
> 
> I'm very confused, too. 
> 
> =dev-python/chardet-2.2.1 offers to emerge just fine on my system, but when I 
> try to emerge Blender I get a similar mess to you.
> 
> It seems to be related to this PYTHON_SINGLE_TARGET business.
> 
> I understand that PYTHON_TARGETS means "build for this version of Python" but 
> am not familiar with the single target part. 
> 
> Perhaps someone else can explain?


The python targets are an expanded USE which is usually set in the
profile but can be over-ridden in make.conf. My emerge --info shows:

PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3

As I understand it, PYTHON_TARGETS lists all the available python
versions that ebuilds may use. If an ebuild is coded to use one in the
list, then great and the build proceeds.

PYTHON_SINGLE_TARGET defines the python version an ebuild must use if it
only wants python and does not specify a version.

This all applies at build time so it's not quite the same thing as
"eselect python" which specifies what happens at *runtime*

The best way to maintain this is to let the profile do it (which is why
most folks don't have any of this in make.conf). You can over-ride the
profile but then the user must maintain the list[1].

If I do this:

PYTHON_TARGETS="python2_7 python3_3 python3_4" emerge -pv blender

then I get one last error about USE="gflags" for dev-cpp/glog, adding
that to package.use makes portage happy. SO I think the OP just needs to
add this to make.conf:

PYTHON_TARGETS="python2_7 python3_3 python3_4"
and then tweak package.use if necessary

> 
> Does this mean OP should have no other version of Python on his system, but 
> 3.4.x?

No, it means he needs to tell portage that 3.4 is available for ebuilds
to build against.
Confused? Yeah. me too.






[1] I recall a thread over a year ago where this was explained and I
found the quote I remember:

If you are running a modern system with only Python 2.7 & 3.2 installed,
then you don't have to do anything. The defaults will simply fit you,
and let you keep your system up-to-date when new Python versions are
deployed. However, if you'd like to use another set of Python
implementations, you will need to set PYTHON_TARGETS in your make.conf
file appropriately.

It's referenced here:
https://forums.gentoo.org/viewtopic-t-946824-start-0.html


To be honest, I'm starting to find Gentoo is being too bloody clever for
it's own good, introducing complexity in an effort to get portage to
"always do the right thing", whatever "right" may be in this context.

We have this python stuff, we have subslots (together with the portage
output from 6 months ago that no living person ever understood) and
recently portage is starting to make weird choices for people due to the
use of
|| ( )
in ebuilds.


-- 
Alan McKinnon
alan.mckin...@gmail.com


Reply via email to