On Mon, 13 May 2019 15:33:41 -0700
Andrew Hewus Fresh <[email protected]> wrote:

> On Mon, May 13, 2019 at 11:49:02PM +0200, Charlene Wendling wrote:
> > On Mon, 13 May 2019 13:46:46 -0700
> > Andrew Hewus Fresh <[email protected]> wrote:
> > 
> > > This should make portgen(1) recognize the EXTRACT_CASES in
> > > bsd.port.mk(5) and set EXTRACT_SUFX correctly.
> > > 
> > > Anyway, Comments, OKs?
> > 
> > I tested against various Perl and Python ports that have
> > EXTRACT_SUFX: it works well (but many of them moved to tar.gz with
> > updated versions).
> > 
> > OK cwen@ but 
> 
> So, cwen@ pointed out that if we switched from something else
> to .tar.gz for the EXTRACT_SUFX, as in x11/py-kiwi or
> net/p5-Net-Ping-External, instead of removing it we would copy the
> now wrong one to the new port, which we don't want.

It works fine:

-SHA256 (CGI-FormBuilder-3.0501.tgz) = 
RehLHzlzCHSxn1mCKUq6ozW8e7Q7NaJJQ7gJ6mJ/Ogw=                                    
                                                                   
-SIZE (CGI-FormBuilder-3.0501.tgz) = 167585                                     
               
+SHA256 (CGI-FormBuilder-3.10.tar.gz) = 
rsmb4MDwZ6fnJpxTeOWubI1905s2i08SwNhGOxPucZg=
+SIZE (CGI-FormBuilder-3.10.tar.gz) = 162346

-SHA256 (patsy-0.4.1.zip) = 3BzCgARbDm5QwEcG/R4m0qAOpACqES+I6BQviLC309Q=        
                                                                                
                        
-SIZE (patsy-0.4.1.zip) = 425390                                                
               
+SHA256 (patsy-0.5.1.tar.gz) = 8RXOxCAeFGXNWLmGawsOe5Qcqv7BKYaQV0Bb/lteOZE=
+SIZE (patsy-0.5.1.tar.gz) = 397623

-SHA256 (notify-python-0.1.1.tar.bz2) = 
fTu7fD2PVskizDHQLvkFek8GmYzC/U8xGaV2/PjVBM4=                                    
             
-SIZE (notify-python-0.1.1.tar.bz2) = 214514                                    
                                                                                
                  
+SHA256 (notify-0.3.1.tar.gz) = idzr7Ini2Cr65DaHrT2rNDqUznnlr3tlLx95YRNZVbk=
+SIZE (notify-0.3.1.tar.gz) = 10879
^ wow this thing has sure slimmed down!

(and more)

> How about like this?

OK cwen@
 
