On Tue, 11 Apr 2017 03:29:25 +0700 "Vadim A. Misbakh-Soloviov" <gen...@mva.name> wrote:
> The purpose of TARGETS is that package holds only that TARGETs that it was > tested to work against Targets are more than that. Targets also regulate compilation stage for concurrency. For instance: If you have 2 pythons. Imagine you have no TARGETS X depends on Y Now, X and Y both compile against both pythons. But you installed your packages like this: python 2.7 Y python 3.5 X Thus, when "Y" was installed, only python 2.7 could be an installation candidate, so it only installed against python 2.7 But now, "X" will compile against both python 2.7 and python 3.5, but horrors!... Python 3.5 doesn't have Y! Portage has no way of knowing this. introduce targets. install python 2.7 install Y with TARGETS='python2.7' install python 3.5 install X with TARGETS='python2.7' # no problem, because it doesn't try to compile against 3.5 But then you decide you wanted python 3.5 support after all TARGETS="python3.5" Install X X[python3.5] requires Y[python3.5] Portage recognizes Y doesn't have python3.5 , and forces the useflag change and a recompile before installing X with python3.5 THIS IS WHY WE HAVE THIS. The only reason this is "hell" is because users end up having to flip those toggles or set them globally, instead of portage intelligently auto-setting them on an as-needed basis. In essence, users have to micro-manage every portage decision, even though portage is making the decisions and the user is just bitching and rubber stamping it ;)
pgpfuaHBaWKOj.pgp
Description: OpenPGP digital signature