On Wed, Apr 23, 2008 at 06:54:14AM -0600, Bdale Garbee wrote:
> > So, may I suggest that contrib is just listed unconditionally?
> 
> However, I do think this is completely reasonable.  Since vrms is merely
> in information gathering and reporting tool that a human is going to
> look at the results from, as long as the contrib packages are called out
> and listed separately from the non-free packages, I can see no
> particular reason not to include such information in the output of the
> program by default.

Ok, here's a patch.

-- 
Robert Millan

"The technological evasion of the license is as unacceptable as the
 legal evasion of the license [...].  That's the provision in section
 1 regarding keys. [...]  We say one thing: when you sell somebody a
 home... give him the keys"  -- Eben Moglen on GPLv3
diff -ur vrms-1.13/vrms vrms-1.13.contrib/vrms
--- vrms-1.13/vrms	2007-07-15 10:30:51.000000000 +0200
+++ vrms-1.13.contrib/vrms	2008-04-23 15:16:47.000000000 +0200
@@ -104,6 +104,10 @@
 my %nonfree = ();
 my $is_other_nonfree = 0;	###  preset none found, yet
 my %other_nonfree = ();
+my $is_contrib = 0;		###  preset none found, yet
+my %contrib = ();
+my $is_other_contrib = 0;	###  preset none found, yet
+my %other_contrib = ();
 my %pkg_status = ();
 my $pkgcnt = 0;
 my $clumpcnt = 0;
@@ -163,7 +167,7 @@
 		($label, $section) = split(/:\s+/,$_,2);
 		print "\tsection=[$section]\n" if $debug >= 1;
 		$has_section = 1;	###  we have necessary section
-		if ($section =~ /non-free|restricted|multiverse/) {
+		if ($section =~ /contrib|non-free|restricted|multiverse/) {
 		    ###  read thru rest of array to find descr instead of waiting for it
 		    my $found_descr =0;
 		    while (! $found_descr) {
@@ -179,12 +183,22 @@
 			    $found_descr = 1;
 			}
 		    }
-		    if (lc $status eq 'installed') {
-			$is_nonfree = 1;
-			$nonfree{$pkg} = $shortdescr;
+		    if ($section =~ /contrib/) {
+			if (lc $status eq 'installed') {
+			    $is_contrib = 1;
+			    $contrib{$pkg} = $shortdescr;
+			} else {
+			    $is_other_contrib = 1;
+			    $other_contrib{$pkg} = $shortdescr;
+			}
 		    } else {
-			$is_other_nonfree = 1;
-			$other_nonfree{$pkg} = $shortdescr;
+			if (lc $status eq 'installed') {
+			    $is_nonfree = 1;
+			    $nonfree{$pkg} = $shortdescr;
+			} else {
+			    $is_other_nonfree = 1;
+			    $other_nonfree{$pkg} = $shortdescr;
+			}
 		    }
 		}
 		last;	### this is last desriptor of package we care about so end loop
@@ -229,7 +243,7 @@
 	    print "$pkgname\n";
 	}
     } else {
-	$~ = "head";
+	$~ = "nonfree_head";
 	write ;
 	$~ = "nfp";
 	foreach $pkgname (sort keys(%nonfree) ) {
@@ -250,7 +264,7 @@
 	    print "$pkgname\n";
 	}
     } else {
-	$~ = "partialhead";
+	$~ = "nonfree_partialhead";
 	write;
 	$~ = "pnf";
 	foreach $pkgname (sort keys(%other_nonfree)) {
@@ -262,29 +276,96 @@
     }
 }
 
-if (!$quiet and $nfcnt == 0 and $pnfcnt == 0) {
-    print "No non-free packages installed on $sysname!  rms would be proud.\n";
+my $cbcnt = 0;
+
+my $contribcnt = (keys %contrib);
+
+if($is_contrib) {
+    print "\n";
+    if($sparse) {
+	foreach $pkgname (sort keys (%contrib)) {
+	    $cbcnt++;
+	    print "$pkgname\n";
+	}
+    } else {
+	$~ = "contrib_head";
+	write ;
+	$~ = "cbp";
+	foreach $pkgname (sort keys(%contrib) ) {
+	    $cbcnt++;
+	    write ;
+	    print "  Reason: $reason{$pkgname}\n"
+		if (exists $reason{$pkgname} and $explain);
+	}
+    }
+}
+
+my $pcbcnt = 0;
+my $other_contribcnt = (keys %other_contrib);
+if($is_other_contrib) {
+    if($sparse) {
+	foreach $pkgname (sort keys(%other_contrib)) {
+	    $pcbcnt++;
+	    print "$pkgname\n";
+	}
+    } else {
+	$~ = "contrib_partialhead";
+	write;
+	$~ = "pcb";
+	foreach $pkgname (sort keys(%other_contrib)) {
+	    $pcbcnt++;
+	    write;
+	    print "  Reason: $reason{$pkgname}\n"
+		if (exists $reason{$pkgname} and $explain);
+	}
+    }
+}
+
+if (!$quiet and $nfcnt == 0 and $pnfcnt == 0 and $cbcnt == 0 and $pcbcnt == 0) {
+    print "No non-free or contrib packages installed on $sysname!  rms would be proud.\n"
 } elsif (!$quiet and !$sparse) {
-    my $total_nonfree = $nonfreecnt + $other_nonfreecnt;
-    my $total_installed = $pkgcnt;
-    my $percentage = $total_nonfree * 100 / $total_installed;
-    printf "\n  %d non-free packages, %2.1f%% of %d installed packages.\n", 
-    $total_nonfree, $percentage, $total_installed;
+    printf "\n";
+    if ($nfcnt != 0 or $pnfcnt != 0) {
+	my $total_nonfree = $nonfreecnt + $other_nonfreecnt;
+	my $total_installed = $pkgcnt;
+	my $percentage = $total_nonfree * 100 / $total_installed;
+	printf "  %d non-free packages, %2.1f%% of %d installed packages.\n", 
+	$total_nonfree, $percentage, $total_installed;
+    }
+    if ($cbcnt != 0 or $pcbcnt != 0) {
+	my $total_contrib = $contribcnt + $other_contribcnt;
+	my $total_installed = $pkgcnt;
+	my $percentage = $total_contrib * 100 / $total_installed;
+	printf "  %d contrib packages, %2.1f%% of %d installed packages.\n", 
+	$total_contrib, $percentage, $total_installed;
+    }
 }
 
 
-format head =
+format nonfree_head =
 @||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 "Non-free packages installed on $sysname"
 
 .
-format partialhead =
+format nonfree_partialhead =
 
 @||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 "Non-free packages with status other than installed on $sysname"
 
 .
 
+format contrib_head =
+@||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+"Contrib packages installed on $sysname"
+
+.
+format contrib_partialhead =
+
+@||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+"Contrib packages with status other than installed on $sysname"
+
+.
+
 format nfp =
 @<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 $pkgname, $nonfree{$pkgname}
@@ -295,3 +376,13 @@
 $pkgname, '(', $pkg_status{$pkgname},')', $other_nonfree{$pkgname}
 .
 
+format cbp =
+@<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+$pkgname, $contrib{$pkgname}
+.
+
+format pcb =
+@<<<<<<<<<<<<<<<<<<<<<<<< @<@<<@< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+$pkgname, '(', $pkg_status{$pkgname},')', $other_contrib{$pkgname}
+.
+
Only in vrms-1.13.contrib: vrms~

Reply via email to