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

Reply via email to