From nobody@FreeBSD.org  Mon Jun  3 15:12:58 2013
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1])
	by hub.freebsd.org (Postfix) with ESMTP id 47A12C75
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  3 Jun 2013 15:12:58 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from oldred.freebsd.org (oldred.freebsd.org [8.8.178.121])
	by mx1.freebsd.org (Postfix) with ESMTP id 1EE701293
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  3 Jun 2013 15:12:58 +0000 (UTC)
Received: from oldred.freebsd.org ([127.0.1.6])
	by oldred.freebsd.org (8.14.5/8.14.7) with ESMTP id r53FCvb1048531
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 3 Jun 2013 15:12:57 GMT
	(envelope-from nobody@oldred.freebsd.org)
Received: (from nobody@localhost)
	by oldred.freebsd.org (8.14.5/8.14.5/Submit) id r53FCvVs048526;
	Mon, 3 Jun 2013 15:12:57 GMT
	(envelope-from nobody)
Message-Id: <201306031512.r53FCvVs048526@oldred.freebsd.org>
Date: Mon, 3 Jun 2013 15:12:57 GMT
From: "Ilya A. Arkhipov" <rum1cro@yandex.ru>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] ports-mgmt/portlint Adding one more check for optionsng in portlint.
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         179262
>Category:       ports
>Synopsis:       [patch] ports-mgmt/portlint Adding one more check for optionsng in portlint.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    marcus
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jun 03 15:20:00 UTC 2013
>Closed-Date:    Sun Jul 14 16:16:13 UTC 2013
>Last-Modified:  Sun Jul 14 16:16:13 UTC 2013
>Originator:     Ilya A. Arkhipov
>Release:        FreeBSD 10.0-CURRENT
>Organization:
Rambler Internet Holding LLC
>Environment:
FreeBSD m1cro.park 10.0-CURRENT FreeBSD 10.0-CURRENT #2 r247397: Wed Feb 27 16:06:42 MSK 2013     m1cro@m1cro.park:/home/m1cro/makepro/linuxulator/obj/usr/home/m1cro/makepro/linuxulator/sys/MICROKERNEL  amd64
>Description:
I've added one check for portlint on the case when OPTIONS_RADIO/OPTIONS_SINGLE/OPTIONS_MULTI/OPTIONS_GROUP defined but OPTIONS_{RADIO/SINGLE/MULTI/GROUP}_SOMETHING no.
>How-To-Repeat:
Use it for example:
OPTIONS_SINGLE=         UNICODE
OPTIONS_SINGLE_UCS=     UCS2 UCS4
Should be:
OPTIONS_SINGLE=         UNICODE
OPTIONS_SINGLE_UNICODE=     UCS2 UCS4
>Fix:
You can find patch in attach or on http://m1cro.tk/ports/portlint/portlint_optioncheck.patch

I know it looks ugly but I don't know how should be does without portlint's refactoring.


Patch attached with submission follows:

--- /usr/ports/ports-mgmt/portlint/src/portlint.pl	2013-05-16 20:35:01.541157011 +0400
+++ /home/m1cro/makepro/portlint.pl	2013-06-03 16:03:38.175155134 +0400
@@ -197,7 +197,8 @@
 	PKGDIR COMMENT DESCR PLIST PKGCATEGORY PKGINSTALL PKGDEINSTALL
 	PKGREQ PKGMESSAGE DISTINFO_FILE .CURDIR USE_LDCONFIG USE_AUTOTOOLS
 	USE_GNOME INDEXFILE PKGORIGIN CONFLICTS PKG_VERSION PKGINSTALLVER
-	PLIST_FILES OPTIONS OPTIONS_DEFINE INSTALLS_OMF USE_GETTEXT USE_RC_SUBR
+	PLIST_FILES OPTIONS OPTIONS_DEFINE OPTIONS_RADIO OPTIONS_SINGLE
+	OPTIONS_MULTI OPTIONS_GROUP INSTALLS_OMF USE_GETTEXT USE_RC_SUBR
 	DIST_SUBDIR ALLFILES IGNOREFILES CHECKSUM_ALGORITHMS INSTALLS_ICONS
 	GNU_CONFIGURE CONFIGURE_ARGS MASTER_SITE_SUBDIR LICENSE LICENSE_COMB
 );
@@ -1258,7 +1259,7 @@
 	my($realwrksrc, $wrksrc, $nowrksubdir) = ('', '', '');
 	my(@mman, @pman);
 	my(@mopt, @oopt);
-	my(@nmopt, @noopt);
+	my(@nmopt, @noopt, @aoopt);
 	my($pkg_version, $versiondir, $versionfile) = ('', '', '');
 	my $useindex = 0;
 	my %deprecated = ();
@@ -1521,6 +1522,25 @@
 		&perror("WARN", $file, -1, "Use of OPTIONS is obsolete. Use the ".
 			"new options framework.");
 	}
+
+	foreach my $i ("OPTIONS_RADIO","OPTIONS_SINGLE",
+				   "OPTIONS_MULTI","OPTIONS_GROUP") {
+		@aoopt = split(/\s+/, $makevar{$i});
+		if (scalar(@aoopt)) {
+			foreach my $j (@aoopt) {
+				my $ocmd = "make -V $makeenv ${i}_${j}";
+				my @ocount;
+				for (split(/\n/, qx($ocmd))) {
+					$makevar{"${i}_${j}"} = $_;
+					@ocount = split(/\s+/, $makevar{"${i}_${j}"});
+				}
+				if (!scalar(@ocount)) {
+					&perror("FATAL", $file, -1, "Description for ${i}_${j} not exist");
+				}
+			}
+		}
+	}
+
 	pos($whole) = 0;
 	while ($whole =~ /\(?\s*WITH(?:OUT)?_(\w+)\s*\)?/mg) {
 		push @mopt, $1;


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->marcus 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Mon Jun 3 15:20:07 UTC 2013 
Responsible-Changed-Why:  
Over to maintainer (via the GNATS Auto Assign Tool) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=179262 
State-Changed-From-To: open->closed 
State-Changed-By: marcus 
State-Changed-When: Sun Jul 14 16:16:00 UTC 2013 
State-Changed-Why:  
Committed, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=179262 
>Unformatted:
