Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Oct 2014 23:40:03 +0000 (UTC)
From:      Joe Marcus Clarke <marcus@FreeBSD.org>
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
Message-ID:  <201410082340.s98Ne3CW085218@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 = <RCIN>;
+						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}.");
 			}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410082340.s98Ne3CW085218>