On Fri, Nov 28, 2014 at 5:59 PM, Michał Górny <[email protected]> wrote: > Friends! > > The current state of python-single-r1 bothered me a lot lately, > and while _AxS_ did some neat improvements to the eclass, it's still > far from perfect solution to our users. > > The PYTHON_SINGLE_TARGET flags were added to make it easier to handle > single-impl packages that support both Python 2 & Python 3 which we > enable both in our profiles. It serves that purpose well -- however, it > isn't that good for single-impl packages that don't support the most > common choice of implementations. > > In particular, it has two major issues: > > 1. We have no sane, clear and universal way of providing users with > sensible defaults. It's always one trade-off over another. > > 2. Matching USE dependencies against multi-impl packages introduces > a second set of USE flags (PYTHON_TARGETS) that are semi-virtual. > Sadly, they introduce confusion and cause issues. > > > As far as the first issue is concerned, I think enough has been said > already. Right now we are fine-tuned for two cases: > > a. packages that support one impl only -- then they have a single > PYTHON_TARGET that's enabled by default, > > b. packages that support python2.7 -- then we have the profile default > of python2.7 for them. > > We have no good way of handling packages that support Python 3 only. >
I'm thinking we need to move the default PYTHON_SINGLE_TARGET setting from profiles to IUSE defaults computed in the eclass. What are the problems associated with that? > > The other issue comes into game in two cases I've seen: > > A. when we try to improve setting of PYTHON_SINGLE_TARGET, we force > the user to enable matching PYTHON_TARGET anyway -- so in the end > manual intervention is required, That would seem to be the exception rather than the norm. This would only happen if we somehow defaulted PYTHON_SINGLE_TARGET to something that is not in PYTHON_TARGETS by default. How would that ever happen? > B. they cause issues with REQUIRED_USE on other packages (like libpeas > that supports only one version of python2 and one of python3). Even > though PYTHON_SINGLE_TARGET results in effective use of a single impl, > PYTHON_TARGET USE-dep requests full PYTHON_TARGETS match on the dep. > Therefore, the user needs to disable other implementations anyway to > get the expected result. I don't understand this part. Can you please explain it? Maybe an example? > So, what are your thoughts? What are your solutions? I don't really understand the problems well enough to propose solutions. Hopefully answering my questions above will help with that.
