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 = '';
if ($data{'source'}) {
$src = $data{'source'};
- $src_version = $1
- if $src =~ s/\s+\((.*)\).*//; # strip version info
+ $src =~ s/\s+.*//; # strip version info
}
$data{'source'} = $src;
- $data{'source-version'} = $src_version if $src_version;
my $descr = $data{'description'};
my $did = undef;
if (exists($descriptions{$descr})) {
next if $key eq 'package' or $key eq 'version' or $key eq 'architecture'
or $key eq 'maintainer';
print STDERR "WARN: $key ($suite/$archive/$data{package}/$data{architecture}\n" unless defined $value;
- $data .= "$key: $value\n";
+ $data .= "$key\00$value\00";
}
+ $data =~ s/.$//s;
$packages_all_db{"$data{'package'} $data{'architecture'} $data{'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];
}