> Index: infrastructure/lib/OpenBSD/PortGen/Port.pm
> ===================================================================
> RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port.pm,v
> retrieving revision 1.15
> diff -u -p -r1.15 Port.pm
> --- infrastructure/lib/OpenBSD/PortGen/Port.pm        13 May 2019
> 01:30:05 -0000        1.15 +++
> infrastructure/lib/OpenBSD/PortGen/Port.pm    13 May 2019
> 22:31:11 -0000 @@ -132,6 +132,38 @@ sub set_pkgname
> { $self->{PKGNAME} = $pkgname; }
>  
> +sub pick_distfile
> +{
> +     my ( $self, @files ) = @_;
> +
> +     my ($distname, $ext);
> +     foreach my $filename (@files) {
> +             # from EXTRACT_CASES
> +             ($distname, $ext) = $filename =~ /^(.*)(\.(?:
> +                 tar\.xz  | tar\.lzma
> +               | tar\.lz
> +               | zip
> +               | tar\.bz2 | tbz2    | tbz
> +               | shar\.gz | shar\.Z | sh\.Z | sh\.gz
> +               | shar     | shar\.sh
> +               | tar
> +               | tar\.gz  | tgz
> +             ))$/xms;
> +
> +             next unless $ext;
> +
> +             # These are our preferred suffixes
> +             if ( $ext eq '.tar.gz' or $ext eq '.tgz' or $ext eq
> '.tar' ) {
> +                     last;
> +             }
> +     }
> +
> +     $self->add_notice("Failed to pick a distname from @files")
> unless $distname; +
> +     $self->set_other( EXTRACT_SUFX => $ext ) if $ext;
> +     return $self->set_distname($distname);
> +}
> +
>  sub set_distname
>  {
>       my ( $self, $distname ) = @_;
> @@ -283,6 +315,7 @@ sub write_makefile
>       if (@template) {
>               %copy_values = map { $_->{key} => 1 }
>                   grep { $_->{name} ne 'REVISION' }
> +                 grep { $_->{name} ne 'EXTRACT_SUFX' }
>                   grep { ref } @template;
>       } else {
>               my $tag = 'OpenBSD';
> @@ -304,6 +337,10 @@ sub write_makefile
>               sort { $equals{$b} <=> $equals{$a} } keys %equals;
>       };
>       $default_equal ||= ' =';
> +
> +     # If we got an EXTRACT_SUFX, we don't need to print the
> default
> +     delete $configs{EXTRACT_SUFX}
> +         if $configs{EXTRACT_SUFX} and $configs{EXTRACT_SUFX} eq
> '.tar.gz'; 
>       my @makefile;
>       foreach my $line (@template) {
> Index: infrastructure/lib/OpenBSD/PortGen/Port/CPAN.pm
> ===================================================================
> RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port/CPAN.pm,v
> retrieving revision 1.7
> diff -u -p -r1.7 CPAN.pm
> --- infrastructure/lib/OpenBSD/PortGen/Port/CPAN.pm   11 May
> 2019 19:36:27 -0000   1.7 +++
> infrastructure/lib/OpenBSD/PortGen/Port/CPAN.pm       13 May 2019
> 22:31:11 -0000 @@ -182,7 +182,7 @@ sub fill_in_makefile my ( $self,
> $di, $vi ) = @_; 
>       $self->set_comment( $di->{abstract} );
> -     $self->set_distname( $di->{name} );
> +     $self->pick_distfile( $di->{archive} );
>       $self->set_license(
>               $di->{metadata}->{license}[0] eq 'unknown'
>               ? ''
> @@ -192,12 +192,6 @@ sub fill_in_makefile
>  
>       $self->set_other( 'CPAN_AUTHOR', $di->{author} )
>           if $self->needs_author($di);
> -
> -     my ($sufx) = $di->{archive} =~ /(\.[\.A-Za-z]+)$/;
> -
> -     if ( defined $sufx and $sufx ne '.tar.gz' ) {
> -             $self->set_other( 'EXTRACT_SUFX', $sufx );
> -     }
>  }
>  
>  sub postextract
> Index: infrastructure/lib/OpenBSD/PortGen/Port/PyPI.pm
> ===================================================================
> RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port/PyPI.pm,v
> retrieving revision 1.12
> diff -u -p -r1.12 PyPI.pm
> --- infrastructure/lib/OpenBSD/PortGen/Port/PyPI.pm   12 May
> 2019 20:23:33 -0000   1.12 +++
> infrastructure/lib/OpenBSD/PortGen/Port/PyPI.pm       13 May 2019
> 22:31:11 -0000 @@ -68,9 +68,22 @@ sub fill_in_makefile
> $self->set_other( 'MODPY_PI',         'Yes' );
> $self->set_other( 'MODPY_SETUPTOOLS', 'Yes' );
> $self->set_comment( $di->{info}{summary} );
> -     $self->set_other( 'MODPY_EGG_VERSION', $di->{info}
> {version} );
> -     $self->set_distname( "$di->{info}{name}" . '-$
> {MODPY_EGG_VERSION}' );
> -     my $pkgname = $di->{info}->{name};
> +
> +     my $pkgname  = $di->{info}->{name};
> +     my $version  = $di->{info}->{version};
> +     my $distname = $self->pick_distfile(
> +          map { $_->{filename} } @{ $di->{urls} || [] } );
> +
> +     $self->add_notice("distname $distname does not match pkgname
> $pkgname")
> +         unless $distname =~ /^\Q$pkgname/;
> +
> +     $self->set_other( 'MODPY_EGG_VERSION', $version );
> +     $distname =~ s/-\Q$version\E$/-\$\{MODPY_EGG_VERSION\}/
> +         or $self->add_notice("Didn't set distname version to \$
> {MODPY_EGG_VERSION}"); +
> +     $self->set_distname($distname);
> +
> +     # TODO: These assume the PKGNAME is the DISTNAME
>       my $to_lower = $pkgname =~ /\p{Upper}/ ? ':L' : '';
>       if ($pkgname =~ /^python-/) {
>               $self->set_pkgname("\$
> {DISTNAME:S/^python-/py-/$to_lower}"); @@ -78,6 +91,7 @@ sub
> fill_in_makefile elsif ($pkgname !~ /^py-/) {
>               $self->set_pkgname("py-\${DISTNAME$to_lower}");
>       }
> +
>       $self->set_modules('lang/python');
>       $self->set_other( 'HOMEPAGE', $di->{info}{home_page} );
>       $self->set_license( $di->{info}{license} );
> 

Reply via email to