]> git.deb.at Git - deb/packages.git/blobdiff - bin/parse-packages
Support multiple archives
[deb/packages.git] / bin / parse-packages
index f252a2992f717be433d68c50c9c5fb78e63b1df0..ac5bd2c882ee29a61a1c75bdb926e6b9f6707445 100755 (executable)
@@ -78,6 +78,7 @@ for my $suite (@SUITES) {
                if ($data{'provides'}) {
                    foreach (split /\s*,\s*/, $data{'provides'}) {
                        $virtual_packages{$_}{$suite}{$data{'package'}}++;
+                       $packages_small{$_} ||= {};
                    }
                }
                $package_names{$data{'package'}} = 1;
@@ -115,19 +116,19 @@ for my $suite (@SUITES) {
                $data{'section'} = $section;
                $data{'subsection'} = $subsection;
                $data{'priority'} ||= '-';
-               $sections{$suite}{$archive}{$section}++;
-               $subsections{$suite}{$archive}{$subsection}++;
-               $priorities{$suite}{$archive}{$data{priority}}++;
+               $sections{$suite}{$section}++;
+               $subsections{$suite}{$subsection}++;
+               $priorities{$suite}{$data{priority}}++;
                my $pkgitem = "$archive $suite $data{'architecture'} ".
                        "$section $subsection $data{'priority'} $data{'version'} $sdescr\0";
-               my $previtem = $packages_small{$data{'package'}}{$suite}{$data{'architecture'}}
-                   || $pkgitem;
+               my $previtem = ($packages_small{$data{'package'}}{$suite}{$data{'architecture'}}
+                   ||= $pkgitem);
                $packages_small{$data{'package'}}{$suite}{$data{'architecture'}} = $pkgitem
-                   if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) >= 0;
-               $previtem = $packages_small{$data{'package'}}{$suite}{'any'}
-                   || $pkgitem;
+                   if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) > 0;
+               $previtem = ($packages_small{$data{'package'}}{$suite}{'any'}
+                   ||= $pkgitem);
                $packages_small{$data{'package'}}{$suite}{'any'} = $pkgitem
-                   if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) >= 0;
+                   if version_cmp($data{'version'}, (split /\s/o, $previtem)[6]) > 0;
                $sources_packages{$src} .=
                        "$archive $suite $data{'package'} $data{'version'} $data{'architecture'}\000";
                $data{archive} = $archive;
@@ -143,7 +144,7 @@ for my $suite (@SUITES) {
        }
     }
 
-    open NAMES, '>>', "$DBDIR/package_names_$suite.txt.new"
+    open NAMES, '>', "$DBDIR/package_names_$suite.txt.new"
        or die "Error creating package names list: $!";
     foreach (sort keys %package_names_suite) {
        print NAMES "$_\n";