]> git.deb.at Git - deb/packages.git/blobdiff - bin/parse-packages
In packages_all_$suite, store only description Id, not full description, nor
[deb/packages.git] / bin / parse-packages
index 6caf5cfa42d5f7a5a60f722c3fdda917c2b18407..40c4356eed0e140360366b4cb0eb29c360a0b0cd 100755 (executable)
@@ -21,7 +21,7 @@
 
 use strict;
 
-my $what = $1 ? "non-free" : "*";
+my $what = $ARGV[0] ? "non-free" : "*";
 # max. distinct results for a given package postfix
 my $MAX_PACKAGE_POSTFIXES = 100;
 
@@ -53,29 +53,22 @@ for my $suite (@suites) {
                my %data = ();
                chomp;
                s/\n /\377/g;
-               #s/\376\377\s*\376\377/\376\377/og;
                while (/^(\S+):\s*(.*)\s*$/mg) {
                        my ($key, $value) = ($1, $2);
                        $value =~ s/\377/\n /g;
-                       $data .= "$key: $value\n";
                        $key =~ tr [A-Z] [a-z];
                        $data{$key} = $value;
                }
                # Skip double package
                next if exists($packages_all_db{"$data{'package'} $data{'architecture'} $data{'version'}"});
-               $packages_all_db{"$data{'package'} $data{'architecture'} $data{'version'}"}
-                       = $data;
 
                $package_names{$data{'package'}} = 1;
                my $src = $data{'package'};
-               my $srcversion = $data{'version'};
                if ($data{'source'}) {
                        $src = $data{'source'};
-                       if ($src =~ /(\S+) \((\S+)\)/) {
-                               $src = $1;
-                               $srcversion = $2;
-                       }
+                       $src =~ s/ .*//; # strip version info
                }
+               $data{'source'} = $src;
                my $descr = $data{'description'};
                my $did = undef;
                if (exists($descriptions{$descr})) {
@@ -85,16 +78,31 @@ for my $suite (@suites) {
                        $descriptions[$did] = $descr;
                        $descriptions{$descr} = $did;
                }
+               $data{'description'} = $did;
                $packages_descriptions{"$data{'package'} $data{'version'} $data{'architecture'}"} = $did;
                $descriptions_packages{$did} .=
                        "$data{'package'} $data{'version'} $data{'architecture'}\000";
 
                my $sdescr = $descr;
                $sdescr =~ s/\n.*//s;
+               my $section = 'main';
+               my $subsection = $data{section};
+               if ($data{section} && ($data{section} =~ m=/=o)) {
+                   ($section, $subsection) = split m=/=o, $data{section}, 2;
+               }
+               $data{'section'} = $section;
+               $data{'subsection'} = $subsection;
                $packages_small{$data{'package'}} .= "$suite $data{'architecture'} ".
-                       "$data{'section'} $data{'priority'} $data{'version'} $sdescr\000";
+                       "$section $subsection $data{'priority'} $data{'version'} $sdescr\000";
                $sources_packages{$src} .=
-                       "$data{'package'} $data{'architecture'} $data{'version'}\000";
+                       "$suite $data{'package'} $data{'version'} $data{'architecture'}\000";
+               while (my ($key, $value) = each (%data)) {
+                       next if $key eq 'package' or $key eq 'version' or $key eq 'architecture'
+                               or $key eq 'maintainer';
+                       $data .= "$key: $value\n";
+               }
+               $packages_all_db{"$data{'package'} $data{'architecture'} $data{'version'}"}
+                       = $data;
        }
 
        untie %packages_all_db;