On Mon, Mar 21, 2016 at 07:09:52PM +0000, Nigel Taylor wrote:
>
> Should portgen be updated?
> 
> Perl ports should have normally a PKG_ARCH = * added to the Makefile.
> When perl uses C or other languages PKG_ARCH = * should not be present,
> a WANTLIB += perl should.
> 
> To find which either read MANIFEST if files listed end in .xs excluding
> those under t/ xt/ inc/ or search for files using find
> 
> $ find `make show=WRKSRC`/!(inc|t|xt) -name "*.xs"
> /usr/ports/pobj/p5-Cpanel-JSON-XS-3.0213/Cpanel-JSON-XS-3.0213/XS.xs
> 
> So this port should not have PKG_ARCH = *
> needs a WANTLIB += perl in the Makefile, as a .xs file is present.
> 
>

This diff syncs portgen with the recent changes in perl ports. OK?
Index: Port.pm
===================================================================
RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port.pm,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Port.pm
--- Port.pm     18 Jan 2016 18:08:19 -0000      1.1.1.1
+++ Port.pm     25 Mar 2016 22:54:38 -0000
@@ -222,6 +222,7 @@ sub write_makefile
                        $other_stuff =~ s/^#//;
                        $other_stuff =~ s/(\?\?\?|$)/$value\n/;
 
+                       # handle cases where replacing '???' isn't enough
                        if ( $other_stuff =~ /^PERMIT_PACKAGE_CDROM/ ) {
                                $output .= "# $self->{license}\n";
                        } elsif ( $other_stuff =~ /_DEPENDS/ ) {
@@ -229,6 +230,8 @@ sub write_makefile
                        } elsif ( $other_stuff =~ /^COMMENT/ ) {
                                $output .= "# original: $self->{full_comment}\n"
                                    if $self->{full_comment};
+                       } elsif ( $other_stuff =~ /^WANTLIB/ ) {
+                               $other_stuff =~ s/=/+=/;
                        }
 
                        $output .= $other_stuff;
Index: Port/CPAN.pm
===================================================================
RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port/CPAN.pm,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 CPAN.pm
--- Port/CPAN.pm        18 Jan 2016 18:08:20 -0000      1.1.1.1
+++ Port/CPAN.pm        25 Mar 2016 22:54:38 -0000
@@ -205,6 +205,13 @@ sub postextract
 
        $self->set_descr( $self->read_descr($wrksrc) || $di->{abstract} );
        $self->_find_hidden_test_deps($wrksrc);
+
+       if ( $self->_uses_xs($wrksrc) ) {
+               $self->set_other( 'WANTLIB', 'perl' );
+       }
+       else {
+               $self->set_other( 'PKG_ARCH', '*' );
+       }
 }
 
 sub try_building
@@ -266,6 +273,22 @@ sub _test_skips
                        return;
                }
        }
+}
+
+sub _uses_xs
+{
+       my ( $self, $dir ) = @_;
+       my $found_xs = 0;
+
+       find( sub {
+               if ( -d && /^(inc|t|xt)$/ ) {
+                       $File::Find::prune = 1;
+                       return;
+               }
+               $found_xs = 1 if -f && /\.xs$/;
+       }, $dir );
+
+       return $found_xs;
 }
 
 1;

Reply via email to