On 21/08/14 02:05PM, Stuart Henderson wrote:
...
> 
> That's not quite right, it needs to do the following:
> 
> - if the port is python 2 only, set MODPY_VERSION = ${MODPY_DEFAULT_VERSION_2}
> 
> - if the port is python 3 only, set FLAVOR = python3 / FLAVORS = python3
> 
> - undecided about ports which support py2+3; I think at this point we should
> probably treat them the same as py3-only because we don't really want to be
> importing new py2 ports, i.e. also FLAVOR = python3 / FLAVORS = python3

Thanks for your feedback, I made a new patch aims to do the above. I 
tested it on a few different PyPI packages and the output Makefile 
matched my expectation. However since I'm not exactly sure how portgen 
worked, it probably needs more tweaking.

> (Related issue with portgen, get_deps returns all deps, it should skip py2
> deps for a py3 port, otherwise it tries to create ports for things which
> are unused in py3-land because they're part of python itself, it would
> be nice to solve this automatically, but at least it means that when
> portgen-created ports are reviewed that should be taken into account).
> 

I worked on this for a bit, but it's been quite difficult as I can't 
debug portgen effectively, do you know if there is a way to trace it? 
(e.g. like `bash -x`)

P.S. I left the Makefile template untouched since it seems to be for 
ordering things only.

Index: PyPI.pm
===================================================================
RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port/PyPI.pm,v
retrieving revision 1.19
diff -u -r1.19 PyPI.pm
--- PyPI.pm     30 Apr 2020 23:04:48 -0000      1.19
+++ PyPI.pm     19 Aug 2021 08:44:56 -0000
@@ -114,16 +114,13 @@
                    @{ $di->{info}{classifiers} };
        };
 
-       if ( @versions > 1 ) {
-               shift @versions;    # remove default, lowest
-               $self->{reset_values}{MODPY_VERSION} = 1;
+       if ( @versions > 1 ) {      # support both py2/py3
+               shift @versions;    # remove lowest version, use py3 only
                $self->set_other( 'FLAVORS', "python$_" ) for @versions;
                $self->set_other( 'FLAVOR', "python$versions[-1]" );
-       } elsif ( @versions && $versions[0] != 2 ) {
-               $self->{reset_values}{$_} = 1 for qw( FLAVORS FLAVOR );
+       } elsif ( @versions && $versions[0] == 2 ) { # python2 only
                $self->set_other(
-                       MODPY_VERSION => "\${MODPY_DEFAULT_VERSION_$_}" )
-                   for @versions;
+               MODPY_VERSION => "\${MODPY_DEFAULT_VERSION_$versions[0]}" )
        }
 }
 

Reply via email to