X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=bin%2Fparse-packages;h=64a00cdf125d897e2d039f1746dffc94ab43f15b;hb=d02a2656068707e6928642c632f553c8c8770ea9;hp=fe61ca2269afc5b9f5e29104d7eb42f6ab713b3c;hpb=fbf34c66a6f4782ffc1fdad8e26dbefb2a395229;p=deb%2Fpackages.git diff --git a/bin/parse-packages b/bin/parse-packages index fe61ca2..64a00cd 100755 --- a/bin/parse-packages +++ b/bin/parse-packages @@ -32,6 +32,7 @@ my $MAX_PACKAGE_POSTFIXES = 100; use DB_File; use Storable; use File::Path; +use Digest::MD5; use Deb::Versions; use Lingua::Stem v0.82; use Search::Xapian; @@ -106,6 +107,25 @@ for my $suite (@SUITES) { $src =~ s/\s+.*//o; # strip version info } $data{'source'} = $src; + + # expand tags like devel::{lang:c,lang:c++} + if ($data{'tag'} && $data{'tag'} =~ /\{/) { + my @complete_tags = split(/, /, $data{'tag'}); + my @tags; + foreach (@complete_tags) { + my ($facet, $tag) = split( /::/, $_, 2); + if ($tag =~ s/^\{(.+)\}$/$1/) { + foreach (split( /,/, $tag )) { + push @tags, "${facet}::$_"; + } + } else { + push @tags, "${facet}::$tag"; + } + } + my $old = $data{tag}; + $data{'tag'} = join ", ", @tags; + } + # we add some additional data here my $descr = "$data{'description'}\000$data{'package'}\000" .($data{'tag'}||''); @@ -119,6 +139,7 @@ for my $suite (@SUITES) { $descriptions[$did] = $descr; $descriptions{$descr} = $did; } + $data{'description-md5'} = Digest::MD5::md5_hex($data{'description'}, "\n"); $data{'description'} = $did; $packages_descriptions{"$data{'package'} $data{'version'} $data{'architecture'}"} = $did; $descriptions_packages{$did} .= @@ -244,7 +265,6 @@ my %descriptions_db; tie %descriptions_db, "DB_File", "$DBDIR/descriptions.db.new", O_RDWR|O_CREAT, 0666, $DB_BTREE or die "Error creating DB: $!"; -open DESCR, ">", "$DBDIR/descriptions.txt" or die "Error creating descriptions textfile"; print "Index $#descriptions descriptions\n"; for (my $i=1; $i<= $#descriptions; $i++) { my $plain_description = $descriptions[$i]; @@ -257,7 +277,6 @@ for (my $i=1; $i<= $#descriptions; $i++) { $plain_description = " $plain_description "; $plain_description =~ s/[(),.-]+//og; $plain_description =~ s#[^a-z0-9_/+]+# #og; - print DESCR "$plain_description\n"; #XAPIAN eval { @@ -281,7 +300,6 @@ for (my $i=1; $i<= $#descriptions; $i++) { $descriptions_db{$i} = $only_desc; } -close DESCR; untie %descriptions_db; $xapian_db->flush; undef $xapian_db; @@ -330,6 +348,5 @@ rename("$DBDIR/packages_descriptions.db.new", "$DBDIR/packages_descriptions.db"); rename("$DBDIR/descriptions_packages.db.new", "$DBDIR/descriptions_packages.db"); -rename("$DBDIR/descriptions.txt.new", "$DBDIR/descriptions.txt"); rename("$DBDIR/descriptions.db.new", "$DBDIR/descriptions.db"); rename("$DBDIR/package_postfixes.db.new", "$DBDIR/package_postfixes.db");