Bug 188389

Summary: [patch] ports-mgmt/portlint various improvements
Product: Ports & Packages Reporter: Alex Kozlov <spam>
Component: Individual Port(s)Assignee: Joe Marcus Clarke <marcus>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Alex Kozlov 2014-04-09 07:20:01 UTC
- Remove www.freebsd.org/~$user check from urlcheck()
- Remove 'in the module alias name' warning
- Remove 'binary -ko'
- Silence warnings in case if svn binary does not exist (try 2)
- Use more strict regexp for share/doc detection
- Add sdl-config to direct commands check
- Fix phase 2 of direct use of pathnames check
- Ignore comments in direct use of pathnames check
- Support nested knobs in plist for OPTIONS_SUB check
- Add check for @dirrm(try) libdata/pkgconfig in plist
- Remove USE_MESA, INSTALLS_SHLIB, APACHE_COMPAT, USE_XPM from deprecated
  macro check
- Fix 'Consider adding support for a NLS knob to conditionally disable gettext'
  warning in the case of use 'NLS_USES= gettext'

Fix: 

Apply the patch: http://people.freebsd.org/~ak/patch-portlint.txt
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2014-04-09 07:20:04 UTC
Responsible Changed
From-To: freebsd-ports-bugs->marcus

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2014-04-19 19:39:15 UTC
Author: marcus
Date: Sat Apr 19 18:39:10 2014
New Revision: 351604
URL: http://svnweb.freebsd.org/changeset/ports/351604
QAT: https://qat.redports.org/buildarchive/r351604/

Log:
  Update to 2.15.1.
  
  * Remove www.freebsd.org/~$user check from urlcheck()
  * Remove 'in the module alias name' warning
  * Remove 'binary -ko'
  * Silence warnings in case if svn binary does not exist (try 2)
  * Use more strict regexp for share/doc detection
  * Add sdl-config to direct commands check
  * Fix phase 2 of direct use of pathnames check
  * Ignore comments in direct use of pathnames check
  * Support nested knobs in plist for OPTIONS_SUB check
  * Add check for @dirrm(try) libdata/pkgconfig in plist
  * Remove USE_MESA, INSTALLS_SHLIB, APACHE_COMPAT, USE_XPM from deprecated
    macro check
  * Fix 'Consider adding support for a NLS knob to conditionally disable gettext'
    warning in the case of use 'NLS_USES= gettext'
  
  PR:		188389
  Submitted by:	ak

Modified:
  head/ports-mgmt/portlint/Makefile
  head/ports-mgmt/portlint/src/portlint.pl

Modified: head/ports-mgmt/portlint/Makefile
==============================================================================
--- head/ports-mgmt/portlint/Makefile	Sat Apr 19 17:10:40 2014	(r351603)
+++ head/ports-mgmt/portlint/Makefile	Sat Apr 19 18:39:10 2014	(r351604)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	portlint
-PORTVERSION=	2.15.0
+PORTVERSION=	2.15.1
 CATEGORIES=	ports-mgmt
 MASTER_SITES=	# none
 DISTFILES=	# none

Modified: head/ports-mgmt/portlint/src/portlint.pl
==============================================================================
--- head/ports-mgmt/portlint/src/portlint.pl	Sat Apr 19 17:10:40 2014	(r351603)
+++ head/ports-mgmt/portlint/src/portlint.pl	Sat Apr 19 18:39:10 2014	(r351604)
@@ -15,7 +15,7 @@
 # was removed.
 #
 # $FreeBSD$
-# $MCom: portlint/portlint.pl,v 1.312 2014/02/23 20:06:34 marcus Exp $
+# $MCom: portlint/portlint.pl,v 1.314 2014/04/19 18:36:43 marcus Exp $
 #
 
 use strict;
@@ -50,7 +50,7 @@ $portdir = '.';
 # version variables
 my $major = 2;
 my $minor = 15;
-my $micro = 0;
+my $micro = 1;
 
 sub l { '[{(]'; }
 sub r { '[)}]'; }
@@ -353,7 +353,7 @@ if ($committer) {
 			$File::Find::prune = 1;
 		} elsif (-f) {
 			my $fullpath = $makevar{'.CURDIR'}.'/'.$fullname;
-			my $result = `svn -q status $fullpath`;
+			my $result = `type svn >/dev/null 2>&1 && svn -q status $fullpath`;
 
 			chomp $result;
 			if (substr($result, 0, 1) eq '?') {
@@ -601,7 +601,7 @@ sub checkplist {
 
 		# store possible OPTIONS knobs for OPTIONS_SUB
 		if ($makevar{OPTIONS_SUB}) {
-			if ($_ =~ /^\%\%([^%]+)\%\%/) {
+			while (/\%\%([^%]+)\%\%/g) {
 				if ($1 =~ /PORTDOCS/) {
 					push @popt, "DOCS";
 				} elsif ($1 =~ /PORTEXAMPLES/) {
@@ -621,11 +621,18 @@ sub checkplist {
 			&perror("WARN", $file, $., "use \%\%SITE_PERL\%\% ".
 					"instead of lib/perl5/site_perl/\%\%PERL_VER\%\%.");
 		}
+
 		if (m'([\w\d]+-portbld-freebsd\d+\.\d+)') {
 			&perror("WARN", $file, $., "possible direct use of the ".
 				"CONFIGURE_TARGET value ($1).  Consider using the plist ".
 				"substitution %%CONFIGURE_TARGET%% instead.");
 		}
+
+		if (m'\@dirrm(try)?\s+libdata/pkgconfig') {
+			&perror("FATAL", $file, $., "libdata/pkgconfig should not be ".
+				"removed.  It is listed in BSD.local.dist.");
+		}
+
 		$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 ($_ =~ /^\@/) {
@@ -860,7 +867,7 @@ sub checkplist {
 				"could you please avoid it?");
 		}
 
-		if ("$curdir/$_" =~ m#^$localbase/share/doc#) {
+		if ("$curdir/$_" =~ m#^$localbase/share/doc/#) {
 			print "OK: $file [$.]: seen installation to share/doc. ".
 				"($curdir/$_)\n" if ($verbose);
 			$sharedocused++;
@@ -1037,12 +1044,6 @@ sub checkpatch {
 	while (<IN>) {
 		$whole .= $_;
 	}
-	if ($committer && $whole =~ /\$([A-Z][A-Za-z0-9]+)(:[^\n]+)?\$/) {
-		my $lineno = &linenumber($`);
-		&perror("WARN", $file, $lineno, "includes possible RCS tag \"\$$1\$\". ".
-			"use binary mode (-ko) on commit/import.") unless
-			$1 eq $rcsidstr;
-	}
 
 	if ($committer && $whole =~ /\wjavavm\w/) {
 		my $lineno = &linenumber($`);
@@ -1542,12 +1543,16 @@ sub checkmakefile {
 	if ($makevar{OPTIONS_SUB}) {
 		if ($makevar{PLIST_FILES}) {
 			foreach my $i (split(/\s+/, $makevar{PLIST_FILES})) {
-				push @popt, $1 if $i =~ /^\%\%([^%]+)\%\%/;
+				while ($i =~ /\%\%([^%]+)\%\%/g) {
+					push @popt, $1;
+				}
 			}
 		}
 		if ($makevar{PLIST_DIRS}) {
 			foreach my $i (split(/\s+/, $makevar{PLIST_DIRS})) {
-				push @popt, $1 if $i =~ /^\%\%([^%]+)\%\%/;
+				while ($i =~ /\%\%([^%]+)\%\%/g) {
+					push @popt, $1;
+				}
 			}
 		}
 		# special cases for PORTDOCS/PORTEXAMPLES
@@ -1766,7 +1771,7 @@ sub checkmakefile {
 	if ($sharedocused && $whole !~ /defined\s*\(?NOPORTDOCS\)?/
 		&& $whole !~ /def\s*\(?NOPORTDOCS\)?/) {
 		if ($makevar{NO_STAGE} && $docsused == 0
-			&& $whole !~ m#(\$[\{\(]PREFIX[\}\)]|$localbase)/share/doc#) {
+			&& $whole !~ m#(\$[\{\(]PREFIX[\}\)]|$localbase)/share/doc/#) {
 			&perror("WARN", $file, -1, "use \".if \${PORT_OPTIONS:MDOCS}\" to wrap ".
 				"installation of files into $localbase/share/doc.");
 		}
@@ -1788,7 +1793,8 @@ sub checkmakefile {
 	# whole file: check for USES[+]=gettext
 	#
 	print "OK: checking for USES=gettext without PORT_OPTIONS:MNLS.\n" if ($verbose);
-	if ($makevar{USES} =~ /\bgettext\b/ && $whole !~ /PORT_OPTIONS:MNLS/) {
+	if ($makevar{USES} =~ /\bgettext\b/ && $whole !~ /PORT_OPTIONS:MNLS/
+		&& $whole !~ /NLS_USES=.*\bgettext\b/) {
 		&perror("WARN", $file, -1, "Consider adding support for a NLS ".
 			"knob to conditionally disable gettext support.");
 	}
@@ -1799,11 +1805,7 @@ sub checkmakefile {
 	print "OK: checking for deprecated macros.\n" if $verbose;
 
 	%deprecated = (
-			USE_MESA		=> 'USE_GL',
 			USE_RCORDER		=> 'USE_RC_SUBR',
-			INSTALLS_SHLIB  => 'USE_LDCONFIG',
-			APACHE_COMPAT   => 'USE_APACHE',
-			USE_XPM         => 'USE_X11=xpm',
 	);
 
 	@deplist = (\%deprecated);
@@ -1841,7 +1843,7 @@ sub checkmakefile {
 awk basename brandelf cat chmod chown cp cpio dialog dirname egrep expr
 false file find gmake grep gzcat ldconfig ln md5 mkdir mv objcopy paste patch
 pax perl printf rm rmdir pkg_add pkg_delete pkg_info pkg_version
-ruby sed sh sort sysctl touch tr which xargs xmkmf
+ruby sed sdl-config sh sort sysctl touch tr which xargs xmkmf
 	)) {
 		$cmdnames{$i} = "\$\{\U$i\E\}";
 	}
@@ -1851,6 +1853,7 @@ ruby sed sh sort sysctl touch tr which x
 	$cmdnames{'gzip'} = '${GZIP_CMD}';
 	$cmdnames{'install'} = '${INSTALL_foobaa}';
 	$cmdnames{'python'} = '${PYTHON_CMD}';
+	$cmdnames{'sdl-config'} = '${SDL_CONFIG}';
 	$cmdnames{'strip'} = '${STRIP_CMD}';
 	$cmdnames{'unzip'} = '${UNZIP_CMD}';
 	$cmdnames{'pkg_create'} = '${PKG_CMD}';
@@ -2753,13 +2756,6 @@ DIST_SUBDIR EXTRACT_ONLY
 		}
 	}
 
-	# additional checks for committer.
-	if ($committer && $has_lang_cat) {
-		&perror("WARN", $file, -1, "be sure to include language code ".
-			"\"$port_lang-\" ".
-			"in the module alias name.");
-	}
-
 	if ($committer) {
 		if (opendir(DIR, ".")) {
 			my @tgz = grep(/\.tgz$/, readdir(DIR));
@@ -3403,20 +3399,21 @@ sub abspathname {
 		}
 	}
 
-	print "OK: checking direct use of pathnames, phase 1.\n" if ($verbose);
+	foreach my $s (split(/\n+/, $str)) {
+		print "OK: checking direct use of pathnames, phase 1.\n" if ($verbose);
 %cmdnames = split(/\n|\t+/, <<EOF);
 /usr/opt	\${PORTSDIR} instead
 $portsdir	\${PORTSDIR} instead
 $localbase	\${PREFIX} or \${LOCALBASE}, as appropriate
 EOF
-	foreach my $i (keys %cmdnames) {
-		if ($str =~ /$i/) {
-			&perror("WARN", $file, -1, "possible direct use of \"$&\" ".
-				"found. if so, use $cmdnames{$i}.");
+		foreach my $i (keys %cmdnames) {
+			if ($s =~ /^[^#]*$i/) {
+				&perror("WARN", $file, -1, "possible direct use of \"$&\" ".
+					"found. if so, use $cmdnames{$i}.");
+			}
 		}
-	}
 
-	print "OK: checking direct use of pathnames, phase 2.\n" if ($verbose);
+		print "OK: checking direct use of pathnames, phase 2.\n" if ($verbose);
 %cmdnames = split(/\n|\t+/, <<EOF);
 distfiles	\${DISTDIR} instead
 pkg		\${PKGDIR} instead
@@ -3425,10 +3422,12 @@ scripts		\${SCRIPTDIR} instead
 patches		\${PATCHDIR} instead
 work		\${WRKDIR} instead
 EOF
-	foreach my $i (keys %cmdnames) {
-		if ($str =~ /(\.\/|\$[\{\(]\.CURDIR[\}\)]\/|[ \t])(\b$i)\//) {
-			&perror("WARN", $file, -1, "possible direct use of \"$i\" ".
-				"found. if so, use $cmdnames{$i}.");
+		foreach my $i (keys %cmdnames) {
+			# use (?![\w-]) instead of \b to exclude pkg-*
+			if ($s =~ /^[^#]*(\.\/|\$[\{\(]\.CURDIR[\}\)]\/|[ \t])(\b$i)(?![\w-])/) {
+				&perror("WARN", $file, -1, "possible direct use of \"$i\" \"$s\" ".
+					"found. if so, use $cmdnames{$i}.");
+			}
 		}
 	}
 }
@@ -3493,11 +3492,6 @@ sub urlcheck {
 	&perror("FATAL", $file, -1, "URL \"$url\" contains ".
 				"extra \":\".");
 	}
-	if ($url =~ m#(www\.freebsd\.org)/~.+/#i) {
-		&perror("WARN", $file, -1, "URL \"$url\", ".
-			"$1 should be ".
-			"people.FreeBSD.org");
-	}
 }
 sub TRUE {1;}
 
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Joe Marcus Clarke freebsd_committer freebsd_triage 2014-04-19 19:39:20 UTC
State Changed
From-To: open->closed

Committed, thanks!