unsanctioned python 2.7 crusade

classic Classic list List threaded Threaded
41 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Thomas Deutschmann
On 2019-12-06 17:35, Mart Raudsepp wrote:
> I don't see anything wrong with the idea of p.masking it in case it
> could be causing problems for others (such as py2).

Sure, in *case* it *is* causing problems. ACK.

But so far nobody was able to provide any reasons. That's the thing
which drives me nuts...


--
Regards,
Thomas Deutschmann / Gentoo Linux Developer
C4DD 695F A713 8F24 2AA1 5638 5849 7EE5 1D5D 74A5


signature.asc (631 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Mike Gilbert-2
In reply to this post by Thomas Deutschmann
On Fri, Dec 6, 2019 at 11:12 AM Thomas Deutschmann <[hidden email]> wrote:

>
> On 2019-12-06 16:48, Mike Gilbert wrote:
> > It's not quite so simple as you make it sound. There really isn't a
> > viable way to defer removal of python2-only packages until we remove
> > dev-lang/python:2.7.
> >
> > An increasing number of python packages are dropping support for
> > python2 when upstream releases new versions. When this happens, we
> > really need to drop python2 support from all reverse dependencies as
> > well. Alternative strategies like slotting or compatibility packages
> > are a stopgap at best, and become a problem as soon as bugs are
> > reported or security issues pop up.
> >
> > Ripping out python2 support for all reverse dependencies of a core
> > package is rather daunting, and is likely to cause much more of an
> > uproar than the recent mask. Aaron is really tackling the low-hanging
> > fruit at this point: leaves on the depgraph.
>
> But what's the problem here? Why do you need to rip out Py2 support? PHP
> project is facing a similar situation with PHP 5.6, 7.0 and now 7.1
> becoming EOL. Sure, there are way more Python packages but could you
> explain why you can't do the same like we did? I.e. new versions of PHP
> PECL extension also dropped support for PHP versions which are EOL. When
> we bump these packages we just drop PHP versions which are no longer
> able to run these extensions. But we keep at least last version still
> supporting PHP version which is/become EOL until we finally get rid of
> this PHP version as a whole. For example, a lot of packages are now
> masked *with* dev-lang/php:5.6 because Gentoo will finally get rid of
> PHP 5.6 which is EOL since 2018-12-31. But we didn't break PHP 5.6 users
> by starting to remove PECL extension for this version while
> dev-lang/php:5.6 was still a thing...

That's going to cause a very confusing user-experience due to
conflicting PYTHON_TARGETS values on the various packages. It's also
going to cause users to have old/unsupported/buggy versions of various
random python packages depending on what set of reverse dependencies
they happen to have installed.

For example, lets say the next release of dev-python/example drops
support for python2, and also adds some new features and fixes some
bugs.

If the user has python2_7 enabled for any reverse dependency of
dev-python/example, Portage will be forced to do one of two things:

1. Keep the old version installed.
2. Emit a confusing error message to the user since the use-dependency
on dev-python/example[python_targets_python2_7] cannot be resolved
with the latest visible version.

Option 1 is bad because the user will be missing out on bug fixes and
new features. Option 2 will probably generate some bug reports that we
will have to close as CANTFIX.

It's also a giant pain in the butt for python maintainers since it
makes cleaning up old versions very error-prone. This may also be a
problem if the security team demands we remove it.

Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Thomas Deutschmann
On 2019-12-06 17:44, Mike Gilbert wrote:

> That's going to cause a very confusing user-experience due to
> conflicting PYTHON_TARGETS values on the various packages. It's also
> going to cause users to have old/unsupported/buggy versions of various
> random python packages depending on what set of reverse dependencies
> they happen to have installed.
>
> For example, lets say the next release of dev-python/example drops
> support for python2, and also adds some new features and fixes some
> bugs.
>
> If the user has python2_7 enabled for any reverse dependency of
> dev-python/example, Portage will be forced to do one of two things:
>
> 1. Keep the old version installed.
> 2. Emit a confusing error message to the user since the use-dependency
> on dev-python/example[python_targets_python2_7] cannot be resolved
> with the latest visible version.
I don't fully understand #2 to be honest but yes, you will be cut off
from latest version at some point. Same in PHP.

But from my POV you are trying to find a solution for a non-existent
problem: Keep in mind that *user* is in control of PYTHON_TARGETS
(PHP_TARGETS).

If we expect that our users should simply remove that mask locally
("OMG! It's just a package.mask!") we can assume that same user
understand consequences when sticking to targets not supported by newer
versions anymore.

Also, problem will automatically go away when time passes assuming more
and more packages will no longer have python_targets_python2_7. I.e.
user will automatically migrate to Py3 over time.

I still have no words for this decision breaking working Py 2 *only*
packages 150+ days in advance which don't cause any problems (and aside
USE=test case will never cause problems -- if pytest for example will
become a problem, dropping tests but keeping the package itself is also
an option, just saying).

Especially now that I adopted that package, no problem was really solved
and at some point we will have to discuss test dependencies for example.

So yeah, even after 24h I still think this was a bad decision which
wasn't thought through to the end. An easy solution for a not yet
existing problem. Purely activism in a bad way. :/


> It's also a giant pain in the butt for python maintainers since it
> makes cleaning up old versions very error-prone. This may also be a
> problem if the security team demands we remove it.

We would never do that and you know that. The only thing we would ask
you to do is masking to inform user in case user isn't aware that
package is vulnerable. But more important: In that case you would have
your reason to mask affected dependencies (like PHP project did with PHP
5.6 and consumers).

Maybe someday one of those responsible will admit that this step was not
a thoughtful and good decision and promise not to do it that way again
and I'll get over it. Who knows. :)


--
Regards,
Thomas Deutschmann / Gentoo Linux Developer
C4DD 695F A713 8F24 2AA1 5638 5849 7EE5 1D5D 74A5


