| @@ -1,16 +1,16 @@ | | | @@ -1,16 +1,16 @@ |
1 | #!@PERL5@ | | 1 | #!@PERL5@ |
2 | | | 2 | |
3 | # $NetBSD: lintpkgsrc.pl,v 1.43 2022/08/03 16:15:49 rillig Exp $ | | 3 | # $NetBSD: lintpkgsrc.pl,v 1.44 2022/08/03 19:22:34 rillig Exp $ |
4 | | | 4 | |
5 | # Written by David Brownlee <abs@netbsd.org>. | | 5 | # Written by David Brownlee <abs@netbsd.org>. |
6 | # | | 6 | # |
7 | # Caveats: | | 7 | # Caveats: |
8 | # The 'Makefile parsing' algorithm used to obtain package versions and | | 8 | # The 'Makefile parsing' algorithm used to obtain package versions and |
9 | # DEPENDS information is geared towards speed rather than perfection, | | 9 | # DEPENDS information is geared towards speed rather than perfection, |
10 | # though it has gotten somewhat better over time, it only parses the | | 10 | # though it has gotten somewhat better over time, it only parses the |
11 | # simpler Makefile conditionals. | | 11 | # simpler Makefile conditionals. |
12 | # | | 12 | # |
13 | # TODO: Handle fun DEPENDS like avifile-devel with | | 13 | # TODO: Handle fun DEPENDS like avifile-devel with |
14 | # {qt2-designer>=2.2.4,qt2-designer-kde>=2.3.1nb1} | | 14 | # {qt2-designer>=2.2.4,qt2-designer-kde>=2.3.1nb1} |
15 | | | 15 | |
16 | use locale; | | 16 | use locale; |
| @@ -18,73 +18,73 @@ use strict; | | | @@ -18,73 +18,73 @@ use strict; |
18 | use warnings; | | 18 | use warnings; |
19 | use Getopt::Std; | | 19 | use Getopt::Std; |
20 | use File::Find; | | 20 | use File::Find; |
21 | use File::Basename; | | 21 | use File::Basename; |
22 | use IPC::Open3; | | 22 | use IPC::Open3; |
23 | use Cwd 'realpath', 'getcwd'; | | 23 | use Cwd 'realpath', 'getcwd'; |
24 | | | 24 | |
25 | # PkgVer is a PKGBASE + PKGVERSION, including some of the variables that | | 25 | # PkgVer is a PKGBASE + PKGVERSION, including some of the variables that |
26 | # have been extracted from the package Makefile. | | 26 | # have been extracted from the package Makefile. |
27 | # | | 27 | # |
28 | package PkgVer; | | 28 | package PkgVer; |
29 | | | 29 | |
30 | sub new($$$) { | | 30 | sub new($$$) { |
31 | my $class = shift; | | 31 | my ($class, $pkgbase, $pkgversion) = @_; |
32 | my $self = {}; | | 32 | my $self = { |
33 | | | 33 | pkgbase => $pkgbase, |
| | | 34 | pkgversion => $pkgversion, |
| | | 35 | vars => {}, |
| | | 36 | }; |
34 | bless $self, $class; | | 37 | bless $self, $class; |
35 | $self->{_pkg} = $_[0]; | | | |
36 | $self->{_ver} = $_[1]; | | | |
37 | return $self; | | 38 | return $self; |
38 | } | | 39 | } |
39 | | | 40 | |
40 | sub pkgname($) { | | 41 | sub pkg($) { |
41 | my $self = shift; | | 42 | my ($self) = @_; |
42 | | | 43 | |
43 | $self->pkg . '-' . $self->ver; | | 44 | $self->{pkgbase}; |
44 | } | | 45 | } |
45 | | | 46 | |
46 | sub pkg($) { | | 47 | sub ver($) { |
47 | my $self = shift; | | 48 | my ($self) = @_; |
48 | | | 49 | |
49 | $self->{_pkg}; | | 50 | $self->{pkgversion}; |
50 | } | | 51 | } |
51 | | | 52 | |
52 | sub var($$$) { | | 53 | sub pkgname($) { |
53 | my $self = shift; | | 54 | my $self = shift; |
54 | my ($key, $val) = @_; | | | |
55 | | | 55 | |
56 | (defined $val) | | 56 | $self->pkg . '-' . $self->ver; |
57 | ? ($self->{$key} = $val) | | | |
58 | : $self->{$key}; | | | |
59 | } | | 57 | } |
60 | | | 58 | |
61 | sub ver($) { | | 59 | sub var($$$) { |
62 | my $self = shift; | | 60 | my ($self, $key, $val) = @_; |
63 | | | 61 | |
64 | $self->{_ver}; | | 62 | (defined $val) |
| | | 63 | ? ($self->{vars}->{$key} = $val) |
| | | 64 | : $self->{vars}->{$key}; |
65 | } | | 65 | } |
66 | | | 66 | |
67 | sub vars($) { | | 67 | sub vars($) { |
68 | my $self = shift; | | 68 | my ($self) = @_; |
69 | | | 69 | |
70 | grep(!/^_(pkg|ver)$/, keys %{$self}); | | 70 | keys %{$self->{vars}}; |
71 | } | | 71 | } |
72 | | | 72 | |
73 | sub store($) { | | 73 | sub store($) { |
74 | my $self = shift; | | 74 | my $self = shift; |
75 | | | 75 | |
76 | my $name = $self->{_pkg}; | | 76 | my $name = $self->pkg; |
77 | my $ver = $self->{_ver}; | | 77 | my $ver = $self->ver; |
78 | | | 78 | |
79 | $name =~ /\s/ and die "cannot store package name '$name'\n"; | | 79 | $name =~ /\s/ and die "cannot store package name '$name'\n"; |
80 | $ver =~ /\s/ and die "cannot store package version '$ver'\n"; | | 80 | $ver =~ /\s/ and die "cannot store package version '$ver'\n"; |
81 | printf("package\t%s\t%s\n", $name, $ver); | | 81 | printf("package\t%s\t%s\n", $name, $ver); |
82 | | | 82 | |
83 | foreach my $varname (sort $self->vars) { | | 83 | foreach my $varname (sort $self->vars) { |
84 | my $value = $self->{$varname}; | | 84 | my $value = $self->{$varname}; |
85 | $varname =~ /\s/ and die "cannot store variable name '$varname'\n"; | | 85 | $varname =~ /\s/ and die "cannot store variable name '$varname'\n"; |
86 | $value =~ /\n/ and die "cannot store variable value '$value'\n"; | | 86 | $value =~ /\n/ and die "cannot store variable value '$value'\n"; |
87 | printf("var\t%s\t%s\n", $varname, $value); | | 87 | printf("var\t%s\t%s\n", $varname, $value); |
88 | } | | 88 | } |
89 | } | | 89 | } |
90 | | | 90 | |