Sat Jul 30 15:11:26 2022 UTC ()
pkglint: cleanup: group classes from small to big

No functional change.


(rillig)
diff -r1.37 -r1.38 pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl

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

--- pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl 2022/07/30 11:33:23 1.37
+++ pkgsrc/pkgtools/lintpkgsrc/files/lintpkgsrc.pl 2022/07/30 15:11:26 1.38
@@ -1,97 +1,99 @@ @@ -1,97 +1,99 @@
1#!@PERL5@ 1#!@PERL5@
2 2
3# $NetBSD: lintpkgsrc.pl,v 1.37 2022/07/30 11:33:23 rillig Exp $ 3# $NetBSD: lintpkgsrc.pl,v 1.38 2022/07/30 15:11:26 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
16use locale; 16use locale;
17use strict; 17use strict;
18use warnings; 18use warnings;
19use Getopt::Std; 19use Getopt::Std;
20use File::Find; 20use File::Find;
21use File::Basename; 21use File::Basename;
22use IPC::Open3; 22use IPC::Open3;
23use Cwd 'realpath', 'getcwd'; 23use Cwd 'realpath', 'getcwd';
24 24
25# PkgList is the master list of all packages in pkgsrc. 25# PkgVer is a unique package + version.
26# 26#
27package PkgList; 27package PkgVer;
28 
29sub add($@) { 
30 my $self = shift; 
31 
32 if (!$self->pkgs($_[0])) { 
33 $self->{_pkgs}{ $_[0] } = new Pkgs $_[0]; 
34 } 
35 $self->pkgs($_[0])->add(@_); 
36} 
37 28
38sub new($) { 29sub new($$$) {
39 my $class = shift; 30 my $class = shift;
40 my $self = {}; 31 my $self = {};
 32
41 bless $self, $class; 33 bless $self, $class;
 34 $self->{_pkg} = $_[0];
 35 $self->{_ver} = $_[1];
42 return $self; 36 return $self;
43} 37}
44 38
45sub numpkgver($) { 39sub pkgname($) {
46 my $self = shift; 40 my $self = shift;
47 scalar($self->pkgver); 41
 42 $self->pkg . '-' . $self->ver;
48} 43}
49 44
50sub pkgver($@) { 45sub pkg($) {
51 my $self = shift; 46 my $self = shift;
52 47
53 if (@_ == 0) { 48 $self->{_pkg};
54 my (@list); 49}
55 foreach my $pkg ($self->pkgs) { 
56 push(@list, $pkg->pkgver); 
57 } 
58 return (@list); 
59 } 
60 50
61 if (defined $self->{_pkgs}{$_[0]}) { 51sub var($$$) {
62 return (@_ > 1) 52 my $self = shift;
63 ? $self->{_pkgs}{$_[0]}->pkgver($_[1]) 53 my ($key, $val) = @_;
64 : $self->{_pkgs}{$_[0]}->pkgver(); 54
65 } 55 (defined $val)
66 return; 56 ? ($self->{$key} = $val)
 57 : $self->{$key};
67} 58}
68 59
69sub pkgs($@) { 60sub ver($) {
70 my $self = shift; 61 my $self = shift;
71 62
72 if (@_) { 63 $self->{_ver};
73 return $self->{_pkgs}{$_[0]}; 64}
74 } else { 65
75 return (sort { $a->pkg cmp $b->pkg } values %{$self->{_pkgs}}); 66sub vars($) {
76 } 67 my $self = shift;
 68
 69 grep(!/^_(pkg|ver)$/, keys %{$self});
77} 70}
78 71
79sub store($) { 72sub store($) {
80 my $self = shift; 73 my $self = shift;
81 74
82 my $pkgs = $self->{_pkgs}; 75 my $name = $self->{_pkg};
83 foreach my $pkg (sort keys %$pkgs) { 76 my $ver = $self->{_ver};
84 $pkgs->{$pkg}->store(); 77
 78 $name =~ /\s/ and die "cannot store package name '$name'\n";
 79 $ver =~ /\s/ and die "cannot store package version '$ver'\n";
 80 printf("package\t%s\t%s\n", $name, $ver);
 81
 82 foreach my $varname (sort $self->vars) {
 83 my $value = $self->{$varname};
 84 $varname =~ /\s/ and die "cannot store variable name '$varname'\n";
 85 $value =~ /\n/ and die "cannot store variable value '$value'\n";
 86 printf("var\t%s\t%s\n", $varname, $value);
85 } 87 }
86} 88}
87 89
88# Pkgs is all versions of a given package (eg: apache-1.x and apache-2.x) 90# Pkgs is all versions of a given package (eg: apache-1.x and apache-2.x)
89# 91#
90package Pkgs; 92package Pkgs;
91 93
92sub add($@) { 94sub add($@) {
93 my $self = shift; 95 my $self = shift;
94 96
95 $self->{_pkgver}{$_[1]} = new PkgVer @_; 97 $self->{_pkgver}{$_[1]} = new PkgVer @_;
96} 98}
97 99
@@ -132,88 +134,86 @@ sub latestver($) { @@ -132,88 +134,86 @@ sub latestver($) {
132 134
133 ($self->pkgver())[0]; 135 ($self->pkgver())[0];
134} 136}
135 137
136sub store($) { 138sub store($) {
137 my $self = shift; 139 my $self = shift;
138 140
139 my $pkgvers = $self->{_pkgver}; 141 my $pkgvers = $self->{_pkgver};
140 foreach my $pkgver (sort keys %$pkgvers) { 142 foreach my $pkgver (sort keys %$pkgvers) {
141 $pkgvers->{$pkgver}->store(); 143 $pkgvers->{$pkgver}->store();
142 } 144 }
143} 145}
144 146
145# PkgVer is a unique package+version 147# PkgList is the master list of all packages in pkgsrc.
146# 148#
147package PkgVer; 149package PkgList;
148 150
149sub new($$$) { 151sub add($@) {
 152 my $self = shift;
 153
 154 if (!$self->pkgs($_[0])) {
 155 $self->{_pkgs}{ $_[0] } = new Pkgs $_[0];
 156 }
 157 $self->pkgs($_[0])->add(@_);
 158}
 159
 160sub new($) {
150 my $class = shift; 161 my $class = shift;
151 my $self = {}; 162 my $self = {};
152 
153 bless $self, $class; 163 bless $self, $class;
154 $self->{_pkg} = $_[0]; 
155 $self->{_ver} = $_[1]; 
156 return $self; 164 return $self;
157} 165}
158 166
159sub pkgname($) { 167sub numpkgver($) {
160 my $self = shift; 
161 
162 $self->pkg . '-' . $self->ver; 
163} 
164 
165sub pkg($) { 
166 my $self = shift; 168 my $self = shift;
167 169 scalar($self->pkgver);
168 $self->{_pkg}; 
169} 170}
170 171
171sub var($$$) { 172sub pkgver($@) {
172 my $self = shift; 173 my $self = shift;
173 my ($key, $val) = @_; 
174 174
175 (defined $val) 175 if (@_ == 0) {
176 ? ($self->{$key} = $val) 176 my (@list);
177 : $self->{$key}; 177 foreach my $pkg ($self->pkgs) {
178} 178 push(@list, $pkg->pkgver);
179 179 }
180sub ver($) { 180 return (@list);
181 my $self = shift; 181 }
182 182
183 $self->{_ver}; 183 if (defined $self->{_pkgs}{$_[0]}) {
 184 return (@_ > 1)
 185 ? $self->{_pkgs}{$_[0]}->pkgver($_[1])
 186 : $self->{_pkgs}{$_[0]}->pkgver();
 187 }
 188 return;
184} 189}
185 190
186sub vars($) { 191sub pkgs($@) {
187 my $self = shift; 192 my $self = shift;
188 193
189 grep(!/^_(pkg|ver)$/, keys %{$self}); 194 if (@_) {
 195 return $self->{_pkgs}{$_[0]};
 196 } else {
 197 return (sort { $a->pkg cmp $b->pkg } values %{$self->{_pkgs}});
 198 }
190} 199}
191 200
192sub store($) { 201sub store($) {
193 my $self = shift; 202 my $self = shift;
194 203
195 my $name = $self->{_pkg}; 204 my $pkgs = $self->{_pkgs};
196 my $ver = $self->{_ver}; 205 foreach my $pkg (sort keys %$pkgs) {
197 206 $pkgs->{$pkg}->store();
198 $name =~ /\s/ and die "cannot store package name '$name'\n"; 
199 $ver =~ /\s/ and die "cannot store package version '$ver'\n"; 
200 printf("package\t%s\t%s\n", $name, $ver); 
201 
202 foreach my $varname (sort $self->vars) { 
203 my $value = $self->{$varname}; 
204 $varname =~ /\s/ and die "cannot store variable name '$varname'\n"; 
205 $value =~ /\n/ and die "cannot store variable value '$value'\n"; 
206 printf("var\t%s\t%s\n", $varname, $value); 
207 } 207 }
208} 208}
209 209
210package main; 210package main;
211 211
212# Buildtime configuration 212# Buildtime configuration
213my $conf_make = '@MAKE@'; 213my $conf_make = '@MAKE@';
214my $conf_pkgsrcdir = '@PKGSRCDIR@'; 214my $conf_pkgsrcdir = '@PKGSRCDIR@';
215my $conf_prefix = '@PREFIX@'; 215my $conf_prefix = '@PREFIX@';
216my $conf_sysconfdir = '@PKG_SYSCONFDIR@'; 216my $conf_sysconfdir = '@PKG_SYSCONFDIR@';
217 217
218my ( 218my (
219 $pkglist, # list of Pkg packages 219 $pkglist, # list of Pkg packages