signature.asc (631 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Andreas Sturmlechner
On Friday, 6 December 2019 20:47:31 CET Thomas Deutschmann wrote:
> On 2019-12-06 17:44, Mike Gilbert wrote:
> > 1. Keep the old version installed.
> > 2. Emit a confusing error message to the user since the use-dependency
> > on dev-python/example[python_targets_python2_7] cannot be resolved
> > with the latest visible version.
>
> I don't fully understand #2 to be honest but yes, you will be cut off
> from latest version at some point. Same in PHP.

Considering that above statement, I would expect a bit more humility than the
following:

> Maybe someday one of those responsible will admit that this step was not
> a thoughtful and good decision and promise not to do it that way again
> and I'll get over it. Who knows. :)

Just so we're on the same page, a recent example of what some people
suggesting to keep py27 ad nauseam are asking users to deal with:



# emerge -uDpv @world

These are the packages that would be merged, in order:

Calculating dependencies... done!

Total: 0 packages, Size of downloads: 0 KiB

WARNING: One or more updates/rebuilds have been skipped due to a dependency
conflict:

dev-python/sphinx:0

  (dev-python/sphinx-2.0.1:0/0::gentoo, ebuild scheduled for merge) conflicts
with
    >=dev-python/
sphinx-1.5.3[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/sphinxcontrib-websupport-1.1.0:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                               
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/cython-0.29.4:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/flask-babelex-0.9.3:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/testtools-2.3.0:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/pytest-runner-4.2:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/flask-babel-0.11.2-r2:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    >=dev-python/
sphinx-1.3.1[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/recommonmark-0.5.0_pre20181012-r1:0/0::gentoo, installed)
                                                                                                                                                                                                                                 
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/testpath-0.3.1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/sphinx[python_targets_python2_7(-),-
python_single_target_pypy(-),-python_single_target_python2_7(-)] required by
(dev-python/backports-functools-lru-cache-1.4-r1:0/0::gentoo, installed)
                                                                                                                   
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/Babel-2.6.0:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/greenlet-0.4.15:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_python2_7(-),-
python_single_target_python3_5(-),-python_single_target_python3_6(-),-
python_single_target_python3_7(-)] required by (dev-python/flask-wtf-0.14.2-
r1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-)] required by (dev-python/
pexpect-4.2.1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                   
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_python2_7(-),-
python_single_target_python3_5(-),-python_single_target_python3_6(-),-
python_single_target_python3_7(-)] required by (dev-python/python-
sqlparse-0.2.4:0/0::gentoo, installed)
                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/pyopenssl-19.0.0:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/pyasn1-0.4.2:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/flask-login-0.4.1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/future-0.17.0:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    >=dev-python/
sphinx-1.3.1[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_python2_7(-),-
python_single_target_python3_5(-),-python_single_target_python3_6(-),-
python_single_target_python3_7(-)] required by (dev-python/pyxattr-0.6.0-
r1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                               
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/more-itertools-4.2.0-r1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/utidylib-0.3-r2:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/traitlets-4.3.2:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    >=dev-python/
sphinx-0.6[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/wtforms-2.2.1:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                             
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/numpydoc-0.9.1:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/virtualenv-16.0.0:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/rst-linker-1.11:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/nbformat-4.4.0:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_python2_7(-),-
python_single_target_python3_5(-),-python_single_target_python3_6(-),-
python_single_target_python3_7(-)] required by (dev-python/
cairocffi-0.8.0:0/0::gentoo, installed)
                                                                                                                                                                                                                                                       
    >=dev-python/sphinx-1.3.1-
r1[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/qtconsole-4.3.1:0/0::gentoo, installed)
                                                                                                                                                                                                                                     
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/ipyparallel-6.0.2-r1:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/jupyter_core-4.4.0:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/atomicwrites-1.1.5-r3:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/sphinxcontrib-github-alt-1.0:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/paramiko-2.4.2:0/0::gentoo, installed)
                                                                                                                                                                                                                         
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/pallets-sphinx-themes-1.1.2:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/
sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
python_single_target_pypy(-),-python_single_target_pypy3(-),-
python_single_target_python2_7(-),-python_single_target_python3_5(-),-
python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
by (dev-python/py-1.5.4:0/0::gentoo, installed)
                                                                                                                                                                                                                                                                                       
    dev-python/sphinx[python_targets_python2_7(-),-
python_single_target_pypy(-),-python_single_target_python2_7(-)] required by
(dev-python/futures-3.1.1:0/0::gentoo, installed)



Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Thomas Deutschmann
On 2019-12-06 21:10, Andreas Sturmlechner wrote:
> Just so we're on the same page, a recent example of what some people
> suggesting to keep py27 ad nauseam are asking users to deal with:
> [...]
> WARNING: One or more updates/rebuilds have been skipped due to a dependency
> conflict:

Yes, like said, at some point you cannot prevent that. Remember when I
bumped libvpx to v1.8.0 and people yelled at me because they are now
seeing that message all the time (If you are using gnome you probably
know the same msg which triggers for unicode stuff which I am also
responsible for) because I bumped that package but not everything
supports that version yet?

It's just a hint. Not a problem. If you don't understand that hint I
can't help. It doesn't force user interaction like a mask do.

If you understand the problem, you will locally mask >=libvpx-1.8 and
message will go away.

And again: If this will really solve problems, why is anyone allowed to
take over those package like I did for sabnzbd? If you are right and
this is really a problem for Gentoo I shouldn't be allowed to do that.
And *then* we would also have a reason to mask :-)


--
Regards,
Thomas Deutschmann / Gentoo Linux Developer
C4DD 695F A713 8F24 2AA1 5638 5849 7EE5 1D5D 74A5


