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

Bug#657557: [PATCH 2/4] Add support for long descriptions in suites above squeeze.



Use description-md5 from English translations (when available) to
restore the long descriptions during package processing.

Fix for:
  http://bugs.debian.org/657557

Archive change:
  http://lists.debian.org/debian-devel-announce/2012/01/msg00004.html
---
 bin/parse-packages |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/bin/parse-packages b/bin/parse-packages
index a1c8d98..b926982 100755
--- a/bin/parse-packages
+++ b/bin/parse-packages
@@ -59,6 +59,10 @@ $/ = "";
 -d "$DBDIR/xapian.old" && rmtree("$DBDIR/xapian.old");
 mkpath( "$DBDIR/xapian.new" );
 
+# Needed to compensate removal of long descriptions from Packages files:
+my %descriptions_translated_db;
+tie %descriptions_translated_db, "DB_File", "files/db/descriptions_translated.db", O_RDONLY, 0666, $DB_BTREE;
+
 for my $suite (@SUITES) {
     my %package_names_suite = ();
     my %packages_all_db;
@@ -129,6 +133,23 @@ for my $suite (@SUITES) {
 		    $data{'tag'} = join ", ", @tags;
 		}
 
+		# If description-md5 is present, use a lookup, thanks
+		# to the English translation which got processed right
+		# before:
+		if ($data{'description-md5'}) {
+		    # The short description is a nice fallback:
+		    my $description = $data{'description'};
+		    my $lookup = $descriptions_translated_db{$data{'description-md5'}};
+		    if ($lookup) {
+			while ($lookup =~ /([^\001]*)\001([^\000]*)\000/g) {
+			    my ($language, $translated_description) = ($1, $2);
+			    $description = $translated_description
+				if $language eq 'en';
+			}
+			$data{'description'} = $description;
+		    }
+		}
+
 		# we add some additional data here
 		my $descr = "$data{'description'}\000$data{'package'}\000"
 		    .($data{'tag'}||'');
@@ -194,6 +215,8 @@ for my $suite (@SUITES) {
     untie %packages_all_db;
 }
 
+untie %descriptions_translated_db;
+
 print "Writing databases...\n";
 my %packages_small_db;
 tie %packages_small_db, "DB_File", "$DBDIR/packages_small.db.new",
-- 
1.7.2.5




Reply to: