use strict;
use lib './lib';
+$| = 1;
+
my $what = $ARGV[0] ? "non-free" : "*";
# max. distinct results for a given package postfix
my $MAX_PACKAGE_POSTFIXES = 100;
for my $archive (@ARCHIVES) {
for my $suite (@SUITES) {
+ my %virtual_packages = ();
print "Reading $archive/$suite...\n";
my %packages_all_db;
tie %packages_all_db, "DB_File", "$DBDIR/packages_all_$suite.db.new",
# Skip double package
next if exists($packages_all_db{"$data{'package'} $data{'architecture'} $data{'version'}"});
+ if ($data{'provides'}) {
+ foreach (split /\s*,\s*/, $data{'provides'}) {
+ $virtual_packages{$_}{$data{'package'}}++;
+ }
+ }
$package_names{$data{'package'}} = 1;
my $src = $data{'package'};
my $src_version = '';
= $data;
}
+ foreach (keys %virtual_packages) {
+ my @provided_by = keys %{$virtual_packages{$_}};
+ $packages_small{$_} .= "$archive $suite virtual v v v v @provided_by\000";
+ }
+
untie %packages_all_db;
}
}
open DESCR, ">", "$DBDIR/descriptions.txt" or die "Error creating descriptions textfile";
for (my $i=1; $i<= $#descriptions; $i++) {
my $plain_description = $descriptions[$i];
- $plain_description =~ s/\n .\n/ /og;
- $plain_description =~ s/[\n \t]+/ /og;
+# WARNING: This needs to correspond with what happens in
+# Packages/Search.pm:do_fulltext_search
+ $plain_description =~ tr [A-Z] [a-z];
+ # ensure one space on both ends
+ $plain_description = " $plain_description ";
+ $plain_description =~ s/[(),.-]+//og;
+ $plain_description =~ s#[^a-z0-9_/+]+# #og;
print DESCR "$plain_description\n";
$descriptions_db{$i} = $descriptions[$i];
}