[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#187670: tag 187670 + patch



tag 187670 + patch
thanks

This untested patch should cause packages.debian.org to show the
package information for the highest version in the distribution.

--- htmlscripts/create_package_pages.pl.~1.4.~	Mon Mar 24 19:55:25 2003
+++ htmlscripts/create_package_pages.pl	Mon Apr  7 15:18:40 2003
@@ -181,25 +181,25 @@
 sub process_package() {
 	chop $package_info;
 	@package_pieces = split(/\n\b/, $package_info);
+	foreach (@field) {
+		$newpackage{$_} = '';
+	}
 	foreach (@package_pieces) {
 		if (/^Package:\s+(.*)$/) {
 			$pack = $1;
-			foreach (@field) {
-				$package{$pack}{$_} = '';
-			}
-			$package{$pack}{'source-dir'} = [];
-			$package{$pack}{'source-files'} = [];
+			$newpackage{'source-dir'} = [];
+			$newpackage{'source-files'} = [];
 		}
 		elsif (/^Description:\s+(.*?)\n(.*)$/so) {
-			$package{$pack}{'short-desc'} = $1;
+			$newpackage{'short-desc'} = $1;
 			#$long_desc = $2;
 			#$long_desc =~ s/(\n|\A) /\n/sgo;
 			#$long_desc =~ s,(http://[\S~-]+?/?)([)]?[']?[.\,]?(\s|$)),<a href=\"$1\">$1</a>$2,go;
-			$package{$pack}{'long-desc'} = $2;
+			$newpackage{'long-desc'} = $2;
 		}
 		elsif (/^Description:\s+(.*?)$/so) {
-			$package{$pack}{'short-desc'} = $1;
-			$package{$pack}{'long-desc'} = "Package did not provide a long description. A bug ".
+			$newpackage{'short-desc'} = $1;
+			$newpackage{'long-desc'} = "Package did not provide a long description. A bug ".
 					"should be filed against it.";
 		}
 		elsif (/^(pre-depends|depends|recommends|suggests|provides|conflicts|replaces):\s+(.*)$/sio) {
@@ -208,53 +208,70 @@
 			$value =~ s/\n//sgo;
 			$value =~ s/\s*,\s*/,/go;
 			$value =~ s/\s*\|\s*/|/go;
-			$package{$pack}{lc($dependency_type)} = lc($value);
+			$newpackage{lc($dependency_type)} = lc($value);
 		}
 		elsif (/^section:\s+(.*)$/io) {
 			$value = $1;
 # TODO: fix it to differentiate between non-US/{main,contrib,non-free}
 			if ($value =~ /non-us/io) {
-				$package{$pack}{'distrib'} = lc($value);
-				$package{$pack}{'section'} = 'non-us';
+				$newpackage{'distrib'} = lc($value);
+				$newpackage{'section'} = 'non-us';
 			} elsif ($value =~ /(contrib|non-free)/io) {
-				$package{$pack}{'distrib'} = lc($1);
-				$package{$pack}{'section'} = lc($value);
-				$package{$pack}{'section'} =~ s,^(.*)/,,;
+				$newpackage{'distrib'} = lc($1);
+				$newpackage{'section'} = lc($value);
+				$newpackage{'section'} =~ s,^(.*)/,,;
 # TODO: likewise
 			} elsif ($experimental) {
-				$package{$pack}{'distrib'} = 'experimental';
-				$package{$pack}{'section'} = lc($value);
+				$newpackage{'distrib'} = 'experimental';
+				$newpackage{'section'} = lc($value);
 			} else {
-				$package{$pack}{'distrib'} = 'main';
-				$package{$pack}{'section'} = lc($value);
+				$newpackage{'distrib'} = 'main';
+				$newpackage{'section'} = lc($value);
 			}
 		}
 		elsif (/^source:\s+(\S+)(?:\s+\((.+)\))?$/io) {
-			$package{$pack}{'source'} = $1;
-			$package{$pack}{'source-version'} = $2 if (defined $2);
+			$newpackage{'source'} = $1;
+			$newpackage{'source-version'} = $2 if (defined $2);
 		}
 		elsif (/^([\w-]+):\s+(.*)$/so) {
-			$package{$pack}{lc($1)} = $2;
+			$newpackage{lc($1)} = $2;
 		}
 		else {
 			die "Bad entry for package $pack";
 		}
 		if (m,^Filename: pool/updates/,i) {
-			$package{$pack}{'distrib'} = 'security';
+			$newpackage{'distrib'} = 'security';
 		}
 	}
+	
 	# print $pack."\n";
-	# foreach (keys %{$package{$pack}}) {
+	# foreach (keys %{$newpackage}) {
 	# 	if (/source-files/) {
 	# 		print "  source-files:\n";
-	# 		foreach (@{$package{$pack}{'source-files'}}) {
+	# 		foreach (@{$newpackage{'source-files'}}) {
 	# 			print "     $_\n";
 	# 		}
 	# 	}
 	# 	else {
-	# 		print "  $_ = $package{$pack}{$_}\n";
+	# 		print "  $_ = $newpackage{$_}\n";
 	# 	}
 	# }
+
+	if (! exists ($package{$pack})) {
+		foreach (@field) {
+			$package{$pack}{$_} = $newpackage{$_}
+		}
+	}
+	else {
+		system("dpkg", "--compare-versions",
+		       $package{$pack}{'version'}, '<',
+		       $newpackage{'version'});
+		if (($? >> 8) == 0) {
+			foreach (@field) {
+				$package{$pack}{$_} = $newpackage{$_}
+			}
+		}
+	}
 }
 
 sub print_everything() {


Matt
-- 
It's most certainly GNU/Linux, not Linux.  Read more at
http://www.gnu.org/gnu/why-gnu-linux.html.



Reply to: