Fri Aug 19 05:20:28 2022 UTC ()
lintpkgsrc: cleanup: extract 'make show-vars' into subroutine


(rillig)
diff -r1.126 -r1.127 pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl

cvs diff -r1.126 -r1.127 pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl (expand / switch to unified diff)

--- pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl 2022/08/19 05:06:26 1.126
+++ pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl 2022/08/19 05:20:27 1.127
@@ -1,15 +1,15 @@ @@ -1,15 +1,15 @@
1#!@PERL5@ 1#!@PERL5@
2# $NetBSD: lintpkgsrc.pl,v 1.126 2022/08/19 05:06:26 rillig Exp $ 2# $NetBSD: lintpkgsrc.pl,v 1.127 2022/08/19 05:20:27 rillig Exp $
3 3
4# Written by David Brownlee <abs@netbsd.org>. 4# Written by David Brownlee <abs@netbsd.org>.
5# 5#
6# Caveats: 6# Caveats:
7# The 'Makefile parsing' algorithm used to obtain package versions and 7# The 'Makefile parsing' algorithm used to obtain package versions and
8# DEPENDS information is geared towards speed rather than perfection, 8# DEPENDS information is geared towards speed rather than perfection,
9# though it has gotten somewhat better over time, it only parses the 9# though it has gotten somewhat better over time, it only parses the
10# simpler Makefile conditionals. 10# simpler Makefile conditionals.
11# 11#
12# TODO: Handle fun DEPENDS like avifile-devel with 12# TODO: Handle fun DEPENDS like avifile-devel with
13# {qt2-designer>=2.2.4,qt2-designer-kde>=2.3.1nb1} 13# {qt2-designer>=2.2.4,qt2-designer-kde>=2.3.1nb1}
14 14
15use v5.36; 15use v5.36;
@@ -941,63 +941,67 @@ sub package_globmatch($pkgmatch) { @@ -941,63 +941,67 @@ sub package_globmatch($pkgmatch) {
941 $matchver = undef; 941 $matchver = undef;
942 last; 942 last;
943 } 943 }
944 } 944 }
945 } 945 }
946 946
947 ($matchpkgname, $matchver); 947 ($matchpkgname, $matchver);
948 948
949 } else { 949 } else {
950 ($pkgmatch, 'missing'); 950 ($pkgmatch, 'missing');
951 } 951 }
952} 952}
953 953
 954sub make_show_vars($pkgdir) {
 955 debug("Running '$conf_make' in '$pkgdir'");
 956 my $pid = open3(\*WTR, \*RDR, \*ERR,
 957 "cd $pkgdir || exit 1; $conf_make show-vars VARNAMES=PKGNAME");
 958 if (!$pid) {
 959 warn "$pkgdir: Unable to run make: $!";
 960 } else {
 961 close(WTR) or die;
 962 my @errors = <ERR>;
 963 close(ERR) or die;
 964 my $makepkgname = <RDR>;
 965 close(RDR) or die;
 966 wait;
 967 chomp @errors;
 968 if (@errors) { warn "\n$pkgdir: @errors\n"; }
 969
 970 if ($makepkgname =~ /(.*)-(\d.*)/) {
 971 return $makepkgname;
 972 }
 973 }
 974
 975 undef;
 976}
 977
954# Parse a pkgsrc package makefile and return the pkgname and set variables 978# Parse a pkgsrc package makefile and return the pkgname and set variables
955# 979#
956sub parse_makefile_pkgsrc($file) { 980sub parse_makefile_pkgsrc($file) {
957 my $vars = parse_makefile_vars($file, undef); 981 my $vars = parse_makefile_vars($file, undef);
958 defined $vars or return undef; # Missing Makefile. 982 defined $vars or return undef; # Missing Makefile.
959 983
960 my $pkgname = $vars->{PKGNAME}; 984 my $pkgname = $vars->{PKGNAME};
961 my $distname = $vars->{DISTNAME}; 985 my $distname = $vars->{DISTNAME};
962 986
963 debug("$file: PKGNAME=$pkgname") if defined $pkgname; 987 debug("$file: PKGNAME=$pkgname") if defined $pkgname;
964 debug("$file: DISTNAME=$distname") if defined $distname; 988 debug("$file: DISTNAME=$distname") if defined $distname;
965 989
966 $pkgname = $distname unless defined $pkgname; 990 $pkgname = $distname unless defined $pkgname;
967 991
968 if (!defined $pkgname || $pkgname =~ /\$/ || $pkgname !~ /(.*)-(\d.*)/) { 992 if (!defined $pkgname || $pkgname =~ /\$/ || $pkgname !~ /(.*)-(\d.*)/) {
969 993 my $makepkgname = make_show_vars(dirname $file);
970 # invoke make here as a last resort 994 $pkgname = $makepkgname if defined $makepkgname;
971 my $pkgdir = dirname $file; 
972 debug("Running '$conf_make' in '$pkgdir'"); 
973 my $pid = open3(\*WTR, \*RDR, \*ERR, 
974 "cd $pkgdir || exit 1; $conf_make show-vars VARNAMES=PKGNAME"); 
975 if (!$pid) { 
976 warn "$file: Unable to run make: $!"; 
977 } else { 
978 close(WTR) or die; 
979 my @errors = <ERR>; 
980 close(ERR) or die; 
981 my $makepkgname = <RDR>; 
982 close(RDR) or die; 
983 wait; 
984 chomp @errors; 
985 if (@errors) { warn "\n$file: @errors\n"; } 
986 
987 if ($makepkgname =~ /(.*)-(\d.*)/) { 
988 $pkgname = $makepkgname; 
989 } 
990 } 
991 } 995 }
992 996
993 defined $pkgname or return (); 997 defined $pkgname or return ();
994 998
995 $pkgname = canonicalize_pkgname($pkgname); 999 $pkgname = canonicalize_pkgname($pkgname);
996 1000
997 my $pkgrevision = $vars->{PKGREVISION}; 1001 my $pkgrevision = $vars->{PKGREVISION};
998 if (defined $pkgrevision && $pkgrevision !~ /^\s*$/) { 1002 if (defined $pkgrevision && $pkgrevision !~ /^\s*$/) {
999 if ($pkgrevision =~ /^\$\{ (?: 1003 if ($pkgrevision =~ /^\$\{ (?:
1000 _CVS_PKGVERSION | 1004 _CVS_PKGVERSION |
1001 _GIT_PKGVERSION | 1005 _GIT_PKGVERSION |
1002 _HG_PKGVERSION_CMD | 1006 _HG_PKGVERSION_CMD |
1003 _SVN_PKGREVISION_CMD) :.* \}$ /x) { 1007 _SVN_PKGREVISION_CMD) :.* \}$ /x) {