diff options
Diffstat (limited to 'ports-mgmt/portlint')
-rw-r--r-- | ports-mgmt/portlint/Makefile | 2 | ||||
-rw-r--r-- | ports-mgmt/portlint/src/portlint.pl | 50 |
2 files changed, 44 insertions, 8 deletions
diff --git a/ports-mgmt/portlint/Makefile b/ports-mgmt/portlint/Makefile index 0484035c1f25..3ef46b928459 100644 --- a/ports-mgmt/portlint/Makefile +++ b/ports-mgmt/portlint/Makefile @@ -6,7 +6,7 @@ # $FreeBSD$ # -DISTNAME= portlint-2.1.1 +DISTNAME= portlint-2.1.2 CATEGORIES= devel DISTFILES= #empty diff --git a/ports-mgmt/portlint/src/portlint.pl b/ports-mgmt/portlint/src/portlint.pl index 9def9545f34f..f8980d20510a 100644 --- a/ports-mgmt/portlint/src/portlint.pl +++ b/ports-mgmt/portlint/src/portlint.pl @@ -227,10 +227,15 @@ sub checkdescr { "characters."); } if ($tmp =~ /[\033\200-\377]/) { - &perror("WARN: pkg/DESCR includes iso-8859-1, or ". - "other local characters. $file should be". + &perror("WARN: $file includes iso-8859-1, or ". + "other local characters. $file should be ". "plain ascii file."); } + if ($file =~ m/COMMENT/) { + if (($tmp !~ /^[A-Z].*$/) || ($tmp =~ m/\.$/)) { + &perror("WARN: pkg/COMMENT should begin with a capital, and end without a period"); + } + } close(IN); } @@ -245,6 +250,10 @@ sub checkplist { local($infooverwrite) = (0); local($rcsidseen) = (0); + local(@exec_info) = (); + local(@unexec_info) = (); + local(@infofile) = (); + open(IN, "< $portdir/$file") || return 0; while (<IN>) { if ($_ =~ /[ \t]+\n?$/) { @@ -264,12 +273,16 @@ sub checkplist { if ($_ =~ /^\@(cwd|cd)[ \t]+(\S+)/) { $curdir = $2; } elsif ($_ =~ /^\@unexec[ \t]+rmdir/) { + if ($_ !~ /true$/) { &perror("WARN: use \"\@dirrm\" ". "instead of \"\@unexec rmdir\"."); - } elsif ($_ =~ /^\@exec[ \t]+install-info/) { + } + } elsif ($_ =~ /^\@exec[ \t]+install-info\s+(.+)\s+(.+)$/) { $infoinstallseen = $.; - } elsif ($_ =~ /^\@unexec[ \t]+install-info[ \t]+--delete/) { + push(@exec_info, $1); + } elsif ($_ =~ /^\@unexec[ \t]+install-info[ \t]+--delete\s+(.+)\s+(.+)$/) { $inforemoveseen = $.; + push(@unexec_info, $1); } elsif ($_ =~ /^\@(exec|unexec)/) { if ($ldconfigwithtrue && /ldconfig/ @@ -300,6 +313,7 @@ sub checkplist { $infoseen = $.; $infoafterinstall++ if ($infoinstallseen); $infobeforeremove++ if (!$inforemoveseen); + push(@infofile, $_); } if ($_ =~ /^info\/dir$/) { @@ -346,6 +360,20 @@ sub checkplist { } } +# check that every infofile has an exec install-info and unexec install-info + $exec_install = join(/ /, @exec_info); + $exec_install .= ' '; + $unexec_install = join(/ /, @unexec_info); + $unexec_install .= ' '; + foreach $if (@infofile) { + if ($exec_install !~ m/\%D\/$if/) { + &perror("FATAL: you need an '\@exec install-info \%D/$if \%D/info/dir' line in your PLIST"); + } + if ($unexec_install !~ m/\%D\/$if/) { + &perror("FATAL: you need an '\@unexec install-info --delete \%D/$if \%D/info/dir' line in your PLIST"); + } + } + if ($rcsidinplist && !$rcsidseen) { &perror("FATAL: RCS tag \"\$$rcsidstr\$\" must be present ". "in $file as \@comment.") @@ -360,7 +388,7 @@ sub checkplist { &perror("FATAL: install-info must be used to ". "add/delete entries into \"info/dir\"."); } - &perror("FATAL: \"\@exec install-info\" must be placed ". + &perror("FATAL: \"\@exec install-info \%D/... \%D/info/dir\" must be placed ". "after all the info files."); } elsif ($infoafterinstall) { &perror("FATAL: move \"\@exec install-info\" line to make ". @@ -368,7 +396,7 @@ sub checkplist { "(currently on line $infoinstallseen in $file)"); } if (!$inforemoveseen) { - &perror("FATAL: \"\@unexec install-info --delete\" must ". + &perror("FATAL: \"\@unexec install-info --delete \%D/... \%D/info/dir\" must ". "be placed before any of the info files listed."); } elsif ($infobeforeremove) { &perror("FATAL: move \"\@exec install-info --delete\" ". @@ -688,7 +716,7 @@ EOF "not by \"$1\"."); } print "OK: checking CATEGORIES.\n" if ($verbose); - if ($tmp !~ /\nCATEGORIES(?=)/) { + if ($tmp !~ /\nCATEGORIES[+?]?=/) { &perror("FATAL: CATEGORIES has to be there."); } if ($tmp =~ /\nCATEGORIES([^?+]=)/) { @@ -730,6 +758,11 @@ EOF &perror("FATAL: URL \"$i\" contains ". "extra \":\"."); } + if ($i =~ m#www.freebsd.org/~.+/#i) { + &perror("WARN: URL \"$i\" ". + "www.FreeBSD.org should be ". + "people.FreeBSD.org"); + } unless (&is_predefined($i)) { print "OK: URL \"$i\" ok.\n" if ($verbose); @@ -786,6 +819,8 @@ EOF || $k =~ /^[0-9]*[A-Za-z]?[0-9]*(\.[0-9]*[A-Za-z]?[0-9]*)*$/) { print "OK: trailing part of PKGNAME\"-$k\" ". "looks fine.\n" if ($verbose); + } elsif ($k =~ /\$\{.+\}$/) { + &perror("WARN: using variable, \"$k\", as verison number"); } else { &perror("FATAL: version number part of PKGNAME". (($pkgname eq '') @@ -1000,6 +1035,7 @@ EOF # check port dir existence $k = $m{'dir'}; $k =~ s/\${PORTSDIR}/$ENV{'PORTSDIR'}/; + $k =~ s/\$[\({]PORTSDIR[\)}]/$ENV{'PORTSDIR'}/; if (! -d $k) { &perror("WARN: no port directory $k ". "found, even though it is ". |