On 19 March 2018 at 16:52, Ryan Schmidt wrote: > > I should clarify that there's nothing special in my proposal about Python > 3.6. I'm merely proposing that when we use Python, we should now prefer to > use the latest stable version of 3.x, not the latest stable version of 2.x. > If stable Python 3.7 is released tomorrow, then my proposal updates from 3.6 > to 3.7. > > The python-1.0 portgroup currently says: > > proc python_get_default_version {} { > global python.versions > if {[info exists python.versions]} { > if {[lsearch -exact ${python.versions} 27] != -1} { > return 27 > } else { > return [lindex ${python.versions} end] > } > } else { > return 27 > } > } > > In other words, 27 (2.7) is currently the default Python version. If a port > doesn't specify its python.versions, 27 will be used. And if a port has > multiple pyXY-* subports, and 27 is among them, then that will be one upon > which the py-* stub port depends, otherwise the newest Python version listed > will be used. > > > I'm proposing that the portgroup should require ports to specify > python.versions. Don't offer a default. Identify and update all ports that > use the python portgroup but that don't set python.versions. Set > python.versions to 36 in those ports and increase their revisions. I'm also > proposing that the default subport would change from the 27 subport if > present to the latest 3x subport present. > > Ports that don't use the python portgroup, but which use python, may have > used python27 because that was the portgroup's default. Those ports should be > identified and switched to python36, after verifying that that works. There > may be many instances where it does not work, since python3 is different from > python2. If a program doesn't work with python3, and the developers are still > in existence, they could be contacted to work through those issues. > > Other ports may offer pythonXY variants, and may have defaulted to python27 > because that was the portgroup's default. They may not offer python3x > variants, or they may only offer older python3x variants, perhaps because > they have not been updated since python36 became stable. Since the python3x > variants are not default, they may not be well tested, may no longer work, or > may never have worked. Those ports should be identified, newer python > variants should be added if they work, broken python variants should be > removed, and the default should be changed to the latest python variant.
OK, so basically you are proposing to modify our (non-written?) rules about how to handle python ports, potentially open a ticket listing some hundreds of ports to be handled and then slowly migrate on port-by-port basis, which might just as well take longer than the python 2.7 lifetime anyway? Sure, I totally support that. (In some of my ports I added python3x variants or subports for testing, but they don't work correctly yet, so it's not just a matter of mass-replacing the default version.) What would help enormously and I also missed that since the time I started touching any Python ports is the ability to use python (or python-something) PortGroup which would not irreversibly change half of the steps used to build a port, but merely allow to specify something like python.versions 27 36 python.default_version 36 python.create_variants python.require_variants yes with the sole effect of creating variant python27 conflicts python36 {} variant python36 conflicts python27 {} and then allow using variables like depends_lib-append port:${python.port} configure.arg-append --with-python=${python.bin} Mojca