From owner-svn-ports-head@FreeBSD.ORG Wed Oct 8 23:40:04 2014 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 332B6A40; Wed, 8 Oct 2014 23:40:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 14853E91; Wed, 8 Oct 2014 23:40:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s98Ne3nW085223; Wed, 8 Oct 2014 23:40:03 GMT (envelope-from marcus@FreeBSD.org) Received: (from marcus@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s98Ne3CW085218; Wed, 8 Oct 2014 23:40:03 GMT (envelope-from marcus@FreeBSD.org) Message-Id: <201410082340.s98Ne3CW085218@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: marcus set sender to marcus@FreeBSD.org using -f From: Joe Marcus Clarke Date: Wed, 8 Oct 2014 23:40:03 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r370494 - in head/ports-mgmt/portlint: . src X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2014 23:40:04 -0000 Author: marcus Date: Wed Oct 8 23:40:03 2014 New Revision: 370494 URL: https://svnweb.freebsd.org/changeset/ports/370494 QAT: https://qat.redports.org/buildarchive/r370494/ Log: Update to 2.15.5. * Do not report on DEBUG as an OPTION. [1] * Check for use of muted INSTALL_foo commands. * Warn on use of @dirrm[try]. * Check to make sure rc.d scripts contain a '# PROVIDE:' line. [2] * Check to see that the options provided to USES are sorted. [3] * Fix an errant "direct use of command" warning. [4] * Remove the check to see if StartupNotify is the empty string in DESKTOP_ENTRIES. This is allowed per the spec and per the porter's handbook. [5] * Check for empty lines in plist. [6] * Check for direct command use in SHEBANG_FILES. [7] PR: 192525 [1] 193464 [2] 193792 [3] 193793 [4] 193456 [5] 193794 [6] 193795 [7] Modified: head/ports-mgmt/portlint/Makefile head/ports-mgmt/portlint/src/portlint.pl Modified: head/ports-mgmt/portlint/Makefile ============================================================================== --- head/ports-mgmt/portlint/Makefile Wed Oct 8 22:41:59 2014 (r370493) +++ head/ports-mgmt/portlint/Makefile Wed Oct 8 23:40:03 2014 (r370494) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= portlint -PORTVERSION= 2.15.4 +PORTVERSION= 2.15.5 CATEGORIES= ports-mgmt MASTER_SITES= # none DISTFILES= # none Modified: head/ports-mgmt/portlint/src/portlint.pl ============================================================================== --- head/ports-mgmt/portlint/src/portlint.pl Wed Oct 8 22:41:59 2014 (r370493) +++ head/ports-mgmt/portlint/src/portlint.pl Wed Oct 8 23:40:03 2014 (r370494) @@ -15,7 +15,7 @@ # was removed. # # $FreeBSD$ -# $MCom: portlint/portlint.pl,v 1.327 2014/07/28 13:15:56 marcus Exp $ +# $MCom: portlint/portlint.pl,v 1.338 2014/10/08 23:35:33 marcus Exp $ # use strict; @@ -51,7 +51,7 @@ $portdir = '.'; # version variables my $major = 2; my $minor = 15; -my $micro = 4; +my $micro = 5; sub l { '[{(]'; } sub r { '[)}]'; } @@ -600,6 +600,10 @@ sub checkplist { $_ =~ s/\s+$//; $_ =~ s/\n$//; + if ($_ eq "") { + &perror("WARN", $file, $., "empty line found in plist."); + } + # store possible OPTIONS knobs for OPTIONS_SUB if ($makevar{OPTIONS_SUB}) { while (/\%\%([^%]+)\%\%/g) { @@ -634,6 +638,12 @@ sub checkplist { "removed. It is listed in BSD.local.dist."); } + if (m'\@dirrm(try)?\s') { + &perror("WARN", $file, $., "\@dirrm[try] is deprecated. If you ". + "require special directory handling, use \@dir instead and ". + "consult the porter's handbook."); + } + $seen_special++ if /[\%\@]/; $seen_dirrm_docsdir++ if /^(\%\%PORTDOCS\%\%)?\@dirrm\s+\%\%DOCSDIR\%\%/ || /^(\%\%PORTDOCS\%\%)?\@unexec\s+(\/bin\/)?rmdir\s+\%D\/\%\%DOCSDIR\%\%\s+2\>\s*\/dev\/null\s+\|\|\s+(\/usr\/bin\/)?true/; if ($_ =~ /^\@/) { @@ -1387,8 +1397,19 @@ sub checkmakefile { print "OK: checking for use of .elseif.\n" if ($verbose); if ($whole =~ /^\.\s*else\s*if/m) { my $lineno = &linenumber($`); - &perror("FATAL", $file, $lineno, "use of .elseif (or .else if) is not - supported in all versions of FreeBSD. Use .elif instead."); + &perror("FATAL", $file, $lineno, "use of .elseif (or .else if) is not ". + "supported in all versions of FreeBSD. Use .elif instead."); + } + + # + # whole file: use of @${INSTALL_foo} + # + print "OK: checking for use of muted INSTALL_ commands.\n" if ($verbose); + if ($whole =~ /^\s+\@\$\{INSTALL_/m) { + my $lineno = &linenumber($`); + &perror("WARN", $file, $lineno, "do not use muted INSTALL_foo ". + "commands (i.e., those that start with '\@'). These should be ". + "printed."); } # @@ -1580,7 +1601,7 @@ sub checkmakefile { } foreach my $i ((@opt, @aopt)) { # skip global options - next if ($i eq 'DOCS' or $i eq 'NLS' or $i eq 'EXAMPLES' or $i eq 'IPV6' or $i eq 'X11'); + next if ($i eq 'DOCS' or $i eq 'NLS' or $i eq 'EXAMPLES' or $i eq 'IPV6' or $i eq 'X11' or $i eq 'DEBUG'); if (!grep(/^$i$/, (@mopt, @popt))) { if ($whole !~ /\n${i}_($m)(.)?=[^\n]+/) { &perror("WARN", $file, -1, "$i is listed in ". @@ -1608,25 +1629,6 @@ sub checkmakefile { &perror("FATAL", $file, -1, "Use true/false (without quotes) instead of \${TRUE}/\${FALSE} in DESKTOP_ENTRIES."); } - my @dte_parts = split(/\s+/, $desktop_entries); - my $dtc = 0; - my $dte_quote = 0; - foreach my $dte_part (@dte_parts) { - if ($dtc % 5 == 0 && $dte_part eq '""') { - &perror("FATAL", $file, -1, "Use true/false (without quotes) instead of \${TRUE}/\${FALSE} in DESKTOP_ENTRIES."); - } - if ($dte_quote == 1 && $dte_part =~ /"$/) { - $dte_quote = 0; - } - if ($dte_part =~ /^"[^"]+$/) { - $dte_quote = 1; - next; - } - if (!$dte_quote) { - $dtc++; - } - } - # # whole file: USE_* as a user-settable option # @@ -1700,6 +1702,11 @@ sub checkmakefile { } } + if ($makevar{COMMENT} =~ /^An? / || $makevar{COMMENT} =~ /^The /) { + &perror("WARN", $file, -1, "COMMENT is not supposed to begin with ". + "'A ', 'An ', or 'The '."); + } + if ($whole =~ /\nIGNORE[+?]?=[ \t]+[^a-z \t]/ || $whole =~ /^IGNORE[+?]?=[ \t]+.*\.$/m) { my $lineno = &linenumber($`); @@ -1732,6 +1739,18 @@ sub checkmakefile { } # + # whole file: Check if USES is sorted + # + print "OK: checking to see if USES is sorted.\n" if ($verbose); + if ($makevar{USES} ne '') { + my @suses = sort(split / /, $makevar{USES}); + if (join(" ", @suses) ne $makevar{USES}) { + &perror("WARN", $file, -1, "the options to USES are not sorted. ". + "Please consider sorting them."); + } + } + + # # whole file: USE_GNOME=pkgconfig # print "OK: checking for USE_GNOME=pkgconfig.\n" if ($verbose); @@ -1909,6 +1928,7 @@ ruby sed sdl-config sh sort sysctl touch && $curline !~ /^WX_COMPS(.)?=[^\n]+$i/m && $curline !~ /^ONLY_FOR_ARCHS_REASON(.)?=[^\n]+$i/m && $curline !~ /^NOT_FOR_ARCHS_REASON(.)?=[^\n]+$i/m + && $curline !~ /^SHEBANG_FILES(.)?=[^\n]+$i/m && $curline !~ /^[A-Z0-9_]+_DESC=[^\n]+$i/m && $curline !~ /^\s*#.+$/m && $curline !~ /\-\-$i/m @@ -1936,6 +1956,8 @@ ruby sed sdl-config sh sort sysctl touch && $lm !~ /^MAINTAINER(.)?=[^\n]+($i\d*)/m && $lm !~ /^CATEGORIES(.)?=[^\n]+($i\d*)/m && $lm !~ /^USES(.)?=[^\n]+$i/m + && $lm !~ /^[A-Z0-9_]+_DESC=[^\n]+($i\d*)/m + && $lm !~ /^SHEBANG_FILES(.)?=[^\n]+($i\d*)/m && $lm !~ /^USE_AUTOTOOLS(.)?=[^\n]+($i\d*)/m && $lm !~ /^\s*#.+$/m && $lm !~ /^COMMENT(.)?=[^\n]+($i\d*)/m) { @@ -3227,7 +3249,26 @@ TEST_DEPENDS FETCH_DEPENDS DEPENDS_TARGE } elsif ($i eq '' && $mvar && $mvar ne '') { &perror("WARN", $file, -1, "possible undefined make variable ". "$mvar used as the value for USE_RC_SUBR."); + } elsif ($i ne '' && -f "files/$i.in") { + if (open(RCIN, "< files/$i.in")) { + my @rccontents = ; + my $found_provide = 0; + foreach my $line (@rccontents) { + if ($line =~ /^# PROVIDE:/) { + $found_provide = 1; + last; + } + } + if (!$found_provide) { + &perror("FATAL", "files/$i.in", -1, "rc.d script ". + "$i.in must contain a '# PROVIDE:' line in ". + "order to be started at boot time."); + } + + close(RCIN); + } } + } } } @@ -3435,7 +3476,21 @@ work \${WRKDIR} instead EOF foreach my $i (keys %cmdnames) { # use (?![\w-]) instead of \b to exclude pkg-* - if ($s =~ /^[^#]*(\.\/|\$[\{\(]\.CURDIR[\}\)]\/|[ \t])(\b$i)(?![\w-])/) { + if ($s =~ /^[^#]*(\.\/|\$[\{\(]\.CURDIR[\}\)]\/|[ \t])(\b$i)(?![\w-])/ + && $s !~ /^COMMENT(.)?=[^\n]+$i/m + && $s !~ /^IGNORE(.)?=[^\n]+$i/m + && $s !~ /^BROKEN(.)?=[^\n]+$i/m + && $s !~ /^RESTRICTED(.)?=[^\n]+$i/m + && $s !~ /^NO_PACKAGE(.)?=[^\n]+$i/m + && $s !~ /^NO_CDROM(.)?=[^\n]+$i/m + && $s !~ /^MAINTAINER(.)?=[^\n]+$i/m + && $s !~ /^CATEGORIES(.)?=[^\n]+$i/m + && $s !~ /^USES(.)?=[^\n]+$i/m + && $s !~ /^WX_COMPS(.)?=[^\n]+$i/m + && $s !~ /^SHEBANG_FILES(.)?=[^\n]+$i/m + && $s !~ /^[A-Z0-9_]+_DESC=[^\n]+$i/m + && $s !~ /^ONLY_FOR_ARCHS_REASON(.)?=[^\n]+$i/m + && $s !~ /^NOT_FOR_ARCHS_REASON(.)?=[^\n]+$i/m) { &perror("WARN", $file, -1, "possible direct use of \"$i\" \"$s\" ". "found. if so, use $cmdnames{$i}."); }