signature.asc (631 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Michael 'veremitz' Everitt
In reply to this post by Andreas Sturmlechner
On 06/12/19 20:10, Andreas Sturmlechner wrote:

> On Friday, 6 December 2019 20:47:31 CET Thomas Deutschmann wrote:
>> On 2019-12-06 17:44, Mike Gilbert wrote:
>>> 1. Keep the old version installed.
>>> 2. Emit a confusing error message to the user since the use-dependency
>>> on dev-python/example[python_targets_python2_7] cannot be resolved
>>> with the latest visible version.
>> I don't fully understand #2 to be honest but yes, you will be cut off
>> from latest version at some point. Same in PHP.
> Considering that above statement, I would expect a bit more humility than the
> following:
>
>> Maybe someday one of those responsible will admit that this step was not
>> a thoughtful and good decision and promise not to do it that way again
>> and I'll get over it. Who knows. :)
> Just so we're on the same page, a recent example of what some people
> suggesting to keep py27 ad nauseam are asking users to deal with:
>
>
>
> # emerge -uDpv @world
>
> These are the packages that would be merged, in order:
>
> Calculating dependencies... done!
>
> Total: 0 packages, Size of downloads: 0 KiB
>
> WARNING: One or more updates/rebuilds have been skipped due to a dependency
> conflict:
>
> dev-python/sphinx:0
>
>   (dev-python/sphinx-2.0.1:0/0::gentoo, ebuild scheduled for merge) conflicts
> with
>     >=dev-python/
> sphinx-1.5.3[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/sphinxcontrib-websupport-1.1.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                                
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/cython-0.29.4:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/flask-babelex-0.9.3:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/testtools-2.3.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/pytest-runner-4.2:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/flask-babel-0.11.2-r2:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     >=dev-python/
> sphinx-1.3.1[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/recommonmark-0.5.0_pre20181012-r1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                  
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/testpath-0.3.1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/sphinx[python_targets_python2_7(-),-
> python_single_target_pypy(-),-python_single_target_python2_7(-)] required by
> (dev-python/backports-functools-lru-cache-1.4-r1:0/0::gentoo, installed)
>                                                                                                                    
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/Babel-2.6.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/greenlet-0.4.15:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_python2_7(-),-
> python_single_target_python3_5(-),-python_single_target_python3_6(-),-
> python_single_target_python3_7(-)] required by (dev-python/flask-wtf-0.14.2-
> r1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-)] required by (dev-python/
> pexpect-4.2.1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                    
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_python2_7(-),-
> python_single_target_python3_5(-),-python_single_target_python3_6(-),-
> python_single_target_python3_7(-)] required by (dev-python/python-
> sqlparse-0.2.4:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/pyopenssl-19.0.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/pyasn1-0.4.2:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/flask-login-0.4.1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/future-0.17.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     >=dev-python/
> sphinx-1.3.1[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_python2_7(-),-
> python_single_target_python3_5(-),-python_single_target_python3_6(-),-
> python_single_target_python3_7(-)] required by (dev-python/pyxattr-0.6.0-
> r1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/more-itertools-4.2.0-r1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/utidylib-0.3-r2:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/traitlets-4.3.2:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     >=dev-python/
> sphinx-0.6[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/wtforms-2.2.1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                              
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/numpydoc-0.9.1:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/virtualenv-16.0.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/rst-linker-1.11:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/nbformat-4.4.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_python2_7(-),-
> python_single_target_python3_5(-),-python_single_target_python3_6(-),-
> python_single_target_python3_7(-)] required by (dev-python/
> cairocffi-0.8.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                        
>     >=dev-python/sphinx-1.3.1-
> r1[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/qtconsole-4.3.1:0/0::gentoo, installed)
>                                                                                                                                                                                                                                      
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/ipyparallel-6.0.2-r1:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/jupyter_core-4.4.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/atomicwrites-1.1.5-r3:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/sphinxcontrib-github-alt-1.0:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/paramiko-2.4.2:0/0::gentoo, installed)
>                                                                                                                                                                                                                          
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/pallets-sphinx-themes-1.1.2:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/
> sphinx[python_targets_python2_7(-),python_targets_python3_6(-),-
> python_single_target_pypy(-),-python_single_target_pypy3(-),-
> python_single_target_python2_7(-),-python_single_target_python3_5(-),-
> python_single_target_python3_6(-),-python_single_target_python3_7(-)] required
> by (dev-python/py-1.5.4:0/0::gentoo, installed)
>                                                                                                                                                                                                                                                                                        
>     dev-python/sphinx[python_targets_python2_7(-),-
> python_single_target_pypy(-),-python_single_target_python2_7(-)] required by
> (dev-python/futures-3.1.1:0/0::gentoo, installed)
>
>
>
You write like this is some unknown/undesirable failure mode of portage,
when, in fact, just like any change of PYTHON_TARGETS or
PYTHON_SINGLE_TARGET throws portage into a complete frenzy of confusion
because of the tight knitting caused by the python eclasses.

Now, some proposals have been made to better tie-down of the latter
situation here on this same list .. but let's just get over the fact that
python interpreters and libraries are just going to be a bit messier for a
few years, and we'll have to be a bit more careful when specifying
dependencies whilst this transition period washes out.

I really don't understand from anyone's point of view, the level of
hysteria being whipped up over this.


signature.asc (817 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Kent Fredric-2
In reply to this post by Andreas Sturmlechner
On Fri, 06 Dec 2019 21:10:12 +0100
Andreas Sturmlechner <[hidden email]> wrote:

> Calculating dependencies... done!
>
> Total: 0 packages, Size of downloads: 0 KiB
>
> WARNING: One or more updates/rebuilds have been skipped due to a
> dependency conflict:
>
> dev-python/sphinx:0
>
>   (dev-python/sphinx-2.0.1:0/0::gentoo, ebuild scheduled for merge)
> conflicts with

This IME is more an argument that "portage is shit", not so much an
argument that "we need to nuke old pythons"

If this problem was a valid impetus for this removal, we'd have banned
PYTHON_TARGETS entirely a long time ago, and we'd have culled literally
everything that doesn't work on the latest python.

But I don't favour that outcome at all.

I'd rather favour an outcome where portage responds to this scenario in
a useful way that makes coherent sense to users.




attachment0 (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Alexis Ballier-2
In reply to this post by Thomas Deutschmann
On Fri, 2019-12-06 at 21:28 +0100, Thomas Deutschmann wrote:

> On 2019-12-06 21:10, Andreas Sturmlechner wrote:
> > Just so we're on the same page, a recent example of what some
> > people
> > suggesting to keep py27 ad nauseam are asking users to deal with:
> > [...]
> > WARNING: One or more updates/rebuilds have been skipped due to a
> > dependency
> > conflict:
>
> Yes, like said, at some point you cannot prevent that. Remember when
> I
> bumped libvpx to v1.8.0 and people yelled at me because they are now
> seeing that message all the time (If you are using gnome you probably
> know the same msg which triggers for unicode stuff which I am also
> responsible for) because I bumped that package but not everything
> supports that version yet?


For having maintained packages that often have this issue for years, I
must say this is a very bad idea: You are asking (or doing yourself)
consumer packages to have < deps on your package. This falsely gives
the impression that the non-latest version is still maintained. This
also makes removing this old version very error prone (we do have tools
to check for that but those are not in the standard workflow). Not sure
how portage handles this, but negative deps (<, =, ! & co) are much
harder to solve than purely positive ones -- PM probably uses some
heuristics but then this has some limitations and if the number of such
deps grows too much it may fail to solve them or do the right thing.

I think it is a much better way to package.mask the newest version of
your lib until all consumers work with it, or those that don't are
masked. This is how we handled such transitions before portage improved
its handling of negative deps and is IMHO still better.


Alexis.


Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Joshua Kinard-2
In reply to this post by Rich Freeman
On 12/5/2019 09:24, Rich Freeman wrote:

> On Thu, Dec 5, 2019 at 8:59 AM Jason A. Donenfeld <[hidden email]> wrote:
>>
>> It's quite another to mask random packages that have USE flags to
>> optionally support whatever python 2.7 library. If you're going to
>> last rites these, talk with the maintainer first, and only then, send
>> emails one at a time. Doing that en masse isn't appropriate.
>
> ++ - I have no idea if that happened.  For anything USE-controlled it
> would make more sense to file a bug or mask the package-flag combo
> itself.
>
>>
>> On another topic, I'd prefer for python 2.7 not to be removed from
>> gentoo. Tons of code still uses it.
>>
>
> I'm sure a million people would share that preference.  I'm not sure
> what the upstream/security status is of 2.7.  Obviously to keep it
> around it would need to be reasonably secure, and somebody within
> Gentoo would have to want to maintain it.  That's basically the
> criteria for keeping anything like this around.  If somebody stepped
> up and said "I'm maintaining 2.7 and here is why it will remain
> secure..." I doubt they'd get a lot of resistance.
>

I'm late to the party as usual.  Seems upstream plans a final 2.7.18
security update in April of 2020, then they will consider the 2.7 branch
EOL.  They say most of these updates were done in 2019, and so are still
technically sticking to their mantra of no more updates after 01/01/2020.

PEP 373 covers this:
https://www.python.org/dev/peps/pep-0373/#release-schedule

"""
Planned future release dates:

    2.7.18 code freeze January, 2020
    2.7.18 release candidate early April, 2020
    2.7.18 mid-April, 2020
"""

IMHO, I think we should retain 2.7.x compatibility for 1 year AFTER the
release of 2.7.18.  This provides some time for people to transition systems
off of 2.7-dependent packages.

It might be worthwhile to treat the removal of Python-2.7 from the tree in
the same manner as an EAPI deprecation and removal, given how ingrained it
is due to its longevity.  That will minimize the whiplash-effect of emerge
complaining about slot conflicts and dependency conflicts.  Like I just ran
into w/ setuptools-45.0.0.0's release.

--
Joshua Kinard
Gentoo/MIPS
[hidden email]
rsa6144/5C63F4E3F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

"The past tempts us, the present confuses us, the future frightens us.  And
our lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic

Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

David Seifert
On Sun, 2020-01-12 at 17:07 -0500, Joshua Kinard wrote:

> On 12/5/2019 09:24, Rich Freeman wrote:
> > On Thu, Dec 5, 2019 at 8:59 AM Jason A. Donenfeld <[hidden email]
> > > wrote:
> > > It's quite another to mask random packages that have USE flags to
> > > optionally support whatever python 2.7 library. If you're going
> > > to
> > > last rites these, talk with the maintainer first, and only then,
> > > send
> > > emails one at a time. Doing that en masse isn't appropriate.
> >
> > ++ - I have no idea if that happened.  For anything USE-controlled
> > it
> > would make more sense to file a bug or mask the package-flag combo
> > itself.
> >
> > > On another topic, I'd prefer for python 2.7 not to be removed
> > > from
> > > gentoo. Tons of code still uses it.
> > >
> >
> > I'm sure a million people would share that preference.  I'm not
> > sure
> > what the upstream/security status is of 2.7.  Obviously to keep it
> > around it would need to be reasonably secure, and somebody within
> > Gentoo would have to want to maintain it.  That's basically the
> > criteria for keeping anything like this around.  If somebody
> > stepped
> > up and said "I'm maintaining 2.7 and here is why it will remain
> > secure..." I doubt they'd get a lot of resistance.
> >
>
> I'm late to the party as usual.  Seems upstream plans a final 2.7.18
> security update in April of 2020, then they will consider the 2.7
> branch
> EOL.  They say most of these updates were done in 2019, and so are
> still
> technically sticking to their mantra of no more updates after
> 01/01/2020.
>
> PEP 373 covers this:
> https://www.python.org/dev/peps/pep-0373/#release-schedule
>
> """
> Planned future release dates:
>
>     2.7.18 code freeze January, 2020
>     2.7.18 release candidate early April, 2020
>     2.7.18 mid-April, 2020
> """
>
> IMHO, I think we should retain 2.7.x compatibility for 1 year AFTER
> the
> release of 2.7.18.  This provides some time for people to transition
> systems
> off of 2.7-dependent packages.
>
> It might be worthwhile to treat the removal of Python-2.7 from the
> tree in
> the same manner as an EAPI deprecation and removal, given how
> ingrained it
> is due to its longevity.  That will minimize the whiplash-effect of
> emerge
> complaining about slot conflicts and dependency conflicts.  Like I
> just ran
> into w/ setuptools-45.0.0.0's release.
>

Thanks for volunteering to help us manage the ton of packages that have
dropped py2 in the mean time. I wasn't aware you were part of the
python team, but I must have been mistaken!


Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Joshua Kinard-2
On 1/12/2020 17:17, David Seifert wrote:

> On Sun, 2020-01-12 at 17:07 -0500, Joshua Kinard wrote:
>> On 12/5/2019 09:24, Rich Freeman wrote:
>>> On Thu, Dec 5, 2019 at 8:59 AM Jason A. Donenfeld <[hidden email]
>>>> wrote:
>>>> It's quite another to mask random packages that have USE flags to
>>>> optionally support whatever python 2.7 library. If you're going
>>>> to
>>>> last rites these, talk with the maintainer first, and only then,
>>>> send
>>>> emails one at a time. Doing that en masse isn't appropriate.
>>>
>>> ++ - I have no idea if that happened.  For anything USE-controlled
>>> it
>>> would make more sense to file a bug or mask the package-flag combo
>>> itself.
>>>
>>>> On another topic, I'd prefer for python 2.7 not to be removed
>>>> from
>>>> gentoo. Tons of code still uses it.
>>>>
>>>
>>> I'm sure a million people would share that preference.  I'm not
>>> sure
>>> what the upstream/security status is of 2.7.  Obviously to keep it
>>> around it would need to be reasonably secure, and somebody within
>>> Gentoo would have to want to maintain it.  That's basically the
>>> criteria for keeping anything like this around.  If somebody
>>> stepped
>>> up and said "I'm maintaining 2.7 and here is why it will remain
>>> secure..." I doubt they'd get a lot of resistance.
>>>
>>
>> I'm late to the party as usual.  Seems upstream plans a final 2.7.18
>> security update in April of 2020, then they will consider the 2.7
>> branch
>> EOL.  They say most of these updates were done in 2019, and so are
>> still
>> technically sticking to their mantra of no more updates after
>> 01/01/2020.
>>
>> PEP 373 covers this:
>> https://www.python.org/dev/peps/pep-0373/#release-schedule
>>
>> """
>> Planned future release dates:
>>
>>     2.7.18 code freeze January, 2020
>>     2.7.18 release candidate early April, 2020
>>     2.7.18 mid-April, 2020
>> """
>>
>> IMHO, I think we should retain 2.7.x compatibility for 1 year AFTER
>> the
>> release of 2.7.18.  This provides some time for people to transition
>> systems
>> off of 2.7-dependent packages.
>>
>> It might be worthwhile to treat the removal of Python-2.7 from the
>> tree in
>> the same manner as an EAPI deprecation and removal, given how
>> ingrained it
>> is due to its longevity.  That will minimize the whiplash-effect of
>> emerge
>> complaining about slot conflicts and dependency conflicts.  Like I
>> just ran
>> into w/ setuptools-45.0.0.0's release.
>>
>
> Thanks for volunteering to help us manage the ton of packages that have
> dropped py2 in the mean time. I wasn't aware you were part of the
> python team, but I must have been mistaken!

I'm not, heh.  But I have noticed the increasing difficulty of getting
emerge to do clean updates recently because of these removals, especially
when you go several weeks between --sync updates on a machine.  The status
of py2 removal does not seem to have been communicated really well, nor any
kind of plan agreed upon, like we've done w/ the EAPI removal.

If I had more time outside of work, I'd love to help.  But it's a struggle
enough right now to keep my systems ~arch updated, especially since my MIPS
boxes aren't exactly speed demons.  Right now, I'm just suggesting that
maybe we should apply the brakes a little bit and try to coordinate how to
remove py2 completely, rather than the way it's being done now.

--
Joshua Kinard
Gentoo/MIPS
[hidden email]
rsa6144/5C63F4E3F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

"The past tempts us, the present confuses us, the future frightens us.  And
our lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic

Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Andreas Sturmlechner
In reply to this post by Joshua Kinard-2
On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
> It might be worthwhile to treat the removal of Python-2.7 from the tree in
> the same manner as an EAPI deprecation and removal, given how ingrained it
> is due to its longevity.  That will minimize the whiplash-effect of emerge
> complaining about slot conflicts and dependency conflicts.  Like I just ran
> into w/ setuptools-45.0.0.0's release.

So, no packaging of >=setuptools-45.0.0 until the end of 2020? Do you want to
freeze all python libs that upstreams are dropping py27 support from?

signature.asc (631 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Joshua Kinard-2
On 1/12/2020 17:32, Andreas Sturmlechner wrote:

> On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
>> It might be worthwhile to treat the removal of Python-2.7 from the tree in
>> the same manner as an EAPI deprecation and removal, given how ingrained it
>> is due to its longevity.  That will minimize the whiplash-effect of emerge
>> complaining about slot conflicts and dependency conflicts.  Like I just ran
>> into w/ setuptools-45.0.0.0's release.
>
> So, no packaging of >=setuptools-45.0.0 until the end of 2020? Do you want to
> freeze all python libs that upstreams are dropping py27 support from?
>

Not saying not to package it.  Right now, the issue seems to be it causes
dependency conflicts in emerge's depgraph parsing when PYTHON_TARGETS
includes python2_7 support.  Remove that and stick with python3_* only, then
other packages that need python2_7 will whine.

Did setuptools-45.0.0 remove all python2 support?  I looked at the commit
log, and it's only the title that any meaningful hint that it may have,
"dev-python/setuptools: Bump to 45.0.0 (py3 only)".  If it did, then that
change is the right change, but anyone with a userland that has a mix of
python2 and python3 is going to have difficulty getting that update to merge
in, so I really can't go higher than setuptools-44.0.0 for the time being.

--
Joshua Kinard
Gentoo/MIPS
[hidden email]
rsa6144/5C63F4E3F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

"The past tempts us, the present confuses us, the future frightens us.  And
our lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic

Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

David Seifert
On Sun, 2020-01-12 at 17:43 -0500, Joshua Kinard wrote:

> On 1/12/2020 17:32, Andreas Sturmlechner wrote:
> > On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
> > > It might be worthwhile to treat the removal of Python-2.7 from
> > > the tree in
> > > the same manner as an EAPI deprecation and removal, given how
> > > ingrained it
> > > is due to its longevity.  That will minimize the whiplash-effect
> > > of emerge
> > > complaining about slot conflicts and dependency conflicts.  Like
> > > I just ran
> > > into w/ setuptools-45.0.0.0's release.
> >
> > So, no packaging of >=setuptools-45.0.0 until the end of 2020? Do
> > you want to
> > freeze all python libs that upstreams are dropping py27 support
> > from?
> >
>
> Not saying not to package it.  Right now, the issue seems to be it
> causes
> dependency conflicts in emerge's depgraph parsing when PYTHON_TARGETS
> includes python2_7 support.  Remove that and stick with python3_*
> only, then
> other packages that need python2_7 will whine.
>
> Did setuptools-45.0.0 remove all python2 support?  I looked at the
> commit
> log, and it's only the title that any meaningful hint that it may
> have,
> "dev-python/setuptools: Bump to 45.0.0 (py3 only)".  If it did, then
> that
> change is the right change, but anyone with a userland that has a mix
> of
> python2 and python3 is going to have difficulty getting that update
> to merge
> in, so I really can't go higher than setuptools-44.0.0 for the time
> being.
>

https://setuptools.readthedocs.io/en/latest/history.html#v45-0-0


Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Joshua Kinard-2
On 1/12/2020 17:46, David Seifert wrote:

> On Sun, 2020-01-12 at 17:43 -0500, Joshua Kinard wrote:
>> On 1/12/2020 17:32, Andreas Sturmlechner wrote:
>>> On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
>>>> It might be worthwhile to treat the removal of Python-2.7 from
>>>> the tree in
>>>> the same manner as an EAPI deprecation and removal, given how
>>>> ingrained it
>>>> is due to its longevity.  That will minimize the whiplash-effect
>>>> of emerge
>>>> complaining about slot conflicts and dependency conflicts.  Like
>>>> I just ran
>>>> into w/ setuptools-45.0.0.0's release.
>>>
>>> So, no packaging of >=setuptools-45.0.0 until the end of 2020? Do
>>> you want to
>>> freeze all python libs that upstreams are dropping py27 support
>>> from?
>>>
>>
>> Not saying not to package it.  Right now, the issue seems to be it
>> causes
>> dependency conflicts in emerge's depgraph parsing when PYTHON_TARGETS
>> includes python2_7 support.  Remove that and stick with python3_*
>> only, then
>> other packages that need python2_7 will whine.
>>
>> Did setuptools-45.0.0 remove all python2 support?  I looked at the
>> commit
>> log, and it's only the title that any meaningful hint that it may
>> have,
>> "dev-python/setuptools: Bump to 45.0.0 (py3 only)".  If it did, then
>> that
>> change is the right change, but anyone with a userland that has a mix
>> of
>> python2 and python3 is going to have difficulty getting that update
>> to merge
>> in, so I really can't go higher than setuptools-44.0.0 for the time
>> being.
>>
>
> https://setuptools.readthedocs.io/en/latest/history.html#v45-0-0

At least you didn't squirrel that behind a lmgtfy link </smirk>

In any event, it's clear the tree does not seem set up real well to handle
the random removal or deprecation of python2 support.  And considering
python2.7 isn't dead //yet//, I have to question the wisdom of removing
packages that still support 2.7, and also wonder if there's a way to be more
graceful in handling updates to packages whose upstream decides to remove
python2 support.

Or we can just continue down the current Mad Max methodology and leave it to
every developer for themselves.

--
Joshua Kinard
Gentoo/MIPS
[hidden email]
rsa6144/5C63F4E3F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

"The past tempts us, the present confuses us, the future frightens us.  And
our lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic

Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

David Seifert
On Sun, 2020-01-12 at 17:55 -0500, Joshua Kinard wrote:

> On 1/12/2020 17:46, David Seifert wrote:
> > On Sun, 2020-01-12 at 17:43 -0500, Joshua Kinard wrote:
> > > On 1/12/2020 17:32, Andreas Sturmlechner wrote:
> > > > On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
> > > > > It might be worthwhile to treat the removal of Python-2.7
> > > > > from
> > > > > the tree in
> > > > > the same manner as an EAPI deprecation and removal, given how
> > > > > ingrained it
> > > > > is due to its longevity.  That will minimize the whiplash-
> > > > > effect
> > > > > of emerge
> > > > > complaining about slot conflicts and dependency
> > > > > conflicts.  Like
> > > > > I just ran
> > > > > into w/ setuptools-45.0.0.0's release.
> > > >
> > > > So, no packaging of >=setuptools-45.0.0 until the end of 2020?
> > > > Do
> > > > you want to
> > > > freeze all python libs that upstreams are dropping py27 support
> > > > from?
> > > >
> > >
> > > Not saying not to package it.  Right now, the issue seems to be
> > > it
> > > causes
> > > dependency conflicts in emerge's depgraph parsing when
> > > PYTHON_TARGETS
> > > includes python2_7 support.  Remove that and stick with python3_*
> > > only, then
> > > other packages that need python2_7 will whine.
> > >
> > > Did setuptools-45.0.0 remove all python2 support?  I looked at
> > > the
> > > commit
> > > log, and it's only the title that any meaningful hint that it may
> > > have,
> > > "dev-python/setuptools: Bump to 45.0.0 (py3 only)".  If it did,
> > > then
> > > that
> > > change is the right change, but anyone with a userland that has a
> > > mix
> > > of
> > > python2 and python3 is going to have difficulty getting that
> > > update
> > > to merge
> > > in, so I really can't go higher than setuptools-44.0.0 for the
> > > time
> > > being.
> > >
> >
> > https://setuptools.readthedocs.io/en/latest/history.html#v45-0-0
>
> At least you didn't squirrel that behind a lmgtfy link </smirk>
>
> In any event, it's clear the tree does not seem set up real well to
> handle
> the random removal or deprecation of python2 support.  And
> considering
> python2.7 isn't dead //yet//, I have to question the wisdom of
> removing
> packages that still support 2.7, and also wonder if there's a way to
> be more
> graceful in handling updates to packages whose upstream decides to
> remove
> python2 support.
>
> Or we can just continue down the current Mad Max methodology and
> leave it to
> every developer for themselves.
>

Or - you know - you could help? Talk is cheap, gracefully removing py2
from the tree is the hard part. A quick grep tells me we have 4388
ebuilds in the tree with python_targets_python2_7 in IUSE. Have fun
devising a plan (and then doing the actual work). Pro-tip: "Don't
remove py2" is not an actual plan when many important core dependencies
have started removing py2 already.


Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

William Hubbs
On Mon, Jan 13, 2020 at 12:17:36AM +0100, David Seifert wrote:

> On Sun, 2020-01-12 at 17:55 -0500, Joshua Kinard wrote:
> > On 1/12/2020 17:46, David Seifert wrote:
> > > On Sun, 2020-01-12 at 17:43 -0500, Joshua Kinard wrote:
> > > > On 1/12/2020 17:32, Andreas Sturmlechner wrote:
> > > > > On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
> > > > > > It might be worthwhile to treat the removal of Python-2.7
> > > > > > from
> > > > > > the tree in
> > > > > > the same manner as an EAPI deprecation and removal, given how
> > > > > > ingrained it
> > > > > > is due to its longevity.  That will minimize the whiplash-
> > > > > > effect
> > > > > > of emerge
> > > > > > complaining about slot conflicts and dependency
> > > > > > conflicts.  Like
> > > > > > I just ran
> > > > > > into w/ setuptools-45.0.0.0's release.
> > > > >
> > > > > So, no packaging of >=setuptools-45.0.0 until the end of 2020?
> > > > > Do
> > > > > you want to
> > > > > freeze all python libs that upstreams are dropping py27 support
> > > > > from?
> > > > >
> > > >
> > > > Not saying not to package it.  Right now, the issue seems to be
> > > > it
> > > > causes
> > > > dependency conflicts in emerge's depgraph parsing when
> > > > PYTHON_TARGETS
> > > > includes python2_7 support.  Remove that and stick with python3_*
> > > > only, then
> > > > other packages that need python2_7 will whine.
> > > >
> > > > Did setuptools-45.0.0 remove all python2 support?  I looked at
> > > > the
> > > > commit
> > > > log, and it's only the title that any meaningful hint that it may
> > > > have,
> > > > "dev-python/setuptools: Bump to 45.0.0 (py3 only)".  If it did,
> > > > then
> > > > that
> > > > change is the right change, but anyone with a userland that has a
> > > > mix
> > > > of
> > > > python2 and python3 is going to have difficulty getting that
> > > > update
> > > > to merge
> > > > in, so I really can't go higher than setuptools-44.0.0 for the
> > > > time
> > > > being.
> > > >
> > >
> > > https://setuptools.readthedocs.io/en/latest/history.html#v45-0-0
> >
> > At least you didn't squirrel that behind a lmgtfy link </smirk>
> >
> > In any event, it's clear the tree does not seem set up real well to
> > handle
> > the random removal or deprecation of python2 support.  And
> > considering
> > python2.7 isn't dead //yet//, I have to question the wisdom of
> > removing
> > packages that still support 2.7, and also wonder if there's a way to
> > be more
> > graceful in handling updates to packages whose upstream decides to
> > remove
> > python2 support.
> >
> > Or we can just continue down the current Mad Max methodology and
> > leave it to
> > every developer for themselves.
> >
>
> Or - you know - you could help? Talk is cheap, gracefully removing py2
> from the tree is the hard part. A quick grep tells me we have 4388
> ebuilds in the tree with python_targets_python2_7 in IUSE. Have fun
> devising a plan (and then doing the actual work). Pro-tip: "Don't
> remove py2" is not an actual plan when many important core dependencies
> have started removing py2 already.
Joshua and all, I am not on the python team either, but I want to drop
this link here for reference in case you haven't seen it.

https://python3statement.org

tl;dr: python 2.7 was actually deprecated in 2015 with support extended
to 2020-01-01 so folks would have time to transition off of it. All of
the upstreams on that list will be dropping support for python 2.7 this
year if they haven't already done so.

Given that, I think it is going to be extremely difficult to keep py 2.7
in the main tree.

William


signature.asc (201 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Joshua Kinard-2
On 1/12/2020 19:21, William Hubbs wrote:

> On Mon, Jan 13, 2020 at 12:17:36AM +0100, David Seifert wrote:
>> On Sun, 2020-01-12 at 17:55 -0500, Joshua Kinard wrote:
>>> On 1/12/2020 17:46, David Seifert wrote:
>>>> On Sun, 2020-01-12 at 17:43 -0500, Joshua Kinard wrote:
>>>>> On 1/12/2020 17:32, Andreas Sturmlechner wrote:
>>>>>> On Sonntag, 12. Januar 2020 23:07:24 CET Joshua Kinard wrote:
>>>>>>> It might be worthwhile to treat the removal of Python-2.7
>>>>>>> from
>>>>>>> the tree in
>>>>>>> the same manner as an EAPI deprecation and removal, given how
>>>>>>> ingrained it
>>>>>>> is due to its longevity.  That will minimize the whiplash-
>>>>>>> effect
>>>>>>> of emerge
>>>>>>> complaining about slot conflicts and dependency
>>>>>>> conflicts.  Like
>>>>>>> I just ran
>>>>>>> into w/ setuptools-45.0.0.0's release.
>>>>>>
>>>>>> So, no packaging of >=setuptools-45.0.0 until the end of 2020?
>>>>>> Do
>>>>>> you want to
>>>>>> freeze all python libs that upstreams are dropping py27 support
>>>>>> from?
>>>>>>
>>>>>
>>>>> Not saying not to package it.  Right now, the issue seems to be
>>>>> it
>>>>> causes
>>>>> dependency conflicts in emerge's depgraph parsing when
>>>>> PYTHON_TARGETS
>>>>> includes python2_7 support.  Remove that and stick with python3_*
>>>>> only, then
>>>>> other packages that need python2_7 will whine.
>>>>>
>>>>> Did setuptools-45.0.0 remove all python2 support?  I looked at
>>>>> the
>>>>> commit
>>>>> log, and it's only the title that any meaningful hint that it may
>>>>> have,
>>>>> "dev-python/setuptools: Bump to 45.0.0 (py3 only)".  If it did,
>>>>> then
>>>>> that
>>>>> change is the right change, but anyone with a userland that has a
>>>>> mix
>>>>> of
>>>>> python2 and python3 is going to have difficulty getting that
>>>>> update
>>>>> to merge
>>>>> in, so I really can't go higher than setuptools-44.0.0 for the
>>>>> time
>>>>> being.
>>>>>
>>>>
>>>> https://setuptools.readthedocs.io/en/latest/history.html#v45-0-0
>>>
>>> At least you didn't squirrel that behind a lmgtfy link </smirk>
>>>
>>> In any event, it's clear the tree does not seem set up real well to
>>> handle
>>> the random removal or deprecation of python2 support.  And
>>> considering
>>> python2.7 isn't dead //yet//, I have to question the wisdom of
>>> removing
>>> packages that still support 2.7, and also wonder if there's a way to
>>> be more
>>> graceful in handling updates to packages whose upstream decides to
>>> remove
>>> python2 support.
>>>
>>> Or we can just continue down the current Mad Max methodology and
>>> leave it to
>>> every developer for themselves.
>>>
>>
>> Or - you know - you could help? Talk is cheap, gracefully removing py2
>> from the tree is the hard part. A quick grep tells me we have 4388
>> ebuilds in the tree with python_targets_python2_7 in IUSE. Have fun
>> devising a plan (and then doing the actual work). Pro-tip: "Don't
>> remove py2" is not an actual plan when many important core dependencies
>> have started removing py2 already.
>
> Joshua and all, I am not on the python team either, but I want to drop
> this link here for reference in case you haven't seen it.
>
> https://python3statement.org
>
> tl;dr: python 2.7 was actually deprecated in 2015 with support extended
> to 2020-01-01 so folks would have time to transition off of it. All of
> the upstreams on that list will be dropping support for python 2.7 this
> year if they haven't already done so.
>
> Given that, I think it is going to be extremely difficult to keep py 2.7
> in the main tree.
>
> William

That as it may be, I'm generally of the opinion that as long as there are
still new releases, we should support it.  Once the upstream releases stop,
then remove it.  For a normal package, this would be a complete non-issue,
but Python is hardly a normal package.  That said, if we don't have the
manpower or the desire to maintain it, then I don't see a problem with
removing it.

I just wish emerge was better at handling the resulting slot/dependency
conflicts that are arising as some packages get pulled and others updated
with py3-only support.  I am working now to remove the remaining py2
packages from my systems and then rebuild the python packages to only handle
py3.  The MIPS box is going to take its sweet time on that, though, but cest
la vie...

--
Joshua Kinard
Gentoo/MIPS
[hidden email]
rsa6144/5C63F4E3F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

"The past tempts us, the present confuses us, the future frightens us.  And
our lives slip away, moment by moment, lost in that vast, terrible in-between."

--Emperor Turhan, Centauri Republic

Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Michał Górny-5
In reply to this post by Joshua Kinard-2
On Sun, 2020-01-12 at 17:07 -0500, Joshua Kinard wrote:

> I'm late to the party as usual.  Seems upstream plans a final 2.7.18
> security update in April of 2020, then they will consider the 2.7 branch
> EOL.  They say most of these updates were done in 2019, and so are still
> technically sticking to their mantra of no more updates after 01/01/2020.
>
> PEP 373 covers this:
> https://www.python.org/dev/peps/pep-0373/#release-schedule
>
> """
> Planned future release dates:
>
>     2.7.18 code freeze January, 2020
>     2.7.18 release candidate early April, 2020
>     2.7.18 mid-April, 2020
> """
>
> IMHO, I think we should retain 2.7.x compatibility for 1 year AFTER the
> release of 2.7.18.  This provides some time for people to transition systems
> off of 2.7-dependent packages.
>
> It might be worthwhile to treat the removal of Python-2.7 from the tree in
> the same manner as an EAPI deprecation and removal, given how ingrained it
> is due to its longevity.  That will minimize the whiplash-effect of emerge
> complaining about slot conflicts and dependency conflicts.  Like I just ran
> into w/ setuptools-45.0.0.0's release.
Joshua,

I understand that you don't do much Python ebuild work, or probably
Python development in general.  I understand that you may feel like you
need more time with Python 2.  But before sending such mails, please try
to put yourself in our skin.

Imagine I've spend a few hours yesterday merely trying to find
a reasonable subset of OpenStack packages that can have Python 2 removed
(OpenStack has done Python 3 releases for quite a while already).
Believe me, it's not interesting satisfactory work.  It's a struggle
against neverending conflicts with revdeps, stale stable packages, more
indirect revdeps...  All that to move a few dozen packages forward
and have less pain for end users in the end.

Now imagine someone who doesn't really know much about maintaining
Python in Gentoo and problems related to Python 2 sunrising, grabs one
site about Python releases and tells me what to do without knowing
the wider context.  Wouldn't you feel angry?  Demotivated?  Depressed
even?

I mean, forgive my expression but we're deep in shit.  As you've noticed
yourself, emerge spews few pages of 'I can't upgrade setuptools' because
of humongous number of packages that still need Python 2-capable
version.  Sure, we could put some effort into making it still work with
Python 2, then start collecting more and more patches to various
packages just to keep things working.  But then, 3-6-12 months from now
it will no longer be feasible, the cesspool will overflow and we'll be
even deeper in shit that we're today.

If people started removing Python 2 from Gentoo years ago, like upstream
suggested, today things would be much better.  But we waited till last
minute.  And now you're telling us to wait more because there will be
a new release of the *interpreter*?

--
Best regards,
Michał Górny


signature.asc (631 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: unsanctioned python 2.7 crusade

Andreas Sturmlechner
In reply to this post by Joshua Kinard-2
On Montag, 13. Januar 2020 01:44:55 CET Joshua Kinard wrote:
> I am working now to remove the remaining py2 packages
> from my systems and then rebuild the python packages to only handle py3.

Here's a suggestion: Skim through the packages on your system that are py27-
only and look them up upstream for a potential version bump with py3 support.
Then make that version bump, I'm sure python team will appreciate the help.

Regards,
Andreas

signature.asc (631 bytes) Download Attachment
123