diff options
-rw-r--r-- | ports-mgmt/portlint/Makefile | 2 | ||||
-rw-r--r-- | ports-mgmt/portlint/src/portlint.pl | 71 |
2 files changed, 53 insertions, 20 deletions
diff --git a/ports-mgmt/portlint/Makefile b/ports-mgmt/portlint/Makefile index 9a51dce38102..7337cb80195f 100644 --- a/ports-mgmt/portlint/Makefile +++ b/ports-mgmt/portlint/Makefile @@ -1,5 +1,5 @@ PORTNAME= portlint -PORTVERSION= 2.19.12 +PORTVERSION= 2.19.13 CATEGORIES= ports-mgmt MASTER_SITES= # none DISTFILES= # none diff --git a/ports-mgmt/portlint/src/portlint.pl b/ports-mgmt/portlint/src/portlint.pl index c2cd2dbb0e9d..d7fa42fbd4e7 100644 --- a/ports-mgmt/portlint/src/portlint.pl +++ b/ports-mgmt/portlint/src/portlint.pl @@ -49,7 +49,7 @@ $portdir = '.'; # version variables my $major = 2; my $minor = 19; -my $micro = 12; +my $micro = 13; # default setting - for FreeBSD my $portsdir = '/usr/ports'; @@ -158,7 +158,7 @@ my @varlist = qw( PKGNAMEPREFIX PKGNAMESUFFIX DISTVERSIONPREFIX DISTVERSION DISTVERSIONSUFFIX DISTNAME DISTFILES CATEGORIES MASTERDIR MAINTAINER MASTER_SITES WRKDIR WRKSRC NO_WRKSUBDIR SCRIPTDIR FILESDIR - PKGDIR COMMENT DESCR PLIST PKGCATEGORY PKGINSTALL PKGDEINSTALL + PKGDIR COMMENT WWW DESCR PLIST PKGCATEGORY PKGINSTALL PKGDEINSTALL PKGREQ PKGMESSAGE DISTINFO_FILE .CURDIR USE_LDCONFIG USE_AUTOTOOLS USE_GNOME USE_PERL5 USE_QT USE_QT5 INDEXFILE PKGORIGIN CONFLICTS CONFLICTS_BUILD CONFLICTS_INSTALL PKG_VERSION @@ -490,7 +490,7 @@ sub checkdescr { my($file) = @_; my(%maxchars) = ($makevar{DESCR}, 80); my(%maxlines) = ($makevar{DESCR}, 24); - my(%minlines) = ($makevar{DESCR}, 3); + my(%minlines) = ($makevar{DESCR}, 2); my(%toolongerrmsg) = ($makevar{DESCR}, "exceeds $maxlines{$makevar{DESCR}} ". "lines, make it shorter if possible."); @@ -515,10 +515,10 @@ sub checkdescr { } if (/^WWW:(\s+)(\S*)/) { my $wwwurl = $2; - if ($1 ne ' ') { - &perror("WARN", $file, -1, "use WWW: with a single space, ". - "then $wwwurl"); - } + &perror("WARN", $file, -1, "the URL of the project website has been ". + "moved into the Makefile. ". + "Remove the WWW: line from this file and add \"WWW=$wwwurl\"". + "to the Makefile immediately below the COMMENT line."); if ($wwwurl !~ m|^https?://|) { &perror("WARN", $file, -1, "WWW URL, $wwwurl should begin ". "with \"http://\" or \"https://\"."); @@ -821,6 +821,11 @@ sub checkplist { "for more details)"); } + if ($_ =~ m|\.desktop$| && $makevar{USES} !~ /\bdesktop-file-utils\b/) { + &perror("FATAL", $file, $., "this port installs .desktop files. ". + "Please add `desktop-file-utils` to USES."); + } + if ($_ =~ m|^(%%([^%]+)%%)?.*\.mo$| && $makevar{USES} !~ /\bgettext\b/) { my $show_nls_warn = 1; if ($2) { @@ -1569,6 +1574,10 @@ sub checkmakefile { &perror("FATAL", "", -1, "PLIST_FILES: files cannot contain ". "%%FOO%% variables. Use make variables and logic instead"); } + if ($plist_file =~ m|\.desktop$| && $makevar{USES} !~ /\bdesktop-file-utils\b/) { + &perror("FATAL", "", -1, "PLIST_FILES: this port installs .desktop files. ". + "please add `desktop-file-utils` to USES."); + } } } @@ -2171,6 +2180,7 @@ xargs xmkmf && $curline !~ /^NO_PACKAGE(.)?=[^\n]+$i/m && $curline !~ /^NO_CDROM(.)?=[^\n]+$i/m && $curline !~ /^MAINTAINER(.)?=[^\n]+$i/m + && $curline !~ /^WWW(.)?=[^\n]+$i/m && $curline !~ /^CATEGORIES(.)?=[^\n]+$i/m && $curline !~ /^(\w+)?USES(.)?=[^\n]+$i/m && $curline !~ /^WX_COMPS(.)?=[^\n]+$i/m @@ -2205,6 +2215,7 @@ xargs xmkmf && $lm !~ /^NO_PACKAGE(.)?=[^\n]+($i\d*)/m && $lm !~ /^NO_CDROM(.)?=[^\n]+($i\d*)/m && $lm !~ /^MAINTAINER(.)?=[^\n]+($i\d*)/m + && $lm !~ /^WWW(.)?=[^\n]+($i\d*)/m && $lm !~ /^CATEGORIES(.)?=[^\n]+($i\d*)/m && $lm !~ /^USES(.)?=[^\n]+$i/m && $lm !~ /^[A-Z0-9_]+_DESC=[^\n]+($i\d*)/m @@ -2677,15 +2688,16 @@ EOF &perror("WARN", $file, -1, "Version required is no longer needed in the comment section."); } - # - # for the rest of the checks, comment lines are not important. - # - for ($i = 0; $i < scalar(@sections); $i++) { - $sections[$i] = "\n" . $sections[$i]; - $sections[$i] =~ s/\n#[^\n]*//g; - $sections[$i] =~ s/\n\n+/\n/g; - $sections[$i] =~ s/^\n//; - } + } + + # + # for the rest of the checks, comment lines are not important. + # + for ($i = 0; $i < scalar(@sections); $i++) { + $sections[$i] = "\n" . $sections[$i]; + $sections[$i] =~ s/\n#[^\n]*//g; + $sections[$i] =~ s/\n\n+/\n/g; + $sections[$i] =~ s/^\n//; } # @@ -2972,7 +2984,7 @@ DIST_SUBDIR EXTRACT_ONLY &perror("FATAL", $file, -1, "either PORTVERSION or DISTVERSION must be specified"); } if ($portversion =~ /^pl[0-9]*$/ - || $portversion =~ /^[0-9]*[A-Za-z]?[0-9]*(\.[0-9]*[A-Za-z]?[0-9+]*)*$/) { + || $portversion =~ /^[0-9]*[A-Za-z]?[0-9]*([.+][0-9]*[A-Za-z]?[0-9+]*)*$/) { print "OK: PORTVERSION \"$portversion\" looks fine.\n" if ($verbose); } elsif ($portversion =~ /^[^\-]*\$[{\(].+[\)}][^\-]*$/) { &perror("WARN", $file, -1, "using variable, \"$portversion\", as version ". @@ -3176,7 +3188,7 @@ PATCH_SITES PATCHFILES PATCH_DIST_STRIP &checkearlier($file, $tmp, @varnames); &checkorder('MAINTAINER', $tmp, $file, qw( -MAINTAINER COMMENT +MAINTAINER COMMENT WWW )); $tmp = "\n" . $tmp; @@ -3226,10 +3238,31 @@ MAINTAINER COMMENT } } + # check WWW + if ($tmp !~ /\nWWW.?=\s*(\S+)/) { + &perror("WARN", $file, -1, "WWW should exist and immediately follow COMMENT.") unless ($makevar{WWW} ne ''); + } + + # check for correctness + { + my $wwwurl = $1 // $makevar{WWW}; + if ($wwwurl and $wwwurl !~ m|^https?://|) { + &perror("WARN", $file, -1, "WWW URL, $wwwurl should begin with \"http://\" or \"https://\"."); + } + if ($wwwurl =~ m|search.cpan.org|) { + if ($wwwurl =~ m|^http.?://search.cpan.org/~|) { + &perror("WARN", $file, -1, "consider changing WWW URL to https://search.cpan.org/dist/$makevar{PORTNAME}/"); + } + if ($wwwurl =~ m,/$,) { + &perror("WARN", $file, -1, "end WWW CPAN URL with a \"/\""); + } + } + } + $idx++; push(@varnames, qw( -MAINTAINER COMMENT +MAINTAINER COMMENT WWW )); # |