| @@ -1,15 +1,15 @@ | | | @@ -1,15 +1,15 @@ |
1 | #!@PERL5@ | | 1 | #!@PERL5@ |
2 | # $NetBSD: lintpkgsrc.pl,v 1.104 2022/08/16 20:06:05 rillig Exp $ | | 2 | # $NetBSD: lintpkgsrc.pl,v 1.105 2022/08/16 20:10:32 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 | |
15 | use v5.36; | | 15 | use v5.36; |
| @@ -191,26 +191,27 @@ sub listdir($base, $dir = undef) { | | | @@ -191,26 +191,27 @@ sub listdir($base, $dir = undef) { |
191 | @thislist = grep { substr($_, 0, 1) ne '.' && $_ ne 'CVS' } readdir(DIR); | | 191 | @thislist = grep { substr($_, 0, 1) ne '.' && $_ ne 'CVS' } readdir(DIR); |
192 | closedir(DIR); | | 192 | closedir(DIR); |
193 | foreach my $entry (@thislist) { | | 193 | foreach my $entry (@thislist) { |
194 | if (-d "$thisdir/$entry") { | | 194 | if (-d "$thisdir/$entry") { |
195 | push @list, listdir($base, "$dir$entry"); | | 195 | push @list, listdir($base, "$dir$entry"); |
196 | } else { | | 196 | } else { |
197 | push @list, "$dir$entry"; | | 197 | push @list, "$dir$entry"; |
198 | } | | 198 | } |
199 | } | | 199 | } |
200 | @list; | | 200 | @list; |
201 | } | | 201 | } |
202 | | | 202 | |
203 | sub canonicalize_pkgname($pkgname) { | | 203 | sub canonicalize_pkgname($pkgname) { |
| | | 204 | $pkgname =~ s,^lua\d+-,lua-,; |
204 | $pkgname =~ s,^py\d+(?:pth|)-,py-,; | | 205 | $pkgname =~ s,^py\d+(?:pth|)-,py-,; |
205 | $pkgname =~ s,^ruby\d+-,ruby-,; | | 206 | $pkgname =~ s,^ruby\d+-,ruby-,; |
206 | $pkgname =~ s,^php\d+-,php-,; | | 207 | $pkgname =~ s,^php\d+-,php-,; |
207 | return $pkgname; | | 208 | return $pkgname; |
208 | } | | 209 | } |
209 | | | 210 | |
210 | sub split_pkgversion($pkgversion) { | | 211 | sub split_pkgversion($pkgversion) { |
211 | $pkgversion = lc($pkgversion); | | 212 | $pkgversion = lc($pkgversion); |
212 | | | 213 | |
213 | # See pkgtools/pkg_install/files/lib/dewey.c. | | 214 | # See pkgtools/pkg_install/files/lib/dewey.c. |
214 | my @temp = ($pkgversion =~ s/nb(\d+)//) ? +$1 : 0; | | 215 | my @temp = ($pkgversion =~ s/nb(\d+)//) ? +$1 : 0; |
215 | foreach my $elem (split(/(pl|pre|rc|beta|alpha|\D)/, $pkgversion)) { | | 216 | foreach my $elem (split(/(pl|pre|rc|beta|alpha|\D)/, $pkgversion)) { |
216 | if ($elem =~ /\d/) { | | 217 | if ($elem =~ /\d/) { |
| @@ -695,26 +696,28 @@ sub get_default_makefile_vars() { | | | @@ -695,26 +696,28 @@ sub get_default_makefile_vars() { |
695 | # Extract some variables from bsd.pkg.mk | | 696 | # Extract some variables from bsd.pkg.mk |
696 | my ($mkvars); | | 697 | my ($mkvars); |
697 | $mkvars = parse_makefile_vars( | | 698 | $mkvars = parse_makefile_vars( |
698 | "$default_vars->{PKGSRCDIR}/mk/bsd.pkg.mk", | | 699 | "$default_vars->{PKGSRCDIR}/mk/bsd.pkg.mk", |
699 | "$default_vars->{PKGSRCDIR}/mk/scripts" | | 700 | "$default_vars->{PKGSRCDIR}/mk/scripts" |
700 | ); | | 701 | ); |
701 | foreach my $varname (keys %{$mkvars}) { | | 702 | foreach my $varname (keys %{$mkvars}) { |
702 | if ($varname =~ /_REQD$/ || $varname eq 'EXTRACT_SUFX') { | | 703 | if ($varname =~ /_REQD$/ || $varname eq 'EXTRACT_SUFX') { |
703 | $default_vars->{$varname} = $mkvars->{$varname}; | | 704 | $default_vars->{$varname} = $mkvars->{$varname}; |
704 | } | | 705 | } |
705 | } | | 706 | } |
706 | | | 707 | |
707 | $default_vars->{PACKAGES} ||= $default_vars->{PKGSRCDIR} . '/packages'; | | 708 | $default_vars->{PACKAGES} ||= $default_vars->{PKGSRCDIR} . '/packages'; |
| | | 709 | |
| | | 710 | $default_vars->{LUA_PKGPREFIX} = 'lua54'; |
708 | } | | 711 | } |
709 | | | 712 | |
710 | # Determine if a package version is current. If not, report the correct | | 713 | # Determine if a package version is current. If not, report the correct |
711 | # version if found. | | 714 | # version if found. |
712 | sub invalid_version($pkgmatch) { | | 715 | sub invalid_version($pkgmatch) { |
713 | | | 716 | |
714 | my @warnings; | | 717 | my @warnings; |
715 | foreach $pkgmatch (expand_braces($pkgmatch)) { | | 718 | foreach $pkgmatch (expand_braces($pkgmatch)) { |
716 | my ($pkg, $badver) = package_globmatch($pkgmatch); | | 719 | my ($pkg, $badver) = package_globmatch($pkgmatch); |
717 | # If we find one match, it's good enough. | | 720 | # If we find one match, it's good enough. |
718 | return () unless defined $badver; | | 721 | return () unless defined $badver; |
719 | | | 722 | |
720 | my $pkgs = $pkgdb->pkgs($pkg); | | 723 | my $pkgs = $pkgdb->pkgs($pkg); |