Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 488004

Summary: portage cannot resolve USE-deps correctly if they are fullfiled by different SLOTs
Product: Portage Development Reporter: Justin Lecher (RETIRED) <jlec>
Component: CoreAssignee: Portage team <dev-portage>
Status: RESOLVED INVALID    
Severity: normal CC: python
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Justin Lecher (RETIRED) gentoo-dev 2013-10-14 11:36:07 UTC
jinja-2.7:0 has support for py 2.6/2.7/3.3
jinja:compat for py 3.2

if both are installed the following shouldn't happen:

[blocks b      ] <dev-python/jinja-2.7:0 ("<dev-python/jinja-2.7:0" is blocking dev-python/jinja-2.6-r100)
[uninstall     ]  dev-python/jinja-2.6-r100:compat  USE="-doc -examples" PYTHON_TARGETS="python3_2" 
[ebuild     UD ]  dev-python/jinja-2.6-r2 [2.7.1] USE="-doc -examples" PYTHON_TARGETS="python2_7 python3_2%* -pypy2_0 -python2_6 -python3_3" 0 kB
Comment 1 Justin Lecher (RETIRED) gentoo-dev 2013-10-14 11:42:56 UTC
And even setting 

dev-python/jinja:0 -python_targets_python3_2

results in

The following USE changes are necessary to proceed:
 (see "package.use" in the portage(5) man page for more details)
# required by dev-python/ipython-1.0.0[notebook,-nbconvert]
# required by @selected
# required by @world (argument)
=dev-python/jinja-2.6-r2 python_targets_python3_2
Comment 2 Sebastian Luther (few) 2013-11-26 21:23:24 UTC
Is this still a problem. It looks like it does the right thing for me:

[ebuild     U ~] dev-python/ipython-1.0.0::gentoo [0.13.2::sage-on-gentoo] USE="notebook* qt4 smp wxwidgets -doc -emacs -examples -matplotlib -mongodb -nbconvert% -octave {-test}" PYTHON_TARGETS="python2_7 python3_2* -python2_6 -python3_3" 8,456 kB
[ebuild  NS    ]  dev-python/jinja-2.6-r100:compat [2.7:0] USE="-doc -examples" PYTHON_TARGETS="python3_2" 381 kB
[ebuild   R   ~]   dev-python/setuptools-1.1.6  PYTHON_TARGETS="python2_7 python3_2* -pypy2_0 -python2_6 -python3_3" 0 kB
[ebuild   R    ]   dev-python/markupsafe-0.15-r1  PYTHON_TARGETS="python2_7 python3_2* (-pypy2_0) -python2_6 (-python3_3) (-pypy1_9%) (-python2_5%) (-python3_1%)" 12 kB
[ebuild   R   ~]  dev-python/simplegeneric-0.8.1-r1  PYTHON_TARGETS="python2_7 python3_2* -pypy2_0 -python2_6 -python3_3 (-pypy1_9%) (-python2_5%) (-python3_1%)" 13 kB
[ebuild  N     ]  dev-libs/mathjax-2.2  USE="-doc -examples" 8,764 kB
[ebuild   R    ]  virtual/python-argparse-1  PYTHON_TARGETS="python2_7 python3_2* (-pypy2_0) -python2_6 (-python3_3) (-pypy1_9%) (-python2_5%) (-python3_1%)" 0 kB
[ebuild  N    ~]  www-servers/tornado-3.1.1  USE="-curl" PYTHON_TARGETS="python2_7 python3_2 -pypy2_0 -python2_6 -python3_3" 366 kB
[ebuild   R   ~]  dev-python/decorator-3.4.0-r1  PYTHON_TARGETS="python2_7 python3_2* -python2_6 -python3_3 (-python2_5%) (-python3_1%)" 30 kB
[ebuild   R    ]  dev-python/PyQt4-4.10.2  USE="X dbus declarative opengl svg webkit -debug -doc -examples -help -kde -multimedia -phonon -script -scripttools -sql -xmlpatterns" PYTHON_TARGETS="python2_7 python3_2* -python2_6 (-python3_3)" 0 kB
[ebuild   R    ]   dev-python/sip-4.14.7:0/10  USE="-debug -doc" PYTHON_TARGETS="python2_7 python3_2* -python2_6 (-python3_3)" 0 kB
[ebuild   R    ]   dev-python/dbus-python-1.2.0  USE="-doc -examples {-test}" PYTHON_TARGETS="python2_7 python3_2* -python2_6 (-python3_3)" 589 kB
[ebuild   R    ]  dev-python/pygments-1.6  USE="-doc {-test}" PYTHON_TARGETS="python2_7 python3_2* (-pypy2_0) -python2_6 (-python3_3) (-pypy1_9%) (-python2_5%) (-python3_1%)" 1,390 kB
[ebuild   R    ]  dev-python/pyparsing-2.0.1  USE="-doc -examples" PYTHON_TARGETS="python2_7 python3_2* -pypy2_0 -python2_6 -python3_3" 0 kB
[ebuild   R   ~]  dev-python/pyzmq-13.1.0  USE="-examples -green {-test}" PYTHON_TARGETS="python2_7 python3_2* -python2_6 -python3_3 (-python3_1%)" 820 kB
Comment 3 Mike Gilbert gentoo-dev 2013-11-26 21:38:59 UTC
(In reply to Sebastian Luther (few) from comment #2)

We modified the ebuild(s) which depend on jinja to split it into multiple dependency atoms.

Personally, I do not think this is a valid portage bug.
Comment 4 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2013-11-26 22:37:10 UTC
Yes, portage does exactly what it should do:

dev-python/jinja[...] should resolve to the newest available jinja package. Then USE-deps can applied on top of it.

Per the wording of PMS, 'py3.2(-)' dep means that PM is to assume 'off' when the flag ain't in IUSE. So portage correctly refuses the package.

Similarly, it says that 'py3.2' dep on a package is invalid when the flag ain't in IUSE. So if we used plain 'py3.2', portage would be allowed to bail out without even trying other versions.

There's no clear way of directly applying USE deps on multiple packages. If the case is uncommon, we just need to use proper || deps. if it is common, we should establish a virtual that does that.